diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2005-11-05 15:37:24 -0500 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-11-05 15:37:24 -0500 |
| commit | d40d9d29c020f8466c96f8e3ad4b7c014ff1085d (patch) | |
| tree | cb30b4e80f37e0d734a826aa6b29394f46123f9f /arch | |
| parent | 96a71d52bb91d9b386a60f904956420f98946dd3 (diff) | |
| parent | 70d9d825e0a5a78ec1dacaaaf5c72ff5b0206fab (diff) | |
Merge branch 'master'
Diffstat (limited to 'arch')
243 files changed, 10488 insertions, 3249 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 682367bd0f65..296bc03d1cf1 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -194,6 +194,13 @@ config ARCH_VERSATILE | |||
| 194 | help | 194 | help |
| 195 | This enables support for ARM Ltd Versatile board. | 195 | This enables support for ARM Ltd Versatile board. |
| 196 | 196 | ||
| 197 | config ARCH_REALVIEW | ||
| 198 | bool "RealView" | ||
| 199 | select ARM_AMBA | ||
| 200 | select ICST307 | ||
| 201 | help | ||
| 202 | This enables support for ARM Ltd RealView boards. | ||
| 203 | |||
| 197 | config ARCH_IMX | 204 | config ARCH_IMX |
| 198 | bool "IMX" | 205 | bool "IMX" |
| 199 | 206 | ||
| @@ -244,6 +251,8 @@ source "arch/arm/mach-versatile/Kconfig" | |||
| 244 | 251 | ||
| 245 | source "arch/arm/mach-aaec2000/Kconfig" | 252 | source "arch/arm/mach-aaec2000/Kconfig" |
| 246 | 253 | ||
| 254 | source "arch/arm/mach-realview/Kconfig" | ||
| 255 | |||
| 247 | # Definitions to make life easier | 256 | # Definitions to make life easier |
| 248 | config ARCH_ACORN | 257 | config ARCH_ACORN |
| 249 | bool | 258 | bool |
| @@ -340,6 +349,13 @@ config NR_CPUS | |||
| 340 | depends on SMP | 349 | depends on SMP |
| 341 | default "4" | 350 | default "4" |
| 342 | 351 | ||
| 352 | config HOTPLUG_CPU | ||
| 353 | bool "Support for hot-pluggable CPUs (EXPERIMENTAL)" | ||
| 354 | depends on SMP && HOTPLUG && EXPERIMENTAL | ||
| 355 | help | ||
| 356 | Say Y here to experiment with turning CPUs off and on. CPUs | ||
| 357 | can be controlled through /sys/devices/system/cpu. | ||
| 358 | |||
| 343 | config PREEMPT | 359 | config PREEMPT |
| 344 | bool "Preemptible Kernel (EXPERIMENTAL)" | 360 | bool "Preemptible Kernel (EXPERIMENTAL)" |
| 345 | depends on EXPERIMENTAL | 361 | depends on EXPERIMENTAL |
| @@ -688,8 +704,7 @@ source "drivers/acorn/block/Kconfig" | |||
| 688 | 704 | ||
| 689 | if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \ | 705 | if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \ |
| 690 | || ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \ | 706 | || ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \ |
| 691 | || ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE \ | 707 | || ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE |
| 692 | || MACH_MP1000 | ||
| 693 | source "drivers/ide/Kconfig" | 708 | source "drivers/ide/Kconfig" |
| 694 | endif | 709 | endif |
| 695 | 710 | ||
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 64cf480b0b02..114cda7f1b73 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
| @@ -38,6 +38,7 @@ comma = , | |||
| 38 | # macro, but instead defines a whole series of macros which makes | 38 | # macro, but instead defines a whole series of macros which makes |
| 39 | # testing for a specific architecture or later rather impossible. | 39 | # testing for a specific architecture or later rather impossible. |
| 40 | arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6) | 40 | arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6) |
| 41 | arch-$(CONFIG_CPU_32v6K) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-march=armv5t -Wa$(comma)-march=armv6k) | ||
| 41 | arch-$(CONFIG_CPU_32v5) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4) | 42 | arch-$(CONFIG_CPU_32v5) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4) |
| 42 | arch-$(CONFIG_CPU_32v4) :=-D__LINUX_ARM_ARCH__=4 -march=armv4 | 43 | arch-$(CONFIG_CPU_32v4) :=-D__LINUX_ARM_ARCH__=4 -march=armv4 |
| 43 | arch-$(CONFIG_CPU_32v3) :=-D__LINUX_ARM_ARCH__=3 -march=armv3 | 44 | arch-$(CONFIG_CPU_32v3) :=-D__LINUX_ARM_ARCH__=3 -march=armv3 |
| @@ -99,6 +100,7 @@ textaddr-$(CONFIG_ARCH_FORTUNET) := 0xc0008000 | |||
| 99 | machine-$(CONFIG_ARCH_IMX) := imx | 100 | machine-$(CONFIG_ARCH_IMX) := imx |
| 100 | machine-$(CONFIG_ARCH_H720X) := h720x | 101 | machine-$(CONFIG_ARCH_H720X) := h720x |
| 101 | machine-$(CONFIG_ARCH_AAEC2000) := aaec2000 | 102 | machine-$(CONFIG_ARCH_AAEC2000) := aaec2000 |
| 103 | machine-$(CONFIG_ARCH_REALVIEW) := realview | ||
| 102 | 104 | ||
| 103 | ifeq ($(CONFIG_ARCH_EBSA110),y) | 105 | ifeq ($(CONFIG_ARCH_EBSA110),y) |
| 104 | # This is what happens if you forget the IOCS16 line. | 106 | # This is what happens if you forget the IOCS16 line. |
| @@ -142,7 +144,7 @@ drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/ | |||
| 142 | drivers-$(CONFIG_ARCH_CLPS7500) += drivers/acorn/char/ | 144 | drivers-$(CONFIG_ARCH_CLPS7500) += drivers/acorn/char/ |
| 143 | drivers-$(CONFIG_ARCH_L7200) += drivers/acorn/char/ | 145 | drivers-$(CONFIG_ARCH_L7200) += drivers/acorn/char/ |
| 144 | 146 | ||
| 145 | libs-y += arch/arm/lib/ | 147 | libs-y := arch/arm/lib/ $(libs-y) |
| 146 | 148 | ||
| 147 | # Default target when executing plain make | 149 | # Default target when executing plain make |
| 148 | ifeq ($(CONFIG_XIP_KERNEL),y) | 150 | ifeq ($(CONFIG_XIP_KERNEL),y) |
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index a54d2eb64892..7c7f475e213e 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
| @@ -39,8 +39,7 @@ | |||
| 39 | defined(CONFIG_ARCH_IXP4XX) || \ | 39 | defined(CONFIG_ARCH_IXP4XX) || \ |
| 40 | defined(CONFIG_ARCH_IXP2000) || \ | 40 | defined(CONFIG_ARCH_IXP2000) || \ |
| 41 | defined(CONFIG_ARCH_LH7A40X) || \ | 41 | defined(CONFIG_ARCH_LH7A40X) || \ |
| 42 | defined(CONFIG_ARCH_OMAP) || \ | 42 | defined(CONFIG_ARCH_OMAP) |
| 43 | defined(CONFIG_MACH_MP1000) | ||
| 44 | .macro loadsp, rb | 43 | .macro loadsp, rb |
| 45 | addruart \rb | 44 | addruart \rb |
| 46 | .endm | 45 | .endm |
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c index 5cdb4122f057..ad55680726ed 100644 --- a/arch/arm/common/locomo.c +++ b/arch/arm/common/locomo.c | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
| 23 | #include <linux/errno.h> | 23 | #include <linux/errno.h> |
| 24 | #include <linux/ioport.h> | 24 | #include <linux/ioport.h> |
| 25 | #include <linux/device.h> | 25 | #include <linux/platform_device.h> |
| 26 | #include <linux/slab.h> | 26 | #include <linux/slab.h> |
| 27 | #include <linux/spinlock.h> | 27 | #include <linux/spinlock.h> |
| 28 | 28 | ||
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c index 21e2a518ad3a..174aa86ee816 100644 --- a/arch/arm/common/sa1111.c +++ b/arch/arm/common/sa1111.c | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | #include <linux/ptrace.h> | 22 | #include <linux/ptrace.h> |
| 23 | #include <linux/errno.h> | 23 | #include <linux/errno.h> |
| 24 | #include <linux/ioport.h> | 24 | #include <linux/ioport.h> |
| 25 | #include <linux/device.h> | 25 | #include <linux/platform_device.h> |
| 26 | #include <linux/slab.h> | 26 | #include <linux/slab.h> |
| 27 | #include <linux/spinlock.h> | 27 | #include <linux/spinlock.h> |
| 28 | #include <linux/dma-mapping.h> | 28 | #include <linux/dma-mapping.h> |
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c index 4af0cf5f3bfb..bb4eff614413 100644 --- a/arch/arm/common/scoop.c +++ b/arch/arm/common/scoop.c | |||
| @@ -13,8 +13,7 @@ | |||
| 13 | 13 | ||
| 14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
| 15 | #include <linux/string.h> | 15 | #include <linux/string.h> |
| 16 | #include <linux/slab.h> | 16 | #include <linux/platform_device.h> |
| 17 | |||
| 18 | #include <asm/io.h> | 17 | #include <asm/io.h> |
| 19 | #include <asm/hardware/scoop.h> | 18 | #include <asm/hardware/scoop.h> |
| 20 | 19 | ||
diff --git a/arch/arm/configs/ixdp2401_defconfig b/arch/arm/configs/ixdp2401_defconfig index 38c9a721d5c9..32bd552e0986 100644 --- a/arch/arm/configs/ixdp2401_defconfig +++ b/arch/arm/configs/ixdp2401_defconfig | |||
| @@ -152,7 +152,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
| 152 | # | 152 | # |
| 153 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 153 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
| 154 | CONFIG_ZBOOT_ROM_BSS=0x0 | 154 | CONFIG_ZBOOT_ROM_BSS=0x0 |
| 155 | CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firmware" | 155 | CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firmware" |
| 156 | # CONFIG_XIP_KERNEL is not set | 156 | # CONFIG_XIP_KERNEL is not set |
| 157 | 157 | ||
| 158 | # | 158 | # |
| @@ -560,7 +560,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | |||
| 560 | # | 560 | # |
| 561 | CONFIG_SERIAL_8250=y | 561 | CONFIG_SERIAL_8250=y |
| 562 | CONFIG_SERIAL_8250_CONSOLE=y | 562 | CONFIG_SERIAL_8250_CONSOLE=y |
| 563 | CONFIG_SERIAL_8250_NR_UARTS=2 | 563 | CONFIG_SERIAL_8250_NR_UARTS=3 |
| 564 | # CONFIG_SERIAL_8250_EXTENDED is not set | 564 | # CONFIG_SERIAL_8250_EXTENDED is not set |
| 565 | 565 | ||
| 566 | # | 566 | # |
diff --git a/arch/arm/configs/ixdp2801_defconfig b/arch/arm/configs/ixdp2801_defconfig index 12ef23d1c016..66ac0885df3e 100644 --- a/arch/arm/configs/ixdp2801_defconfig +++ b/arch/arm/configs/ixdp2801_defconfig | |||
| @@ -560,7 +560,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | |||
| 560 | # | 560 | # |
| 561 | CONFIG_SERIAL_8250=y | 561 | CONFIG_SERIAL_8250=y |
| 562 | CONFIG_SERIAL_8250_CONSOLE=y | 562 | CONFIG_SERIAL_8250_CONSOLE=y |
| 563 | CONFIG_SERIAL_8250_NR_UARTS=2 | 563 | CONFIG_SERIAL_8250_NR_UARTS=3 |
| 564 | # CONFIG_SERIAL_8250_EXTENDED is not set | 564 | # CONFIG_SERIAL_8250_EXTENDED is not set |
| 565 | 565 | ||
| 566 | # | 566 | # |
diff --git a/arch/arm/configs/ixp4xx_defconfig b/arch/arm/configs/ixp4xx_defconfig index c279e41ed10e..f74c926beb42 100644 --- a/arch/arm/configs/ixp4xx_defconfig +++ b/arch/arm/configs/ixp4xx_defconfig | |||
| @@ -104,7 +104,7 @@ CONFIG_ARCH_IXCDP1100=y | |||
| 104 | CONFIG_ARCH_PRPMC1100=y | 104 | CONFIG_ARCH_PRPMC1100=y |
| 105 | CONFIG_ARCH_IXDP4XX=y | 105 | CONFIG_ARCH_IXDP4XX=y |
| 106 | CONFIG_CPU_IXP46X=y | 106 | CONFIG_CPU_IXP46X=y |
| 107 | CONFIG_MACH_GTWX5715=y | 107 | # CONFIG_MACH_GTWX5715 is not set |
| 108 | 108 | ||
| 109 | # | 109 | # |
| 110 | # IXP4xx Options | 110 | # IXP4xx Options |
diff --git a/arch/arm/configs/mp1000_defconfig b/arch/arm/configs/realview_defconfig index d2cbc6fada1d..0485b2f1cc20 100644 --- a/arch/arm/configs/mp1000_defconfig +++ b/arch/arm/configs/realview_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.14-rc1 | 3 | # Linux kernel version: 2.6.14-rc2 |
| 4 | # Fri Sep 16 15:48:13 2005 | 4 | # Thu Sep 29 14:50:10 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| @@ -12,11 +12,9 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y | |||
| 12 | # | 12 | # |
| 13 | # Code maturity level options | 13 | # Code maturity level options |
| 14 | # | 14 | # |
| 15 | CONFIG_EXPERIMENTAL=y | 15 | # CONFIG_EXPERIMENTAL is not set |
| 16 | # CONFIG_CLEAN_COMPILE is not set | 16 | CONFIG_CLEAN_COMPILE=y |
| 17 | CONFIG_BROKEN=y | ||
| 18 | CONFIG_BROKEN_ON_SMP=y | 17 | CONFIG_BROKEN_ON_SMP=y |
| 19 | CONFIG_LOCK_KERNEL=y | ||
| 20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 18 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
| 21 | 19 | ||
| 22 | # | 20 | # |
| @@ -24,18 +22,16 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
| 24 | # | 22 | # |
| 25 | CONFIG_LOCALVERSION="" | 23 | CONFIG_LOCALVERSION="" |
| 26 | CONFIG_LOCALVERSION_AUTO=y | 24 | CONFIG_LOCALVERSION_AUTO=y |
| 27 | CONFIG_SWAP=y | 25 | # CONFIG_SWAP is not set |
| 28 | CONFIG_SYSVIPC=y | 26 | CONFIG_SYSVIPC=y |
| 29 | # CONFIG_POSIX_MQUEUE is not set | ||
| 30 | # CONFIG_BSD_PROCESS_ACCT is not set | 27 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 31 | CONFIG_SYSCTL=y | 28 | CONFIG_SYSCTL=y |
| 32 | # CONFIG_AUDIT is not set | 29 | # CONFIG_AUDIT is not set |
| 33 | # CONFIG_HOTPLUG is not set | 30 | CONFIG_HOTPLUG=y |
| 34 | CONFIG_KOBJECT_UEVENT=y | 31 | CONFIG_KOBJECT_UEVENT=y |
| 35 | CONFIG_IKCONFIG=y | 32 | # CONFIG_IKCONFIG is not set |
| 36 | CONFIG_IKCONFIG_PROC=y | ||
| 37 | CONFIG_INITRAMFS_SOURCE="" | 33 | CONFIG_INITRAMFS_SOURCE="" |
| 38 | CONFIG_EMBEDDED=y | 34 | # CONFIG_EMBEDDED is not set |
| 39 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 40 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| 41 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| @@ -58,17 +54,15 @@ CONFIG_BASE_SMALL=0 | |||
| 58 | # | 54 | # |
| 59 | CONFIG_MODULES=y | 55 | CONFIG_MODULES=y |
| 60 | CONFIG_MODULE_UNLOAD=y | 56 | CONFIG_MODULE_UNLOAD=y |
| 61 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
| 62 | CONFIG_OBSOLETE_MODPARM=y | 57 | CONFIG_OBSOLETE_MODPARM=y |
| 63 | # CONFIG_MODVERSIONS is not set | ||
| 64 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 58 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
| 65 | CONFIG_KMOD=y | 59 | # CONFIG_KMOD is not set |
| 66 | 60 | ||
| 67 | # | 61 | # |
| 68 | # System Type | 62 | # System Type |
| 69 | # | 63 | # |
| 70 | # CONFIG_ARCH_CLPS7500 is not set | 64 | # CONFIG_ARCH_CLPS7500 is not set |
| 71 | CONFIG_ARCH_CLPS711X=y | 65 | # CONFIG_ARCH_CLPS711X is not set |
| 72 | # CONFIG_ARCH_CO285 is not set | 66 | # CONFIG_ARCH_CO285 is not set |
| 73 | # CONFIG_ARCH_EBSA110 is not set | 67 | # CONFIG_ARCH_EBSA110 is not set |
| 74 | # CONFIG_ARCH_CAMELOT is not set | 68 | # CONFIG_ARCH_CAMELOT is not set |
| @@ -86,43 +80,43 @@ CONFIG_ARCH_CLPS711X=y | |||
| 86 | # CONFIG_ARCH_LH7A40X is not set | 80 | # CONFIG_ARCH_LH7A40X is not set |
| 87 | # CONFIG_ARCH_OMAP is not set | 81 | # CONFIG_ARCH_OMAP is not set |
| 88 | # CONFIG_ARCH_VERSATILE is not set | 82 | # CONFIG_ARCH_VERSATILE is not set |
| 83 | CONFIG_ARCH_REALVIEW=y | ||
| 89 | # CONFIG_ARCH_IMX is not set | 84 | # CONFIG_ARCH_IMX is not set |
| 90 | # CONFIG_ARCH_H720X is not set | 85 | # CONFIG_ARCH_H720X is not set |
| 91 | # CONFIG_ARCH_AAEC2000 is not set | 86 | # CONFIG_ARCH_AAEC2000 is not set |
| 92 | 87 | ||
| 93 | # | 88 | # |
| 94 | # CLPS711X/EP721X Implementations | 89 | # RealView platform type |
| 95 | # | 90 | # |
| 96 | # CONFIG_ARCH_AUTCPU12 is not set | 91 | CONFIG_MACH_REALVIEW_EB=y |
| 97 | # CONFIG_ARCH_CDB89712 is not set | ||
| 98 | # CONFIG_ARCH_CEIVA is not set | ||
| 99 | # CONFIG_ARCH_CLEP7312 is not set | ||
| 100 | # CONFIG_ARCH_EDB7211 is not set | ||
| 101 | # CONFIG_ARCH_P720T is not set | ||
| 102 | # CONFIG_ARCH_FORTUNET is not set | ||
| 103 | CONFIG_MACH_MP1000=y | ||
| 104 | CONFIG_MP1000_90MHZ=y | ||
| 105 | 92 | ||
| 106 | # | 93 | # |
| 107 | # Processor Type | 94 | # Processor Type |
| 108 | # | 95 | # |
| 109 | CONFIG_CPU_32=y | 96 | CONFIG_CPU_32=y |
| 110 | CONFIG_CPU_ARM720T=y | 97 | CONFIG_CPU_ARM926T=y |
| 111 | CONFIG_CPU_32v4=y | 98 | # CONFIG_CPU_V6 is not set |
| 112 | CONFIG_CPU_ABRT_LV4T=y | 99 | CONFIG_CPU_32v5=y |
| 113 | CONFIG_CPU_CACHE_V4=y | 100 | CONFIG_CPU_ABRT_EV5TJ=y |
| 114 | CONFIG_CPU_CACHE_VIVT=y | 101 | CONFIG_CPU_CACHE_VIVT=y |
| 115 | CONFIG_CPU_COPY_V4WT=y | 102 | CONFIG_CPU_COPY_V4WB=y |
| 116 | CONFIG_CPU_TLB_V4WT=y | 103 | CONFIG_CPU_TLB_V4WBI=y |
| 117 | 104 | ||
| 118 | # | 105 | # |
| 119 | # Processor Features | 106 | # Processor Features |
| 120 | # | 107 | # |
| 121 | CONFIG_ARM_THUMB=y | 108 | CONFIG_ARM_THUMB=y |
| 109 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
| 110 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
| 111 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | ||
| 112 | # CONFIG_CPU_CACHE_ROUND_ROBIN is not set | ||
| 113 | CONFIG_ARM_GIC=y | ||
| 114 | CONFIG_ICST307=y | ||
| 122 | 115 | ||
| 123 | # | 116 | # |
| 124 | # Bus support | 117 | # Bus support |
| 125 | # | 118 | # |
| 119 | CONFIG_ARM_AMBA=y | ||
| 126 | CONFIG_ISA_DMA_API=y | 120 | CONFIG_ISA_DMA_API=y |
| 127 | 121 | ||
| 128 | # | 122 | # |
| @@ -133,14 +127,8 @@ CONFIG_ISA_DMA_API=y | |||
| 133 | # | 127 | # |
| 134 | # Kernel Features | 128 | # Kernel Features |
| 135 | # | 129 | # |
| 136 | # CONFIG_SMP is not set | ||
| 137 | CONFIG_PREEMPT=y | ||
| 138 | # CONFIG_NO_IDLE_HZ is not set | 130 | # CONFIG_NO_IDLE_HZ is not set |
| 139 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | 131 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set |
| 140 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 141 | CONFIG_FLATMEM_MANUAL=y | ||
| 142 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 143 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 144 | CONFIG_FLATMEM=y | 132 | CONFIG_FLATMEM=y |
| 145 | CONFIG_FLAT_NODE_MEM_MAP=y | 133 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 146 | # CONFIG_SPARSEMEM_STATIC is not set | 134 | # CONFIG_SPARSEMEM_STATIC is not set |
| @@ -151,7 +139,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
| 151 | # | 139 | # |
| 152 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 140 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
| 153 | CONFIG_ZBOOT_ROM_BSS=0x0 | 141 | CONFIG_ZBOOT_ROM_BSS=0x0 |
| 154 | CONFIG_CMDLINE="console=ttyCL,38400 root=/dev/discs/disc0/part1 ip=any cs89x0_media=rj45" | 142 | CONFIG_CMDLINE="root=/dev/nfs nfsroot=10.1.69.3:/work/nfsroot ip=dhcp console=ttyAMA0 mem=128M" |
| 155 | # CONFIG_XIP_KERNEL is not set | 143 | # CONFIG_XIP_KERNEL is not set |
| 156 | 144 | ||
| 157 | # | 145 | # |
| @@ -163,14 +151,14 @@ CONFIG_CMDLINE="console=ttyCL,38400 root=/dev/discs/disc0/part1 ip=any cs89x0_me | |||
| 163 | # | 151 | # |
| 164 | CONFIG_FPE_NWFPE=y | 152 | CONFIG_FPE_NWFPE=y |
| 165 | # CONFIG_FPE_NWFPE_XP is not set | 153 | # CONFIG_FPE_NWFPE_XP is not set |
| 166 | # CONFIG_FPE_FASTFPE is not set | 154 | # CONFIG_VFP is not set |
| 167 | 155 | ||
| 168 | # | 156 | # |
| 169 | # Userspace binary formats | 157 | # Userspace binary formats |
| 170 | # | 158 | # |
| 171 | CONFIG_BINFMT_ELF=y | 159 | CONFIG_BINFMT_ELF=y |
| 172 | # CONFIG_BINFMT_AOUT is not set | 160 | # CONFIG_BINFMT_AOUT is not set |
| 173 | CONFIG_BINFMT_MISC=y | 161 | # CONFIG_BINFMT_MISC is not set |
| 174 | # CONFIG_ARTHUR is not set | 162 | # CONFIG_ARTHUR is not set |
| 175 | 163 | ||
| 176 | # | 164 | # |
| @@ -197,10 +185,9 @@ CONFIG_IP_FIB_HASH=y | |||
| 197 | CONFIG_IP_PNP=y | 185 | CONFIG_IP_PNP=y |
| 198 | CONFIG_IP_PNP_DHCP=y | 186 | CONFIG_IP_PNP_DHCP=y |
| 199 | CONFIG_IP_PNP_BOOTP=y | 187 | CONFIG_IP_PNP_BOOTP=y |
| 200 | CONFIG_IP_PNP_RARP=y | 188 | # CONFIG_IP_PNP_RARP is not set |
| 201 | # CONFIG_NET_IPIP is not set | 189 | # CONFIG_NET_IPIP is not set |
| 202 | # CONFIG_NET_IPGRE is not set | 190 | # CONFIG_NET_IPGRE is not set |
| 203 | # CONFIG_ARPD is not set | ||
| 204 | # CONFIG_SYN_COOKIES is not set | 191 | # CONFIG_SYN_COOKIES is not set |
| 205 | # CONFIG_INET_AH is not set | 192 | # CONFIG_INET_AH is not set |
| 206 | # CONFIG_INET_ESP is not set | 193 | # CONFIG_INET_ESP is not set |
| @@ -210,36 +197,14 @@ CONFIG_INET_DIAG=y | |||
| 210 | CONFIG_INET_TCP_DIAG=y | 197 | CONFIG_INET_TCP_DIAG=y |
| 211 | # CONFIG_TCP_CONG_ADVANCED is not set | 198 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 212 | CONFIG_TCP_CONG_BIC=y | 199 | CONFIG_TCP_CONG_BIC=y |
| 213 | CONFIG_IPV6=y | 200 | # CONFIG_IPV6 is not set |
| 214 | # CONFIG_IPV6_PRIVACY is not set | ||
| 215 | # CONFIG_INET6_AH is not set | ||
| 216 | # CONFIG_INET6_ESP is not set | ||
| 217 | # CONFIG_INET6_IPCOMP is not set | ||
| 218 | # CONFIG_INET6_TUNNEL is not set | ||
| 219 | # CONFIG_IPV6_TUNNEL is not set | ||
| 220 | # CONFIG_NETFILTER is not set | 201 | # CONFIG_NETFILTER is not set |
| 221 | |||
| 222 | # | ||
| 223 | # DCCP Configuration (EXPERIMENTAL) | ||
| 224 | # | ||
| 225 | # CONFIG_IP_DCCP is not set | ||
| 226 | |||
| 227 | # | ||
| 228 | # SCTP Configuration (EXPERIMENTAL) | ||
| 229 | # | ||
| 230 | # CONFIG_IP_SCTP is not set | ||
| 231 | # CONFIG_ATM is not set | ||
| 232 | # CONFIG_BRIDGE is not set | 202 | # CONFIG_BRIDGE is not set |
| 233 | # CONFIG_VLAN_8021Q is not set | 203 | # CONFIG_VLAN_8021Q is not set |
| 234 | # CONFIG_DECNET is not set | 204 | # CONFIG_DECNET is not set |
| 235 | # CONFIG_LLC2 is not set | 205 | # CONFIG_LLC2 is not set |
| 236 | # CONFIG_IPX is not set | 206 | # CONFIG_IPX is not set |
| 237 | # CONFIG_ATALK is not set | 207 | # CONFIG_ATALK is not set |
| 238 | # CONFIG_X25 is not set | ||
| 239 | # CONFIG_LAPB is not set | ||
| 240 | # CONFIG_NET_DIVERT is not set | ||
| 241 | # CONFIG_ECONET is not set | ||
| 242 | # CONFIG_WAN_ROUTER is not set | ||
| 243 | # CONFIG_NET_SCHED is not set | 208 | # CONFIG_NET_SCHED is not set |
| 244 | # CONFIG_NET_CLS_ROUTE is not set | 209 | # CONFIG_NET_CLS_ROUTE is not set |
| 245 | 210 | ||
| @@ -247,7 +212,6 @@ CONFIG_IPV6=y | |||
| 247 | # Network testing | 212 | # Network testing |
| 248 | # | 213 | # |
| 249 | # CONFIG_NET_PKTGEN is not set | 214 | # CONFIG_NET_PKTGEN is not set |
| 250 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 251 | # CONFIG_HAMRADIO is not set | 215 | # CONFIG_HAMRADIO is not set |
| 252 | # CONFIG_IRDA is not set | 216 | # CONFIG_IRDA is not set |
| 253 | # CONFIG_BT is not set | 217 | # CONFIG_BT is not set |
| @@ -269,14 +233,10 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
| 269 | # Memory Technology Devices (MTD) | 233 | # Memory Technology Devices (MTD) |
| 270 | # | 234 | # |
| 271 | CONFIG_MTD=y | 235 | CONFIG_MTD=y |
| 272 | CONFIG_MTD_DEBUG=y | 236 | # CONFIG_MTD_DEBUG is not set |
| 273 | CONFIG_MTD_DEBUG_VERBOSE=3 | ||
| 274 | # CONFIG_MTD_CONCAT is not set | 237 | # CONFIG_MTD_CONCAT is not set |
| 275 | CONFIG_MTD_PARTITIONS=y | 238 | CONFIG_MTD_PARTITIONS=y |
| 276 | CONFIG_MTD_REDBOOT_PARTS=m | 239 | # CONFIG_MTD_REDBOOT_PARTS is not set |
| 277 | CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-2 | ||
| 278 | CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y | ||
| 279 | # CONFIG_MTD_REDBOOT_PARTS_READONLY is not set | ||
| 280 | CONFIG_MTD_CMDLINE_PARTS=y | 240 | CONFIG_MTD_CMDLINE_PARTS=y |
| 281 | # CONFIG_MTD_AFS_PARTS is not set | 241 | # CONFIG_MTD_AFS_PARTS is not set |
| 282 | 242 | ||
| @@ -292,45 +252,36 @@ CONFIG_MTD_BLOCK=y | |||
| 292 | # | 252 | # |
| 293 | # RAM/ROM/Flash chip drivers | 253 | # RAM/ROM/Flash chip drivers |
| 294 | # | 254 | # |
| 295 | CONFIG_MTD_CFI=m | 255 | CONFIG_MTD_CFI=y |
| 296 | # CONFIG_MTD_JEDECPROBE is not set | 256 | # CONFIG_MTD_JEDECPROBE is not set |
| 297 | CONFIG_MTD_GEN_PROBE=m | 257 | CONFIG_MTD_GEN_PROBE=y |
| 298 | CONFIG_MTD_CFI_ADV_OPTIONS=y | 258 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set |
| 299 | CONFIG_MTD_CFI_NOSWAP=y | 259 | CONFIG_MTD_MAP_BANK_WIDTH_1=y |
| 300 | # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | 260 | CONFIG_MTD_MAP_BANK_WIDTH_2=y |
| 301 | # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set | ||
| 302 | CONFIG_MTD_CFI_GEOMETRY=y | ||
| 303 | # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set | ||
| 304 | # CONFIG_MTD_MAP_BANK_WIDTH_2 is not set | ||
| 305 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | 261 | CONFIG_MTD_MAP_BANK_WIDTH_4=y |
| 306 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | 262 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set |
| 307 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | 263 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set |
| 308 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | 264 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set |
| 309 | # CONFIG_MTD_CFI_I1 is not set | 265 | CONFIG_MTD_CFI_I1=y |
| 310 | CONFIG_MTD_CFI_I2=y | 266 | CONFIG_MTD_CFI_I2=y |
| 311 | # CONFIG_MTD_CFI_I4 is not set | 267 | # CONFIG_MTD_CFI_I4 is not set |
| 312 | # CONFIG_MTD_CFI_I8 is not set | 268 | # CONFIG_MTD_CFI_I8 is not set |
| 313 | # CONFIG_MTD_OTP is not set | 269 | CONFIG_MTD_CFI_INTELEXT=y |
| 314 | CONFIG_MTD_CFI_INTELEXT=m | 270 | CONFIG_MTD_CFI_AMDSTD=y |
| 315 | # CONFIG_MTD_CFI_AMDSTD is not set | 271 | CONFIG_MTD_CFI_AMDSTD_RETRY=0 |
| 316 | # CONFIG_MTD_CFI_STAA is not set | 272 | # CONFIG_MTD_CFI_STAA is not set |
| 317 | CONFIG_MTD_CFI_UTIL=m | 273 | CONFIG_MTD_CFI_UTIL=y |
| 318 | # CONFIG_MTD_RAM is not set | 274 | # CONFIG_MTD_RAM is not set |
| 319 | # CONFIG_MTD_ROM is not set | 275 | # CONFIG_MTD_ROM is not set |
| 320 | # CONFIG_MTD_ABSENT is not set | 276 | # CONFIG_MTD_ABSENT is not set |
| 321 | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||
| 322 | # CONFIG_MTD_XIP is not set | ||
| 323 | 277 | ||
| 324 | # | 278 | # |
| 325 | # Mapping drivers for chip access | 279 | # Mapping drivers for chip access |
| 326 | # | 280 | # |
| 327 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | 281 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set |
| 328 | CONFIG_MTD_PHYSMAP=m | 282 | # CONFIG_MTD_PHYSMAP is not set |
| 329 | CONFIG_MTD_PHYSMAP_START=0x0000000 | 283 | CONFIG_MTD_ARM_INTEGRATOR=y |
| 330 | CONFIG_MTD_PHYSMAP_LEN=0x4000000 | 284 | # CONFIG_MTD_EDB7312 is not set |
| 331 | CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | ||
| 332 | # CONFIG_MTD_ARM_INTEGRATOR is not set | ||
| 333 | CONFIG_MTD_EDB7312=m | ||
| 334 | # CONFIG_MTD_PLATRAM is not set | 285 | # CONFIG_MTD_PLATRAM is not set |
| 335 | 286 | ||
| 336 | # | 287 | # |
| @@ -340,7 +291,6 @@ CONFIG_MTD_EDB7312=m | |||
| 340 | # CONFIG_MTD_PHRAM is not set | 291 | # CONFIG_MTD_PHRAM is not set |
| 341 | # CONFIG_MTD_MTDRAM is not set | 292 | # CONFIG_MTD_MTDRAM is not set |
| 342 | # CONFIG_MTD_BLKMTD is not set | 293 | # CONFIG_MTD_BLKMTD is not set |
| 343 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 344 | 294 | ||
| 345 | # | 295 | # |
| 346 | # Disk-On-Chip Device Drivers | 296 | # Disk-On-Chip Device Drivers |
| @@ -352,12 +302,7 @@ CONFIG_MTD_EDB7312=m | |||
| 352 | # | 302 | # |
| 353 | # NAND Flash Device Drivers | 303 | # NAND Flash Device Drivers |
| 354 | # | 304 | # |
| 355 | CONFIG_MTD_NAND=y | 305 | # CONFIG_MTD_NAND is not set |
| 356 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 357 | CONFIG_MTD_NAND_MP1000=y | ||
| 358 | CONFIG_MTD_NAND_IDS=y | ||
| 359 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 360 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
| 361 | 306 | ||
| 362 | # | 307 | # |
| 363 | # Parallel port support | 308 | # Parallel port support |
| @@ -372,53 +317,22 @@ CONFIG_MTD_NAND_IDS=y | |||
| 372 | # Block devices | 317 | # Block devices |
| 373 | # | 318 | # |
| 374 | # CONFIG_BLK_DEV_COW_COMMON is not set | 319 | # CONFIG_BLK_DEV_COW_COMMON is not set |
| 375 | CONFIG_BLK_DEV_LOOP=m | 320 | # CONFIG_BLK_DEV_LOOP is not set |
| 376 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 377 | # CONFIG_BLK_DEV_NBD is not set | 321 | # CONFIG_BLK_DEV_NBD is not set |
| 378 | CONFIG_BLK_DEV_RAM=y | 322 | # CONFIG_BLK_DEV_RAM is not set |
| 379 | CONFIG_BLK_DEV_RAM_COUNT=2 | 323 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 380 | CONFIG_BLK_DEV_RAM_SIZE=16384 | ||
| 381 | CONFIG_BLK_DEV_INITRD=y | ||
| 382 | # CONFIG_CDROM_PKTCDVD is not set | 324 | # CONFIG_CDROM_PKTCDVD is not set |
| 383 | 325 | ||
| 384 | # | 326 | # |
| 385 | # IO Schedulers | 327 | # IO Schedulers |
| 386 | # | 328 | # |
| 387 | CONFIG_IOSCHED_NOOP=y | 329 | CONFIG_IOSCHED_NOOP=y |
| 388 | CONFIG_IOSCHED_AS=y | 330 | # CONFIG_IOSCHED_AS is not set |
| 389 | CONFIG_IOSCHED_DEADLINE=y | 331 | CONFIG_IOSCHED_DEADLINE=y |
| 390 | CONFIG_IOSCHED_CFQ=y | 332 | # CONFIG_IOSCHED_CFQ is not set |
| 391 | # CONFIG_ATA_OVER_ETH is not set | 333 | # CONFIG_ATA_OVER_ETH is not set |
| 392 | 334 | ||
| 393 | # | 335 | # |
| 394 | # ATA/ATAPI/MFM/RLL support | ||
| 395 | # | ||
| 396 | CONFIG_IDE=y | ||
| 397 | CONFIG_BLK_DEV_IDE=y | ||
| 398 | |||
| 399 | # | ||
| 400 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
| 401 | # | ||
| 402 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
| 403 | # CONFIG_BLK_DEV_HD_IDE is not set | ||
| 404 | CONFIG_BLK_DEV_IDEDISK=y | ||
| 405 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
| 406 | # CONFIG_BLK_DEV_IDECD is not set | ||
| 407 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
| 408 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
| 409 | # CONFIG_IDE_TASK_IOCTL is not set | ||
| 410 | |||
| 411 | # | ||
| 412 | # IDE chipset support/bugfixes | ||
| 413 | # | ||
| 414 | # CONFIG_IDE_GENERIC is not set | ||
| 415 | CONFIG_IDE_ARM=y | ||
| 416 | CONFIG_BLK_DEV_IDE_MP1000=y | ||
| 417 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
| 418 | # CONFIG_IDEDMA_AUTO is not set | ||
| 419 | # CONFIG_BLK_DEV_HD is not set | ||
| 420 | |||
| 421 | # | ||
| 422 | # SCSI device support | 336 | # SCSI device support |
| 423 | # | 337 | # |
| 424 | # CONFIG_RAID_ATTRS is not set | 338 | # CONFIG_RAID_ATTRS is not set |
| @@ -427,14 +341,7 @@ CONFIG_BLK_DEV_IDE_MP1000=y | |||
| 427 | # | 341 | # |
| 428 | # Multi-device support (RAID and LVM) | 342 | # Multi-device support (RAID and LVM) |
| 429 | # | 343 | # |
| 430 | CONFIG_MD=y | 344 | # CONFIG_MD is not set |
| 431 | # CONFIG_BLK_DEV_MD is not set | ||
| 432 | CONFIG_BLK_DEV_DM=y | ||
| 433 | # CONFIG_DM_CRYPT is not set | ||
| 434 | # CONFIG_DM_SNAPSHOT is not set | ||
| 435 | # CONFIG_DM_MIRROR is not set | ||
| 436 | # CONFIG_DM_ZERO is not set | ||
| 437 | # CONFIG_DM_MULTIPATH is not set | ||
| 438 | 345 | ||
| 439 | # | 346 | # |
| 440 | # Fusion MPT device support | 347 | # Fusion MPT device support |
| @@ -444,7 +351,6 @@ CONFIG_BLK_DEV_DM=y | |||
| 444 | # | 351 | # |
| 445 | # IEEE 1394 (FireWire) support | 352 | # IEEE 1394 (FireWire) support |
| 446 | # | 353 | # |
| 447 | # CONFIG_IEEE1394 is not set | ||
| 448 | 354 | ||
| 449 | # | 355 | # |
| 450 | # I2O device support | 356 | # I2O device support |
| @@ -468,10 +374,9 @@ CONFIG_NETDEVICES=y | |||
| 468 | # Ethernet (10 or 100Mbit) | 374 | # Ethernet (10 or 100Mbit) |
| 469 | # | 375 | # |
| 470 | CONFIG_NET_ETHERNET=y | 376 | CONFIG_NET_ETHERNET=y |
| 471 | # CONFIG_MII is not set | 377 | CONFIG_MII=y |
| 472 | # CONFIG_SMC91X is not set | 378 | CONFIG_SMC91X=y |
| 473 | # CONFIG_DM9000 is not set | 379 | # CONFIG_DM9000 is not set |
| 474 | CONFIG_CS89x0=y | ||
| 475 | 380 | ||
| 476 | # | 381 | # |
| 477 | # Ethernet (1000 Mbit) | 382 | # Ethernet (1000 Mbit) |
| @@ -496,8 +401,6 @@ CONFIG_CS89x0=y | |||
| 496 | # CONFIG_WAN is not set | 401 | # CONFIG_WAN is not set |
| 497 | # CONFIG_PPP is not set | 402 | # CONFIG_PPP is not set |
| 498 | # CONFIG_SLIP is not set | 403 | # CONFIG_SLIP is not set |
| 499 | # CONFIG_SHAPER is not set | ||
| 500 | # CONFIG_NETCONSOLE is not set | ||
| 501 | # CONFIG_NETPOLL is not set | 404 | # CONFIG_NETPOLL is not set |
| 502 | # CONFIG_NET_POLL_CONTROLLER is not set | 405 | # CONFIG_NET_POLL_CONTROLLER is not set |
| 503 | 406 | ||
| @@ -514,17 +417,28 @@ CONFIG_INPUT=y | |||
| 514 | # | 417 | # |
| 515 | # Userland interfaces | 418 | # Userland interfaces |
| 516 | # | 419 | # |
| 517 | # CONFIG_INPUT_MOUSEDEV is not set | 420 | CONFIG_INPUT_MOUSEDEV=y |
| 421 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
| 422 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 423 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 518 | # CONFIG_INPUT_JOYDEV is not set | 424 | # CONFIG_INPUT_JOYDEV is not set |
| 519 | # CONFIG_INPUT_TSDEV is not set | 425 | # CONFIG_INPUT_TSDEV is not set |
| 520 | # CONFIG_INPUT_EVDEV is not set | 426 | # CONFIG_INPUT_EVDEV is not set |
| 521 | CONFIG_INPUT_EVBUG=y | 427 | # CONFIG_INPUT_EVBUG is not set |
| 522 | 428 | ||
| 523 | # | 429 | # |
| 524 | # Input Device Drivers | 430 | # Input Device Drivers |
| 525 | # | 431 | # |
| 526 | # CONFIG_INPUT_KEYBOARD is not set | 432 | CONFIG_INPUT_KEYBOARD=y |
| 527 | # CONFIG_INPUT_MOUSE is not set | 433 | CONFIG_KEYBOARD_ATKBD=y |
| 434 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
| 435 | # CONFIG_KEYBOARD_LKKBD is not set | ||
| 436 | # CONFIG_KEYBOARD_XTKBD is not set | ||
| 437 | # CONFIG_KEYBOARD_NEWTON is not set | ||
| 438 | CONFIG_INPUT_MOUSE=y | ||
| 439 | CONFIG_MOUSE_PS2=y | ||
| 440 | # CONFIG_MOUSE_SERIAL is not set | ||
| 441 | # CONFIG_MOUSE_VSXXXAA is not set | ||
| 528 | # CONFIG_INPUT_JOYSTICK is not set | 442 | # CONFIG_INPUT_JOYSTICK is not set |
| 529 | # CONFIG_INPUT_TOUCHSCREEN is not set | 443 | # CONFIG_INPUT_TOUCHSCREEN is not set |
| 530 | # CONFIG_INPUT_MISC is not set | 444 | # CONFIG_INPUT_MISC is not set |
| @@ -533,8 +447,9 @@ CONFIG_INPUT_EVBUG=y | |||
| 533 | # Hardware I/O ports | 447 | # Hardware I/O ports |
| 534 | # | 448 | # |
| 535 | CONFIG_SERIO=y | 449 | CONFIG_SERIO=y |
| 536 | CONFIG_SERIO_SERPORT=y | 450 | # CONFIG_SERIO_SERPORT is not set |
| 537 | # CONFIG_SERIO_LIBPS2 is not set | 451 | CONFIG_SERIO_AMBAKMI=y |
| 452 | CONFIG_SERIO_LIBPS2=y | ||
| 538 | # CONFIG_SERIO_RAW is not set | 453 | # CONFIG_SERIO_RAW is not set |
| 539 | # CONFIG_GAMEPORT is not set | 454 | # CONFIG_GAMEPORT is not set |
| 540 | 455 | ||
| @@ -549,21 +464,19 @@ CONFIG_HW_CONSOLE=y | |||
| 549 | # | 464 | # |
| 550 | # Serial drivers | 465 | # Serial drivers |
| 551 | # | 466 | # |
| 552 | CONFIG_SERIAL_8250=y | 467 | # CONFIG_SERIAL_8250 is not set |
| 553 | CONFIG_SERIAL_8250_CONSOLE=y | ||
| 554 | CONFIG_SERIAL_8250_NR_UARTS=2 | ||
| 555 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
| 556 | 468 | ||
| 557 | # | 469 | # |
| 558 | # Non-8250 serial port support | 470 | # Non-8250 serial port support |
| 559 | # | 471 | # |
| 560 | CONFIG_SERIAL_CLPS711X=y | 472 | # CONFIG_SERIAL_AMBA_PL010 is not set |
| 561 | CONFIG_SERIAL_CLPS711X_CONSOLE=y | 473 | CONFIG_SERIAL_AMBA_PL011=y |
| 474 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | ||
| 562 | CONFIG_SERIAL_CORE=y | 475 | CONFIG_SERIAL_CORE=y |
| 563 | CONFIG_SERIAL_CORE_CONSOLE=y | 476 | CONFIG_SERIAL_CORE_CONSOLE=y |
| 564 | CONFIG_UNIX98_PTYS=y | 477 | CONFIG_UNIX98_PTYS=y |
| 565 | CONFIG_LEGACY_PTYS=y | 478 | CONFIG_LEGACY_PTYS=y |
| 566 | CONFIG_LEGACY_PTY_COUNT=256 | 479 | CONFIG_LEGACY_PTY_COUNT=16 |
| 567 | 480 | ||
| 568 | # | 481 | # |
| 569 | # IPMI | 482 | # IPMI |
| @@ -574,8 +487,8 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
| 574 | # Watchdog Cards | 487 | # Watchdog Cards |
| 575 | # | 488 | # |
| 576 | # CONFIG_WATCHDOG is not set | 489 | # CONFIG_WATCHDOG is not set |
| 577 | CONFIG_NVRAM=y | 490 | # CONFIG_NVRAM is not set |
| 578 | CONFIG_RTC=y | 491 | # CONFIG_RTC is not set |
| 579 | # CONFIG_DTLK is not set | 492 | # CONFIG_DTLK is not set |
| 580 | # CONFIG_R3964 is not set | 493 | # CONFIG_R3964 is not set |
| 581 | 494 | ||
| @@ -596,9 +509,8 @@ CONFIG_RTC=y | |||
| 596 | # | 509 | # |
| 597 | # Hardware Monitoring support | 510 | # Hardware Monitoring support |
| 598 | # | 511 | # |
| 599 | CONFIG_HWMON=y | 512 | # CONFIG_HWMON is not set |
| 600 | # CONFIG_HWMON_VID is not set | 513 | # CONFIG_HWMON_VID is not set |
| 601 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
| 602 | 514 | ||
| 603 | # | 515 | # |
| 604 | # Misc devices | 516 | # Misc devices |
| @@ -621,18 +533,72 @@ CONFIG_HWMON=y | |||
| 621 | # | 533 | # |
| 622 | # Graphics support | 534 | # Graphics support |
| 623 | # | 535 | # |
| 624 | # CONFIG_FB is not set | 536 | CONFIG_FB=y |
| 537 | CONFIG_FB_CFB_FILLRECT=y | ||
| 538 | CONFIG_FB_CFB_COPYAREA=y | ||
| 539 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 540 | CONFIG_FB_SOFT_CURSOR=y | ||
| 541 | # CONFIG_FB_MACMODES is not set | ||
| 542 | # CONFIG_FB_MODE_HELPERS is not set | ||
| 543 | # CONFIG_FB_TILEBLITTING is not set | ||
| 544 | CONFIG_FB_ARMCLCD=y | ||
| 545 | # CONFIG_FB_S1D13XXX is not set | ||
| 546 | # CONFIG_FB_VIRTUAL is not set | ||
| 625 | 547 | ||
| 626 | # | 548 | # |
| 627 | # Console display driver support | 549 | # Console display driver support |
| 628 | # | 550 | # |
| 629 | # CONFIG_VGA_CONSOLE is not set | 551 | # CONFIG_VGA_CONSOLE is not set |
| 630 | CONFIG_DUMMY_CONSOLE=y | 552 | CONFIG_DUMMY_CONSOLE=y |
| 553 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 554 | # CONFIG_FONTS is not set | ||
| 555 | CONFIG_FONT_8x8=y | ||
| 556 | CONFIG_FONT_8x16=y | ||
| 557 | |||
| 558 | # | ||
| 559 | # Logo configuration | ||
| 560 | # | ||
| 561 | CONFIG_LOGO=y | ||
| 562 | # CONFIG_LOGO_LINUX_MONO is not set | ||
| 563 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
| 564 | CONFIG_LOGO_LINUX_CLUT224=y | ||
| 565 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 631 | 566 | ||
| 632 | # | 567 | # |
| 633 | # Sound | 568 | # Sound |
| 634 | # | 569 | # |
| 635 | # CONFIG_SOUND is not set | 570 | CONFIG_SOUND=y |
| 571 | |||
| 572 | # | ||
| 573 | # Advanced Linux Sound Architecture | ||
| 574 | # | ||
| 575 | CONFIG_SND=y | ||
| 576 | CONFIG_SND_TIMER=y | ||
| 577 | CONFIG_SND_PCM=y | ||
| 578 | # CONFIG_SND_SEQUENCER is not set | ||
| 579 | CONFIG_SND_OSSEMUL=y | ||
| 580 | CONFIG_SND_MIXER_OSS=y | ||
| 581 | CONFIG_SND_PCM_OSS=y | ||
| 582 | # CONFIG_SND_VERBOSE_PRINTK is not set | ||
| 583 | # CONFIG_SND_DEBUG is not set | ||
| 584 | |||
| 585 | # | ||
| 586 | # Generic devices | ||
| 587 | # | ||
| 588 | # CONFIG_SND_DUMMY is not set | ||
| 589 | # CONFIG_SND_MTPAV is not set | ||
| 590 | # CONFIG_SND_SERIAL_U16550 is not set | ||
| 591 | # CONFIG_SND_MPU401 is not set | ||
| 592 | |||
| 593 | # | ||
| 594 | # ALSA ARM devices | ||
| 595 | # | ||
| 596 | # CONFIG_SND_ARMAACI is not set | ||
| 597 | |||
| 598 | # | ||
| 599 | # Open Sound System | ||
| 600 | # | ||
| 601 | # CONFIG_SOUND_PRIME is not set | ||
| 636 | 602 | ||
| 637 | # | 603 | # |
| 638 | # USB support | 604 | # USB support |
| @@ -654,32 +620,17 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
| 654 | # | 620 | # |
| 655 | # File systems | 621 | # File systems |
| 656 | # | 622 | # |
| 657 | CONFIG_EXT2_FS=y | 623 | # CONFIG_EXT2_FS is not set |
| 658 | CONFIG_EXT2_FS_XATTR=y | 624 | # CONFIG_EXT3_FS is not set |
| 659 | # CONFIG_EXT2_FS_POSIX_ACL is not set | 625 | # CONFIG_JBD is not set |
| 660 | # CONFIG_EXT2_FS_SECURITY is not set | 626 | # CONFIG_REISERFS_FS is not set |
| 661 | # CONFIG_EXT2_FS_XIP is not set | ||
| 662 | CONFIG_EXT3_FS=y | ||
| 663 | CONFIG_EXT3_FS_XATTR=y | ||
| 664 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
| 665 | # CONFIG_EXT3_FS_SECURITY is not set | ||
| 666 | CONFIG_JBD=y | ||
| 667 | # CONFIG_JBD_DEBUG is not set | ||
| 668 | CONFIG_FS_MBCACHE=y | ||
| 669 | CONFIG_REISERFS_FS=m | ||
| 670 | # CONFIG_REISERFS_CHECK is not set | ||
| 671 | # CONFIG_REISERFS_PROC_INFO is not set | ||
| 672 | # CONFIG_REISERFS_FS_XATTR is not set | ||
| 673 | # CONFIG_JFS_FS is not set | 627 | # CONFIG_JFS_FS is not set |
| 674 | CONFIG_FS_POSIX_ACL=y | 628 | # CONFIG_FS_POSIX_ACL is not set |
| 675 | # CONFIG_XFS_FS is not set | 629 | # CONFIG_XFS_FS is not set |
| 676 | # CONFIG_MINIX_FS is not set | 630 | # CONFIG_MINIX_FS is not set |
| 677 | # CONFIG_ROMFS_FS is not set | 631 | # CONFIG_ROMFS_FS is not set |
| 678 | CONFIG_INOTIFY=y | 632 | CONFIG_INOTIFY=y |
| 679 | CONFIG_QUOTA=y | 633 | # CONFIG_QUOTA is not set |
| 680 | # CONFIG_QFMT_V1 is not set | ||
| 681 | # CONFIG_QFMT_V2 is not set | ||
| 682 | CONFIG_QUOTACTL=y | ||
| 683 | CONFIG_DNOTIFY=y | 634 | CONFIG_DNOTIFY=y |
| 684 | # CONFIG_AUTOFS_FS is not set | 635 | # CONFIG_AUTOFS_FS is not set |
| 685 | # CONFIG_AUTOFS4_FS is not set | 636 | # CONFIG_AUTOFS4_FS is not set |
| @@ -694,8 +645,11 @@ CONFIG_DNOTIFY=y | |||
| 694 | # | 645 | # |
| 695 | # DOS/FAT/NT Filesystems | 646 | # DOS/FAT/NT Filesystems |
| 696 | # | 647 | # |
| 648 | CONFIG_FAT_FS=y | ||
| 697 | # CONFIG_MSDOS_FS is not set | 649 | # CONFIG_MSDOS_FS is not set |
| 698 | # CONFIG_VFAT_FS is not set | 650 | CONFIG_VFAT_FS=y |
| 651 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 652 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 699 | # CONFIG_NTFS_FS is not set | 653 | # CONFIG_NTFS_FS is not set |
| 700 | 654 | ||
| 701 | # | 655 | # |
| @@ -704,7 +658,6 @@ CONFIG_DNOTIFY=y | |||
| 704 | CONFIG_PROC_FS=y | 658 | CONFIG_PROC_FS=y |
| 705 | CONFIG_SYSFS=y | 659 | CONFIG_SYSFS=y |
| 706 | CONFIG_TMPFS=y | 660 | CONFIG_TMPFS=y |
| 707 | # CONFIG_HUGETLBFS is not set | ||
| 708 | # CONFIG_HUGETLB_PAGE is not set | 661 | # CONFIG_HUGETLB_PAGE is not set |
| 709 | CONFIG_RAMFS=y | 662 | CONFIG_RAMFS=y |
| 710 | # CONFIG_RELAYFS_FS is not set | 663 | # CONFIG_RELAYFS_FS is not set |
| @@ -712,22 +665,10 @@ CONFIG_RAMFS=y | |||
| 712 | # | 665 | # |
| 713 | # Miscellaneous filesystems | 666 | # Miscellaneous filesystems |
| 714 | # | 667 | # |
| 715 | # CONFIG_ADFS_FS is not set | ||
| 716 | # CONFIG_AFFS_FS is not set | ||
| 717 | # CONFIG_HFS_FS is not set | ||
| 718 | # CONFIG_HFSPLUS_FS is not set | 668 | # CONFIG_HFSPLUS_FS is not set |
| 719 | # CONFIG_BEFS_FS is not set | ||
| 720 | # CONFIG_BFS_FS is not set | ||
| 721 | # CONFIG_EFS_FS is not set | ||
| 722 | # CONFIG_JFFS_FS is not set | 669 | # CONFIG_JFFS_FS is not set |
| 723 | CONFIG_JFFS2_FS=m | 670 | # CONFIG_JFFS2_FS is not set |
| 724 | CONFIG_JFFS2_FS_DEBUG=0 | 671 | CONFIG_CRAMFS=y |
| 725 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 726 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
| 727 | CONFIG_JFFS2_ZLIB=y | ||
| 728 | CONFIG_JFFS2_RTIME=y | ||
| 729 | # CONFIG_JFFS2_RUBIN is not set | ||
| 730 | CONFIG_CRAMFS=m | ||
| 731 | # CONFIG_VXFS_FS is not set | 672 | # CONFIG_VXFS_FS is not set |
| 732 | # CONFIG_HPFS_FS is not set | 673 | # CONFIG_HPFS_FS is not set |
| 733 | # CONFIG_QNX4FS_FS is not set | 674 | # CONFIG_QNX4FS_FS is not set |
| @@ -740,32 +681,16 @@ CONFIG_CRAMFS=m | |||
| 740 | CONFIG_NFS_FS=y | 681 | CONFIG_NFS_FS=y |
| 741 | CONFIG_NFS_V3=y | 682 | CONFIG_NFS_V3=y |
| 742 | # CONFIG_NFS_V3_ACL is not set | 683 | # CONFIG_NFS_V3_ACL is not set |
| 743 | CONFIG_NFS_V4=y | 684 | # CONFIG_NFSD is not set |
| 744 | # CONFIG_NFS_DIRECTIO is not set | ||
| 745 | CONFIG_NFSD=y | ||
| 746 | CONFIG_NFSD_V3=y | ||
| 747 | # CONFIG_NFSD_V3_ACL is not set | ||
| 748 | CONFIG_NFSD_V4=y | ||
| 749 | CONFIG_NFSD_TCP=y | ||
| 750 | CONFIG_ROOT_NFS=y | 685 | CONFIG_ROOT_NFS=y |
| 751 | CONFIG_LOCKD=y | 686 | CONFIG_LOCKD=y |
| 752 | CONFIG_LOCKD_V4=y | 687 | CONFIG_LOCKD_V4=y |
| 753 | CONFIG_EXPORTFS=y | ||
| 754 | CONFIG_NFS_COMMON=y | 688 | CONFIG_NFS_COMMON=y |
| 755 | CONFIG_SUNRPC=y | 689 | CONFIG_SUNRPC=y |
| 756 | CONFIG_SUNRPC_GSS=y | 690 | # CONFIG_SMB_FS is not set |
| 757 | CONFIG_RPCSEC_GSS_KRB5=y | 691 | # CONFIG_CIFS is not set |
| 758 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 759 | CONFIG_SMB_FS=m | ||
| 760 | # CONFIG_SMB_NLS_DEFAULT is not set | ||
| 761 | CONFIG_CIFS=m | ||
| 762 | # CONFIG_CIFS_STATS is not set | ||
| 763 | # CONFIG_CIFS_XATTR is not set | ||
| 764 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
| 765 | # CONFIG_NCP_FS is not set | 692 | # CONFIG_NCP_FS is not set |
| 766 | # CONFIG_CODA_FS is not set | 693 | # CONFIG_CODA_FS is not set |
| 767 | # CONFIG_AFS_FS is not set | ||
| 768 | # CONFIG_9P_FS is not set | ||
| 769 | 694 | ||
| 770 | # | 695 | # |
| 771 | # Partition Types | 696 | # Partition Types |
| @@ -802,7 +727,7 @@ CONFIG_NLS_CODEPAGE_437=y | |||
| 802 | # CONFIG_NLS_CODEPAGE_1250 is not set | 727 | # CONFIG_NLS_CODEPAGE_1250 is not set |
| 803 | # CONFIG_NLS_CODEPAGE_1251 is not set | 728 | # CONFIG_NLS_CODEPAGE_1251 is not set |
| 804 | # CONFIG_NLS_ASCII is not set | 729 | # CONFIG_NLS_ASCII is not set |
| 805 | # CONFIG_NLS_ISO8859_1 is not set | 730 | CONFIG_NLS_ISO8859_1=y |
| 806 | # CONFIG_NLS_ISO8859_2 is not set | 731 | # CONFIG_NLS_ISO8859_2 is not set |
| 807 | # CONFIG_NLS_ISO8859_3 is not set | 732 | # CONFIG_NLS_ISO8859_3 is not set |
| 808 | # CONFIG_NLS_ISO8859_4 is not set | 733 | # CONFIG_NLS_ISO8859_4 is not set |
| @@ -818,34 +743,26 @@ CONFIG_NLS_CODEPAGE_437=y | |||
| 818 | # CONFIG_NLS_UTF8 is not set | 743 | # CONFIG_NLS_UTF8 is not set |
| 819 | 744 | ||
| 820 | # | 745 | # |
| 821 | # Profiling support | ||
| 822 | # | ||
| 823 | # CONFIG_PROFILING is not set | ||
| 824 | |||
| 825 | # | ||
| 826 | # Kernel hacking | 746 | # Kernel hacking |
| 827 | # | 747 | # |
| 828 | CONFIG_PRINTK_TIME=y | 748 | # CONFIG_PRINTK_TIME is not set |
| 829 | CONFIG_DEBUG_KERNEL=y | 749 | CONFIG_DEBUG_KERNEL=y |
| 830 | # CONFIG_MAGIC_SYSRQ is not set | 750 | CONFIG_MAGIC_SYSRQ=y |
| 831 | CONFIG_LOG_BUF_SHIFT=14 | 751 | CONFIG_LOG_BUF_SHIFT=14 |
| 832 | CONFIG_DETECT_SOFTLOCKUP=y | 752 | CONFIG_DETECT_SOFTLOCKUP=y |
| 833 | # CONFIG_SCHEDSTATS is not set | 753 | # CONFIG_SCHEDSTATS is not set |
| 834 | # CONFIG_DEBUG_SLAB is not set | 754 | # CONFIG_DEBUG_SLAB is not set |
| 835 | CONFIG_DEBUG_PREEMPT=y | ||
| 836 | # CONFIG_DEBUG_SPINLOCK is not set | 755 | # CONFIG_DEBUG_SPINLOCK is not set |
| 837 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 756 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 838 | # CONFIG_DEBUG_KOBJECT is not set | 757 | # CONFIG_DEBUG_KOBJECT is not set |
| 839 | # CONFIG_DEBUG_BUGVERBOSE is not set | 758 | CONFIG_DEBUG_BUGVERBOSE=y |
| 840 | CONFIG_DEBUG_INFO=y | 759 | # CONFIG_DEBUG_INFO is not set |
| 841 | # CONFIG_DEBUG_FS is not set | 760 | # CONFIG_DEBUG_FS is not set |
| 842 | CONFIG_FRAME_POINTER=y | 761 | CONFIG_FRAME_POINTER=y |
| 843 | CONFIG_DEBUG_USER=y | 762 | CONFIG_DEBUG_USER=y |
| 844 | CONFIG_DEBUG_WAITQ=y | 763 | # CONFIG_DEBUG_WAITQ is not set |
| 845 | CONFIG_DEBUG_ERRORS=y | 764 | CONFIG_DEBUG_ERRORS=y |
| 846 | CONFIG_DEBUG_LL=y | 765 | # CONFIG_DEBUG_LL is not set |
| 847 | # CONFIG_DEBUG_ICEDCC is not set | ||
| 848 | # CONFIG_DEBUG_CLPS711X_UART2 is not set | ||
| 849 | 766 | ||
| 850 | # | 767 | # |
| 851 | # Security options | 768 | # Security options |
| @@ -856,31 +773,7 @@ CONFIG_DEBUG_LL=y | |||
| 856 | # | 773 | # |
| 857 | # Cryptographic options | 774 | # Cryptographic options |
| 858 | # | 775 | # |
| 859 | CONFIG_CRYPTO=y | 776 | # CONFIG_CRYPTO is not set |
| 860 | # CONFIG_CRYPTO_HMAC is not set | ||
| 861 | # CONFIG_CRYPTO_NULL is not set | ||
| 862 | # CONFIG_CRYPTO_MD4 is not set | ||
| 863 | CONFIG_CRYPTO_MD5=y | ||
| 864 | # CONFIG_CRYPTO_SHA1 is not set | ||
| 865 | # CONFIG_CRYPTO_SHA256 is not set | ||
| 866 | # CONFIG_CRYPTO_SHA512 is not set | ||
| 867 | # CONFIG_CRYPTO_WP512 is not set | ||
| 868 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 869 | CONFIG_CRYPTO_DES=y | ||
| 870 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
| 871 | # CONFIG_CRYPTO_TWOFISH is not set | ||
| 872 | # CONFIG_CRYPTO_SERPENT is not set | ||
| 873 | # CONFIG_CRYPTO_AES is not set | ||
| 874 | # CONFIG_CRYPTO_CAST5 is not set | ||
| 875 | # CONFIG_CRYPTO_CAST6 is not set | ||
| 876 | # CONFIG_CRYPTO_TEA is not set | ||
| 877 | # CONFIG_CRYPTO_ARC4 is not set | ||
| 878 | # CONFIG_CRYPTO_KHAZAD is not set | ||
| 879 | # CONFIG_CRYPTO_ANUBIS is not set | ||
| 880 | # CONFIG_CRYPTO_DEFLATE is not set | ||
| 881 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 882 | # CONFIG_CRYPTO_CRC32C is not set | ||
| 883 | # CONFIG_CRYPTO_TEST is not set | ||
| 884 | 777 | ||
| 885 | # | 778 | # |
| 886 | # Hardware crypto devices | 779 | # Hardware crypto devices |
| @@ -893,5 +786,4 @@ CONFIG_CRYPTO_DES=y | |||
| 893 | # CONFIG_CRC16 is not set | 786 | # CONFIG_CRC16 is not set |
| 894 | CONFIG_CRC32=y | 787 | CONFIG_CRC32=y |
| 895 | # CONFIG_LIBCRC32C is not set | 788 | # CONFIG_LIBCRC32C is not set |
| 896 | CONFIG_ZLIB_INFLATE=m | 789 | CONFIG_ZLIB_INFLATE=y |
| 897 | CONFIG_ZLIB_DEFLATE=m | ||
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 3284118f356b..9def4404e1f2 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
| @@ -1050,3 +1050,34 @@ static int __init noirqdebug_setup(char *str) | |||
| 1050 | } | 1050 | } |
| 1051 | 1051 | ||
| 1052 | __setup("noirqdebug", noirqdebug_setup); | 1052 | __setup("noirqdebug", noirqdebug_setup); |
| 1053 | |||
| 1054 | #ifdef CONFIG_HOTPLUG_CPU | ||
| 1055 | /* | ||
| 1056 | * The CPU has been marked offline. Migrate IRQs off this CPU. If | ||
| 1057 | * the affinity settings do not allow other CPUs, force them onto any | ||
| 1058 | * available CPU. | ||
| 1059 | */ | ||
| 1060 | void migrate_irqs(void) | ||
| 1061 | { | ||
| 1062 | unsigned int i, cpu = smp_processor_id(); | ||
| 1063 | |||
| 1064 | for (i = 0; i < NR_IRQS; i++) { | ||
| 1065 | struct irqdesc *desc = irq_desc + i; | ||
| 1066 | |||
| 1067 | if (desc->cpu == cpu) { | ||
| 1068 | unsigned int newcpu = any_online_cpu(desc->affinity); | ||
| 1069 | |||
| 1070 | if (newcpu == NR_CPUS) { | ||
| 1071 | if (printk_ratelimit()) | ||
| 1072 | printk(KERN_INFO "IRQ%u no longer affine to CPU%u\n", | ||
| 1073 | i, cpu); | ||
| 1074 | |||
| 1075 | cpus_setall(desc->affinity); | ||
| 1076 | newcpu = any_online_cpu(desc->affinity); | ||
| 1077 | } | ||
| 1078 | |||
| 1079 | route_irq(desc, i, newcpu); | ||
| 1080 | } | ||
| 1081 | } | ||
| 1082 | } | ||
| 1083 | #endif /* CONFIG_HOTPLUG_CPU */ | ||
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 409db6d5ec99..ba298277becd 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
| 27 | #include <linux/kallsyms.h> | 27 | #include <linux/kallsyms.h> |
| 28 | #include <linux/init.h> | 28 | #include <linux/init.h> |
| 29 | #include <linux/cpu.h> | ||
| 29 | 30 | ||
| 30 | #include <asm/system.h> | 31 | #include <asm/system.h> |
| 31 | #include <asm/io.h> | 32 | #include <asm/io.h> |
| @@ -105,6 +106,14 @@ void cpu_idle(void) | |||
| 105 | /* endless idle loop with no priority at all */ | 106 | /* endless idle loop with no priority at all */ |
| 106 | while (1) { | 107 | while (1) { |
| 107 | void (*idle)(void) = pm_idle; | 108 | void (*idle)(void) = pm_idle; |
| 109 | |||
| 110 | #ifdef CONFIG_HOTPLUG_CPU | ||
| 111 | if (cpu_is_offline(smp_processor_id())) { | ||
| 112 | leds_event(led_idle_start); | ||
| 113 | cpu_die(); | ||
| 114 | } | ||
| 115 | #endif | ||
| 116 | |||
| 108 | if (!idle) | 117 | if (!idle) |
| 109 | idle = default_idle; | 118 | idle = default_idle; |
| 110 | preempt_disable(); | 119 | preempt_disable(); |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 826164945747..edb5a406922f 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
| @@ -80,19 +80,23 @@ static DEFINE_SPINLOCK(smp_call_function_lock); | |||
| 80 | 80 | ||
| 81 | int __cpuinit __cpu_up(unsigned int cpu) | 81 | int __cpuinit __cpu_up(unsigned int cpu) |
| 82 | { | 82 | { |
| 83 | struct task_struct *idle; | 83 | struct cpuinfo_arm *ci = &per_cpu(cpu_data, cpu); |
| 84 | struct task_struct *idle = ci->idle; | ||
| 84 | pgd_t *pgd; | 85 | pgd_t *pgd; |
| 85 | pmd_t *pmd; | 86 | pmd_t *pmd; |
| 86 | int ret; | 87 | int ret; |
| 87 | 88 | ||
| 88 | /* | 89 | /* |
| 89 | * Spawn a new process manually. Grab a pointer to | 90 | * Spawn a new process manually, if not already done. |
| 90 | * its task struct so we can mess with it | 91 | * Grab a pointer to its task struct so we can mess with it |
| 91 | */ | 92 | */ |
| 92 | idle = fork_idle(cpu); | 93 | if (!idle) { |
| 93 | if (IS_ERR(idle)) { | 94 | idle = fork_idle(cpu); |
| 94 | printk(KERN_ERR "CPU%u: fork() failed\n", cpu); | 95 | if (IS_ERR(idle)) { |
| 95 | return PTR_ERR(idle); | 96 | printk(KERN_ERR "CPU%u: fork() failed\n", cpu); |
| 97 | return PTR_ERR(idle); | ||
| 98 | } | ||
| 99 | ci->idle = idle; | ||
| 96 | } | 100 | } |
| 97 | 101 | ||
| 98 | /* | 102 | /* |
| @@ -155,6 +159,91 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
| 155 | return ret; | 159 | return ret; |
| 156 | } | 160 | } |
| 157 | 161 | ||
| 162 | #ifdef CONFIG_HOTPLUG_CPU | ||
| 163 | /* | ||
| 164 | * __cpu_disable runs on the processor to be shutdown. | ||
| 165 | */ | ||
| 166 | int __cpuexit __cpu_disable(void) | ||
| 167 | { | ||
| 168 | unsigned int cpu = smp_processor_id(); | ||
| 169 | struct task_struct *p; | ||
| 170 | int ret; | ||
| 171 | |||
| 172 | ret = mach_cpu_disable(cpu); | ||
| 173 | if (ret) | ||
| 174 | return ret; | ||
| 175 | |||
| 176 | /* | ||
| 177 | * Take this CPU offline. Once we clear this, we can't return, | ||
| 178 | * and we must not schedule until we're ready to give up the cpu. | ||
| 179 | */ | ||
| 180 | cpu_clear(cpu, cpu_online_map); | ||
| 181 | |||
| 182 | /* | ||
| 183 | * OK - migrate IRQs away from this CPU | ||
| 184 | */ | ||
| 185 | migrate_irqs(); | ||
| 186 | |||
| 187 | /* | ||
| 188 | * Flush user cache and TLB mappings, and then remove this CPU | ||
| 189 | * from the vm mask set of all processes. | ||
| 190 | */ | ||
| 191 | flush_cache_all(); | ||
| 192 | local_flush_tlb_all(); | ||
| 193 | |||
| 194 | read_lock(&tasklist_lock); | ||
| 195 | for_each_process(p) { | ||
| 196 | if (p->mm) | ||
| 197 | cpu_clear(cpu, p->mm->cpu_vm_mask); | ||
| 198 | } | ||
| 199 | read_unlock(&tasklist_lock); | ||
| 200 | |||
| 201 | return 0; | ||
| 202 | } | ||
| 203 | |||
| 204 | /* | ||
| 205 | * called on the thread which is asking for a CPU to be shutdown - | ||
| 206 | * waits until shutdown has completed, or it is timed out. | ||
| 207 | */ | ||
| 208 | void __cpuexit __cpu_die(unsigned int cpu) | ||
| 209 | { | ||
| 210 | if (!platform_cpu_kill(cpu)) | ||
| 211 | printk("CPU%u: unable to kill\n", cpu); | ||
| 212 | } | ||
| 213 | |||
| 214 | /* | ||
| 215 | * Called from the idle thread for the CPU which has been shutdown. | ||
| 216 | * | ||
| 217 | * Note that we disable IRQs here, but do not re-enable them | ||
| 218 | * before returning to the caller. This is also the behaviour | ||
| 219 | * of the other hotplug-cpu capable cores, so presumably coming | ||
| 220 | * out of idle fixes this. | ||
| 221 | */ | ||
| 222 | void __cpuexit cpu_die(void) | ||
| 223 | { | ||
| 224 | unsigned int cpu = smp_processor_id(); | ||
| 225 | |||
| 226 | local_irq_disable(); | ||
| 227 | idle_task_exit(); | ||
| 228 | |||
| 229 | /* | ||
| 230 | * actual CPU shutdown procedure is at least platform (if not | ||
| 231 | * CPU) specific | ||
| 232 | */ | ||
| 233 | platform_cpu_die(cpu); | ||
| 234 | |||
| 235 | /* | ||
| 236 | * Do not return to the idle loop - jump back to the secondary | ||
| 237 | * cpu initialisation. There's some initialisation which needs | ||
| 238 | * to be repeated to undo the effects of taking the CPU offline. | ||
| 239 | */ | ||
| 240 | __asm__("mov sp, %0\n" | ||
| 241 | " b secondary_start_kernel" | ||
| 242 | : | ||
| 243 | : "r" ((void *)current->thread_info + THREAD_SIZE - 8)); | ||
| 244 | } | ||
| 245 | #endif /* CONFIG_HOTPLUG_CPU */ | ||
| 246 | |||
| 158 | /* | 247 | /* |
| 159 | * This is the secondary CPU boot entry. We're using this CPUs | 248 | * This is the secondary CPU boot entry. We're using this CPUs |
| 160 | * idle thread stack, but a set of temporary page tables. | 249 | * idle thread stack, but a set of temporary page tables. |
| @@ -236,6 +325,8 @@ void __init smp_prepare_boot_cpu(void) | |||
| 236 | { | 325 | { |
| 237 | unsigned int cpu = smp_processor_id(); | 326 | unsigned int cpu = smp_processor_id(); |
| 238 | 327 | ||
| 328 | per_cpu(cpu_data, cpu).idle = current; | ||
| 329 | |||
| 239 | cpu_set(cpu, cpu_possible_map); | 330 | cpu_set(cpu, cpu_possible_map); |
| 240 | cpu_set(cpu, cpu_present_map); | 331 | cpu_set(cpu, cpu_present_map); |
| 241 | cpu_set(cpu, cpu_online_map); | 332 | cpu_set(cpu, cpu_online_map); |
| @@ -309,8 +400,8 @@ int smp_call_function_on_cpu(void (*func)(void *info), void *info, int retry, | |||
| 309 | printk(KERN_CRIT | 400 | printk(KERN_CRIT |
| 310 | "CPU%u: smp_call_function timeout for %p(%p)\n" | 401 | "CPU%u: smp_call_function timeout for %p(%p)\n" |
| 311 | " callmap %lx pending %lx, %swait\n", | 402 | " callmap %lx pending %lx, %swait\n", |
| 312 | smp_processor_id(), func, info, callmap, data.pending, | 403 | smp_processor_id(), func, info, *cpus_addr(callmap), |
| 313 | wait ? "" : "no "); | 404 | *cpus_addr(data.pending), wait ? "" : "no "); |
| 314 | 405 | ||
| 315 | /* | 406 | /* |
| 316 | * TRACE | 407 | * TRACE |
diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile index 71e5b99e519e..391f3ab3ff32 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile | |||
| @@ -7,13 +7,27 @@ | |||
| 7 | lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \ | 7 | lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \ |
| 8 | csumpartialcopy.o csumpartialcopyuser.o clearbit.o \ | 8 | csumpartialcopy.o csumpartialcopyuser.o clearbit.o \ |
| 9 | copy_page.o delay.o findbit.o memchr.o memcpy.o \ | 9 | copy_page.o delay.o findbit.o memchr.o memcpy.o \ |
| 10 | memset.o memzero.o setbit.o strncpy_from_user.o \ | 10 | memmove.o memset.o memzero.o setbit.o \ |
| 11 | strnlen_user.o strchr.o strrchr.o testchangebit.o \ | 11 | strncpy_from_user.o strnlen_user.o \ |
| 12 | testclearbit.o testsetbit.o uaccess.o getuser.o \ | 12 | strchr.o strrchr.o \ |
| 13 | putuser.o ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \ | 13 | testchangebit.o testclearbit.o testsetbit.o \ |
| 14 | getuser.o putuser.o clear_user.o \ | ||
| 15 | ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \ | ||
| 14 | ucmpdi2.o lib1funcs.o div64.o sha1.o \ | 16 | ucmpdi2.o lib1funcs.o div64.o sha1.o \ |
| 15 | io-readsb.o io-writesb.o io-readsl.o io-writesl.o | 17 | io-readsb.o io-writesb.o io-readsl.o io-writesl.o |
| 16 | 18 | ||
| 19 | # the code in uaccess.S is not preemption safe and | ||
| 20 | # probably faster on ARMv3 only | ||
| 21 | ifeq ($CONFIG_PREEMPT,y) | ||
| 22 | lib-y += copy_from_user.o copy_to_user.o | ||
| 23 | else | ||
| 24 | ifneq ($(CONFIG_CPU_32v3),y) | ||
| 25 | lib-y += copy_from_user.o copy_to_user.o | ||
| 26 | else | ||
| 27 | lib-y += uaccess.o | ||
| 28 | endif | ||
| 29 | endif | ||
| 30 | |||
| 17 | ifeq ($(CONFIG_CPU_32v3),y) | 31 | ifeq ($(CONFIG_CPU_32v3),y) |
| 18 | lib-y += io-readsw-armv3.o io-writesw-armv3.o | 32 | lib-y += io-readsw-armv3.o io-writesw-armv3.o |
| 19 | else | 33 | else |
diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h index 64a988c1ad44..f35d91fbe117 100644 --- a/arch/arm/lib/bitops.h +++ b/arch/arm/lib/bitops.h | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | #include <linux/config.h> | 1 | #include <linux/config.h> |
| 2 | 2 | ||
| 3 | #if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_CPU_MPCORE) | 3 | #if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_CPU_32v6K) |
| 4 | .macro bitop, instr | 4 | .macro bitop, instr |
| 5 | mov r2, #1 | 5 | mov r2, #1 |
| 6 | and r3, r0, #7 @ Get bit offset | 6 | and r3, r0, #7 @ Get bit offset |
diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S new file mode 100644 index 000000000000..7ff9f831b3f9 --- /dev/null +++ b/arch/arm/lib/clear_user.S | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/lib/clear_user.S | ||
| 3 | * | ||
| 4 | * Copyright (C) 1995, 1996,1997,1998 Russell King | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | #include <linux/linkage.h> | ||
| 11 | #include <asm/assembler.h> | ||
| 12 | |||
| 13 | .text | ||
| 14 | |||
| 15 | /* Prototype: int __arch_clear_user(void *addr, size_t sz) | ||
| 16 | * Purpose : clear some user memory | ||
| 17 | * Params : addr - user memory address to clear | ||
| 18 | * : sz - number of bytes to clear | ||
| 19 | * Returns : number of bytes NOT cleared | ||
| 20 | */ | ||
| 21 | ENTRY(__arch_clear_user) | ||
| 22 | stmfd sp!, {r1, lr} | ||
| 23 | mov r2, #0 | ||
| 24 | cmp r1, #4 | ||
| 25 | blt 2f | ||
| 26 | ands ip, r0, #3 | ||
| 27 | beq 1f | ||
| 28 | cmp ip, #2 | ||
| 29 | USER( strbt r2, [r0], #1) | ||
| 30 | USER( strlebt r2, [r0], #1) | ||
| 31 | USER( strltbt r2, [r0], #1) | ||
| 32 | rsb ip, ip, #4 | ||
| 33 | sub r1, r1, ip @ 7 6 5 4 3 2 1 | ||
| 34 | 1: subs r1, r1, #8 @ -1 -2 -3 -4 -5 -6 -7 | ||
| 35 | USER( strplt r2, [r0], #4) | ||
| 36 | USER( strplt r2, [r0], #4) | ||
| 37 | bpl 1b | ||
| 38 | adds r1, r1, #4 @ 3 2 1 0 -1 -2 -3 | ||
| 39 | USER( strplt r2, [r0], #4) | ||
| 40 | 2: tst r1, #2 @ 1x 1x 0x 0x 1x 1x 0x | ||
| 41 | USER( strnebt r2, [r0], #1) | ||
| 42 | USER( strnebt r2, [r0], #1) | ||
| 43 | tst r1, #1 @ x1 x0 x1 x0 x1 x0 x1 | ||
| 44 | USER( strnebt r2, [r0], #1) | ||
| 45 | mov r0, #0 | ||
| 46 | LOADREGS(fd,sp!, {r1, pc}) | ||
| 47 | |||
| 48 | .section .fixup,"ax" | ||
| 49 | .align 0 | ||
| 50 | 9001: LOADREGS(fd,sp!, {r0, pc}) | ||
| 51 | .previous | ||
| 52 | |||
diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S new file mode 100644 index 000000000000..7497393a0e81 --- /dev/null +++ b/arch/arm/lib/copy_from_user.S | |||
| @@ -0,0 +1,101 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/lib/copy_from_user.S | ||
| 3 | * | ||
| 4 | * Author: Nicolas Pitre | ||
| 5 | * Created: Sep 29, 2005 | ||
| 6 | * Copyright: MontaVista Software, Inc. | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/linkage.h> | ||
| 14 | #include <asm/assembler.h> | ||
| 15 | |||
| 16 | /* | ||
| 17 | * Prototype: | ||
| 18 | * | ||
| 19 | * size_t __arch_copy_from_user(void *to, const void *from, size_t n) | ||
| 20 | * | ||
| 21 | * Purpose: | ||
| 22 | * | ||
| 23 | * copy a block to kernel memory from user memory | ||
| 24 | * | ||
| 25 | * Params: | ||
| 26 | * | ||
| 27 | * to = kernel memory | ||
| 28 | * from = user memory | ||
| 29 | * n = number of bytes to copy | ||
| 30 | * | ||
| 31 | * Return value: | ||
| 32 | * | ||
| 33 | * Number of bytes NOT copied. | ||
| 34 | */ | ||
| 35 | |||
| 36 | .macro ldr1w ptr reg abort | ||
| 37 | 100: ldrt \reg, [\ptr], #4 | ||
| 38 | .section __ex_table, "a" | ||
| 39 | .long 100b, \abort | ||
| 40 | .previous | ||
| 41 | .endm | ||
| 42 | |||
| 43 | .macro ldr4w ptr reg1 reg2 reg3 reg4 abort | ||
| 44 | ldr1w \ptr, \reg1, \abort | ||
| 45 | ldr1w \ptr, \reg2, \abort | ||
| 46 | ldr1w \ptr, \reg3, \abort | ||
| 47 | ldr1w \ptr, \reg4, \abort | ||
| 48 | .endm | ||
| 49 | |||
| 50 | .macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort | ||
| 51 | ldr4w \ptr, \reg1, \reg2, \reg3, \reg4, \abort | ||
| 52 | ldr4w \ptr, \reg5, \reg6, \reg7, \reg8, \abort | ||
| 53 | .endm | ||
| 54 | |||
| 55 | .macro ldr1b ptr reg cond=al abort | ||
| 56 | 100: ldr\cond\()bt \reg, [\ptr], #1 | ||
| 57 | .section __ex_table, "a" | ||
| 58 | .long 100b, \abort | ||
| 59 | .previous | ||
| 60 | .endm | ||
| 61 | |||
| 62 | .macro str1w ptr reg abort | ||
| 63 | str \reg, [\ptr], #4 | ||
| 64 | .endm | ||
| 65 | |||
| 66 | .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort | ||
| 67 | stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8} | ||
| 68 | .endm | ||
| 69 | |||
| 70 | .macro str1b ptr reg cond=al abort | ||
| 71 | str\cond\()b \reg, [\ptr], #1 | ||
| 72 | .endm | ||
| 73 | |||
| 74 | .macro enter reg1 reg2 | ||
| 75 | mov r3, #0 | ||
| 76 | stmdb sp!, {r0, r2, r3, \reg1, \reg2} | ||
| 77 | .endm | ||
| 78 | |||
| 79 | .macro exit reg1 reg2 | ||
| 80 | add sp, sp, #8 | ||
| 81 | ldmfd sp!, {r0, \reg1, \reg2} | ||
| 82 | .endm | ||
| 83 | |||
| 84 | .text | ||
| 85 | |||
| 86 | ENTRY(__arch_copy_from_user) | ||
| 87 | |||
| 88 | #include "copy_template.S" | ||
| 89 | |||
| 90 | .section .fixup,"ax" | ||
| 91 | .align 0 | ||
| 92 | copy_abort_preamble | ||
| 93 | ldmfd sp!, {r1, r2} | ||
| 94 | sub r3, r0, r1 | ||
| 95 | rsb r1, r3, r2 | ||
| 96 | str r1, [sp] | ||
| 97 | bl __memzero | ||
| 98 | ldr r0, [sp], #4 | ||
| 99 | copy_abort_end | ||
| 100 | .previous | ||
| 101 | |||
diff --git a/arch/arm/lib/copy_template.S b/arch/arm/lib/copy_template.S new file mode 100644 index 000000000000..838e435e4922 --- /dev/null +++ b/arch/arm/lib/copy_template.S | |||
| @@ -0,0 +1,255 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/lib/copy_template.s | ||
| 3 | * | ||
| 4 | * Code template for optimized memory copy functions | ||
| 5 | * | ||
| 6 | * Author: Nicolas Pitre | ||
| 7 | * Created: Sep 28, 2005 | ||
| 8 | * Copyright: MontaVista Software, Inc. | ||
| 9 | * | ||
| 10 | * This program is free software; you can redistribute it and/or modify | ||
| 11 | * it under the terms of the GNU General Public License version 2 as | ||
| 12 | * published by the Free Software Foundation. | ||
| 13 | */ | ||
| 14 | |||
| 15 | /* | ||
| 16 | * This can be used to enable code to cacheline align the source pointer. | ||
| 17 | * Experiments on tested architectures (StrongARM and XScale) didn't show | ||
| 18 | * this a worthwhile thing to do. That might be different in the future. | ||
| 19 | */ | ||
| 20 | //#define CALGN(code...) code | ||
| 21 | #define CALGN(code...) | ||
| 22 | |||
| 23 | /* | ||
| 24 | * Theory of operation | ||
| 25 | * ------------------- | ||
| 26 | * | ||
| 27 | * This file provides the core code for a forward memory copy used in | ||
| 28 | * the implementation of memcopy(), copy_to_user() and copy_from_user(). | ||
| 29 | * | ||
| 30 | * The including file must define the following accessor macros | ||
| 31 | * according to the need of the given function: | ||
| 32 | * | ||
| 33 | * ldr1w ptr reg abort | ||
| 34 | * | ||
| 35 | * This loads one word from 'ptr', stores it in 'reg' and increments | ||
| 36 | * 'ptr' to the next word. The 'abort' argument is used for fixup tables. | ||
| 37 | * | ||
| 38 | * ldr4w ptr reg1 reg2 reg3 reg4 abort | ||
| 39 | * ldr8w ptr, reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort | ||
| 40 | * | ||
| 41 | * This loads four or eight words starting from 'ptr', stores them | ||
| 42 | * in provided registers and increments 'ptr' past those words. | ||
| 43 | * The'abort' argument is used for fixup tables. | ||
| 44 | * | ||
| 45 | * ldr1b ptr reg cond abort | ||
| 46 | * | ||
| 47 | * Similar to ldr1w, but it loads a byte and increments 'ptr' one byte. | ||
| 48 | * It also must apply the condition code if provided, otherwise the | ||
| 49 | * "al" condition is assumed by default. | ||
| 50 | * | ||
| 51 | * str1w ptr reg abort | ||
| 52 | * str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort | ||
| 53 | * str1b ptr reg cond abort | ||
| 54 | * | ||
| 55 | * Same as their ldr* counterparts, but data is stored to 'ptr' location | ||
| 56 | * rather than being loaded. | ||
| 57 | * | ||
| 58 | * enter reg1 reg2 | ||
| 59 | * | ||
| 60 | * Preserve the provided registers on the stack plus any additional | ||
| 61 | * data as needed by the implementation including this code. Called | ||
| 62 | * upon code entry. | ||
| 63 | * | ||
| 64 | * exit reg1 reg2 | ||
| 65 | * | ||
| 66 | * Restore registers with the values previously saved with the | ||
| 67 | * 'preserv' macro. Called upon code termination. | ||
| 68 | */ | ||
| 69 | |||
| 70 | |||
| 71 | enter r4, lr | ||
| 72 | |||
| 73 | subs r2, r2, #4 | ||
| 74 | blt 8f | ||
| 75 | ands ip, r0, #3 | ||
| 76 | PLD( pld [r1, #0] ) | ||
| 77 | bne 9f | ||
| 78 | ands ip, r1, #3 | ||
| 79 | bne 10f | ||
| 80 | |||
| 81 | 1: subs r2, r2, #(28) | ||
| 82 | stmfd sp!, {r5 - r8} | ||
| 83 | blt 5f | ||
| 84 | |||
| 85 | CALGN( ands ip, r1, #31 ) | ||
| 86 | CALGN( rsb r3, ip, #32 ) | ||
| 87 | CALGN( sbcnes r4, r3, r2 ) @ C is always set here | ||
| 88 | CALGN( bcs 2f ) | ||
| 89 | CALGN( adr r4, 6f ) | ||
| 90 | CALGN( subs r2, r2, r3 ) @ C gets set | ||
| 91 | CALGN( add pc, r4, ip ) | ||
| 92 | |||
| 93 | PLD( pld [r1, #0] ) | ||
| 94 | 2: PLD( subs r2, r2, #96 ) | ||
| 95 | PLD( pld [r1, #28] ) | ||
| 96 | PLD( blt 4f ) | ||
| 97 | PLD( pld [r1, #60] ) | ||
| 98 | PLD( pld [r1, #92] ) | ||
| 99 | |||
| 100 | 3: PLD( pld [r1, #124] ) | ||
| 101 | 4: ldr8w r1, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f | ||
| 102 | subs r2, r2, #32 | ||
| 103 | str8w r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f | ||
| 104 | bge 3b | ||
| 105 | PLD( cmn r2, #96 ) | ||
| 106 | PLD( bge 4b ) | ||
| 107 | |||
| 108 | 5: ands ip, r2, #28 | ||
| 109 | rsb ip, ip, #32 | ||
| 110 | addne pc, pc, ip @ C is always clear here | ||
| 111 | b 7f | ||
| 112 | 6: nop | ||
| 113 | ldr1w r1, r3, abort=20f | ||
| 114 | ldr1w r1, r4, abort=20f | ||
| 115 | ldr1w r1, r5, abort=20f | ||
| 116 | ldr1w r1, r6, abort=20f | ||
| 117 | ldr1w r1, r7, abort=20f | ||
| 118 | ldr1w r1, r8, abort=20f | ||
| 119 | ldr1w r1, lr, abort=20f | ||
| 120 | |||
| 121 | add pc, pc, ip | ||
| 122 | nop | ||
| 123 | nop | ||
| 124 | str1w r0, r3, abort=20f | ||
| 125 | str1w r0, r4, abort=20f | ||
| 126 | str1w r0, r5, abort=20f | ||
| 127 | str1w r0, r6, abort=20f | ||
| 128 | str1w r0, r7, abort=20f | ||
| 129 | str1w r0, r8, abort=20f | ||
| 130 | str1w r0, lr, abort=20f | ||
| 131 | |||
| 132 | CALGN( bcs 2b ) | ||
| 133 | |||
| 134 | 7: ldmfd sp!, {r5 - r8} | ||
| 135 | |||
| 136 | 8: movs r2, r2, lsl #31 | ||
| 137 | ldr1b r1, r3, ne, abort=21f | ||
| 138 | ldr1b r1, r4, cs, abort=21f | ||
| 139 | ldr1b r1, ip, cs, abort=21f | ||
| 140 | str1b r0, r3, ne, abort=21f | ||
| 141 | str1b r0, r4, cs, abort=21f | ||
| 142 | str1b r0, ip, cs, abort=21f | ||
| 143 | |||
| 144 | exit r4, pc | ||
| 145 | |||
| 146 | 9: rsb ip, ip, #4 | ||
| 147 | cmp ip, #2 | ||
| 148 | ldr1b r1, r3, gt, abort=21f | ||
| 149 | ldr1b r1, r4, ge, abort=21f | ||
| 150 | ldr1b r1, lr, abort=21f | ||
| 151 | str1b r0, r3, gt, abort=21f | ||
| 152 | str1b r0, r4, ge, abort=21f | ||
| 153 | subs r2, r2, ip | ||
| 154 | str1b r0, lr, abort=21f | ||
| 155 | blt 8b | ||
| 156 | ands ip, r1, #3 | ||
| 157 | beq 1b | ||
| 158 | |||
| 159 | 10: bic r1, r1, #3 | ||
| 160 | cmp ip, #2 | ||
| 161 | ldr1w r1, lr, abort=21f | ||
| 162 | beq 17f | ||
| 163 | bgt 18f | ||
| 164 | |||
| 165 | |||
| 166 | .macro forward_copy_shift pull push | ||
| 167 | |||
| 168 | subs r2, r2, #28 | ||
| 169 | blt 14f | ||
| 170 | |||
| 171 | CALGN( ands ip, r1, #31 ) | ||
| 172 | CALGN( rsb ip, ip, #32 ) | ||
| 173 | CALGN( sbcnes r4, ip, r2 ) @ C is always set here | ||
| 174 | CALGN( subcc r2, r2, ip ) | ||
| 175 | CALGN( bcc 15f ) | ||
| 176 | |||
| 177 | 11: stmfd sp!, {r5 - r9} | ||
| 178 | |||
| 179 | PLD( pld [r1, #0] ) | ||
| 180 | PLD( subs r2, r2, #96 ) | ||
| 181 | PLD( pld [r1, #28] ) | ||
| 182 | PLD( blt 13f ) | ||
| 183 | PLD( pld [r1, #60] ) | ||
| 184 | PLD( pld [r1, #92] ) | ||
| 185 | |||
| 186 | 12: PLD( pld [r1, #124] ) | ||
| 187 | 13: ldr4w r1, r4, r5, r6, r7, abort=19f | ||
| 188 | mov r3, lr, pull #\pull | ||
| 189 | subs r2, r2, #32 | ||
| 190 | ldr4w r1, r8, r9, ip, lr, abort=19f | ||
| 191 | orr r3, r3, r4, push #\push | ||
| 192 | mov r4, r4, pull #\pull | ||
| 193 | orr r4, r4, r5, push #\push | ||
| 194 | mov r5, r5, pull #\pull | ||
| 195 | orr r5, r5, r6, push #\push | ||
| 196 | mov r6, r6, pull #\pull | ||
| 197 | orr r6, r6, r7, push #\push | ||
| 198 | mov r7, r7, pull #\pull | ||
| 199 | orr r7, r7, r8, push #\push | ||
| 200 | mov r8, r8, pull #\pull | ||
| 201 | orr r8, r8, r9, push #\push | ||
| 202 | mov r9, r9, pull #\pull | ||
| 203 | orr r9, r9, ip, push #\push | ||
| 204 | mov ip, ip, pull #\pull | ||
| 205 | orr ip, ip, lr, push #\push | ||
| 206 | str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f | ||
| 207 | bge 12b | ||
| 208 | PLD( cmn r2, #96 ) | ||
| 209 | PLD( bge 13b ) | ||
| 210 | |||
| 211 | ldmfd sp!, {r5 - r9} | ||
| 212 | |||
| 213 | 14: ands ip, r2, #28 | ||
| 214 | beq 16f | ||
| 215 | |||
| 216 | 15: mov r3, lr, pull #\pull | ||
| 217 | ldr1w r1, lr, abort=21f | ||
| 218 | subs ip, ip, #4 | ||
| 219 | orr r3, r3, lr, push #\push | ||
| 220 | str1w r0, r3, abort=21f | ||
| 221 | bgt 15b | ||
| 222 | CALGN( cmp r2, #0 ) | ||
| 223 | CALGN( bge 11b ) | ||
| 224 | |||
| 225 | 16: sub r1, r1, #(\push / 8) | ||
| 226 | b 8b | ||
| 227 | |||
| 228 | .endm | ||
| 229 | |||
| 230 | |||
| 231 | forward_copy_shift pull=8 push=24 | ||
| 232 | |||
| 233 | 17: forward_copy_shift pull=16 push=16 | ||
| 234 | |||
| 235 | 18: forward_copy_shift pull=24 push=8 | ||
| 236 | |||
| 237 | |||
| 238 | /* | ||
| 239 | * Abort preanble and completion macros. | ||
| 240 | * If a fixup handler is required then those macros must surround it. | ||
| 241 | * It is assumed that the fixup code will handle the private part of | ||
| 242 | * the exit macro. | ||
| 243 | */ | ||
| 244 | |||
| 245 | .macro copy_abort_preamble | ||
| 246 | 19: ldmfd sp!, {r5 - r9} | ||
| 247 | b 21f | ||
| 248 | 20: ldmfd sp!, {r5 - r8} | ||
| 249 | 21: | ||
| 250 | .endm | ||
| 251 | |||
| 252 | .macro copy_abort_end | ||
| 253 | ldmfd sp!, {r4, pc} | ||
| 254 | .endm | ||
| 255 | |||
diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S new file mode 100644 index 000000000000..4a6d8ea14022 --- /dev/null +++ b/arch/arm/lib/copy_to_user.S | |||
| @@ -0,0 +1,101 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/lib/copy_to_user.S | ||
| 3 | * | ||
| 4 | * Author: Nicolas Pitre | ||
| 5 | * Created: Sep 29, 2005 | ||
| 6 | * Copyright: MontaVista Software, Inc. | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/linkage.h> | ||
| 14 | #include <asm/assembler.h> | ||
| 15 | |||
| 16 | /* | ||
| 17 | * Prototype: | ||
| 18 | * | ||
| 19 | * size_t __arch_copy_to_user(void *to, const void *from, size_t n) | ||
| 20 | * | ||
| 21 | * Purpose: | ||
| 22 | * | ||
| 23 | * copy a block to user memory from kernel memory | ||
| 24 | * | ||
| 25 | * Params: | ||
| 26 | * | ||
| 27 | * to = user memory | ||
| 28 | * from = kernel memory | ||
| 29 | * n = number of bytes to copy | ||
| 30 | * | ||
| 31 | * Return value: | ||
| 32 | * | ||
| 33 | * Number of bytes NOT copied. | ||
| 34 | */ | ||
| 35 | |||
| 36 | .macro ldr1w ptr reg abort | ||
| 37 | ldr \reg, [\ptr], #4 | ||
| 38 | .endm | ||
| 39 | |||
| 40 | .macro ldr4w ptr reg1 reg2 reg3 reg4 abort | ||
| 41 | ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4} | ||
| 42 | .endm | ||
| 43 | |||
| 44 | .macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort | ||
| 45 | ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8} | ||
| 46 | .endm | ||
| 47 | |||
| 48 | .macro ldr1b ptr reg cond=al abort | ||
| 49 | ldr\cond\()b \reg, [\ptr], #1 | ||
| 50 | .endm | ||
| 51 | |||
| 52 | .macro str1w ptr reg abort | ||
| 53 | 100: strt \reg, [\ptr], #4 | ||
| 54 | .section __ex_table, "a" | ||
| 55 | .long 100b, \abort | ||
| 56 | .previous | ||
| 57 | .endm | ||
| 58 | |||
| 59 | .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort | ||
| 60 | str1w \ptr, \reg1, \abort | ||
| 61 | str1w \ptr, \reg2, \abort | ||
| 62 | str1w \ptr, \reg3, \abort | ||
| 63 | str1w \ptr, \reg4, \abort | ||
| 64 | str1w \ptr, \reg5, \abort | ||
| 65 | str1w \ptr, \reg6, \abort | ||
| 66 | str1w \ptr, \reg7, \abort | ||
| 67 | str1w \ptr, \reg8, \abort | ||
| 68 | .endm | ||
| 69 | |||
| 70 | .macro str1b ptr reg cond=al abort | ||
| 71 | 100: str\cond\()bt \reg, [\ptr], #1 | ||
| 72 | .section __ex_table, "a" | ||
| 73 | .long 100b, \abort | ||
| 74 | .previous | ||
| 75 | .endm | ||
| 76 | |||
| 77 | .macro enter reg1 reg2 | ||
| 78 | mov r3, #0 | ||
| 79 | stmdb sp!, {r0, r2, r3, \reg1, \reg2} | ||
| 80 | .endm | ||
| 81 | |||
| 82 | .macro exit reg1 reg2 | ||
| 83 | add sp, sp, #8 | ||
| 84 | ldmfd sp!, {r0, \reg1, \reg2} | ||
| 85 | .endm | ||
| 86 | |||
| 87 | .text | ||
| 88 | |||
| 89 | ENTRY(__arch_copy_to_user) | ||
| 90 | |||
| 91 | #include "copy_template.S" | ||
| 92 | |||
| 93 | .section .fixup,"ax" | ||
| 94 | .align 0 | ||
| 95 | copy_abort_preamble | ||
| 96 | ldmfd sp!, {r1, r2, r3} | ||
| 97 | sub r0, r0, r1 | ||
| 98 | rsb r0, r0, r2 | ||
| 99 | copy_abort_end | ||
| 100 | .previous | ||
| 101 | |||
diff --git a/arch/arm/lib/memcpy.S b/arch/arm/lib/memcpy.S index f5a593ceb8cc..7e71d6708a8d 100644 --- a/arch/arm/lib/memcpy.S +++ b/arch/arm/lib/memcpy.S | |||
| @@ -1,393 +1,59 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * linux/arch/arm/lib/memcpy.S | 2 | * linux/arch/arm/lib/memcpy.S |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 1995-1999 Russell King | 4 | * Author: Nicolas Pitre |
| 5 | * Created: Sep 28, 2005 | ||
| 6 | * Copyright: MontaVista Software, Inc. | ||
| 5 | * | 7 | * |
| 6 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
| 7 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
| 8 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
| 9 | * | ||
| 10 | * ASM optimised string functions | ||
| 11 | */ | 11 | */ |
| 12 | |||
| 12 | #include <linux/linkage.h> | 13 | #include <linux/linkage.h> |
| 13 | #include <asm/assembler.h> | 14 | #include <asm/assembler.h> |
| 14 | 15 | ||
| 15 | .text | 16 | .macro ldr1w ptr reg abort |
| 16 | 17 | ldr \reg, [\ptr], #4 | |
| 17 | #define ENTER \ | 18 | .endm |
| 18 | mov ip,sp ;\ | ||
| 19 | stmfd sp!,{r0,r4-r9,fp,ip,lr,pc} ;\ | ||
| 20 | sub fp,ip,#4 | ||
| 21 | |||
| 22 | #define EXIT \ | ||
| 23 | LOADREGS(ea, fp, {r0, r4 - r9, fp, sp, pc}) | ||
| 24 | |||
| 25 | #define EXITEQ \ | ||
| 26 | LOADREGS(eqea, fp, {r0, r4 - r9, fp, sp, pc}) | ||
| 27 | |||
| 28 | /* | ||
| 29 | * Prototype: void memcpy(void *to,const void *from,unsigned long n); | ||
| 30 | */ | ||
| 31 | ENTRY(memcpy) | ||
| 32 | ENTRY(memmove) | ||
| 33 | ENTER | ||
| 34 | cmp r1, r0 | ||
| 35 | bcc 23f | ||
| 36 | subs r2, r2, #4 | ||
| 37 | blt 6f | ||
| 38 | PLD( pld [r1, #0] ) | ||
| 39 | ands ip, r0, #3 | ||
| 40 | bne 7f | ||
| 41 | ands ip, r1, #3 | ||
| 42 | bne 8f | ||
| 43 | 19 | ||
| 44 | 1: subs r2, r2, #8 | 20 | .macro ldr4w ptr reg1 reg2 reg3 reg4 abort |
| 45 | blt 5f | 21 | ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4} |
| 46 | subs r2, r2, #20 | 22 | .endm |
| 47 | blt 4f | ||
| 48 | PLD( pld [r1, #28] ) | ||
| 49 | PLD( subs r2, r2, #64 ) | ||
| 50 | PLD( blt 3f ) | ||
| 51 | 2: PLD( pld [r1, #60] ) | ||
| 52 | PLD( pld [r1, #92] ) | ||
| 53 | ldmia r1!, {r3 - r9, ip} | ||
| 54 | subs r2, r2, #32 | ||
| 55 | stmgeia r0!, {r3 - r9, ip} | ||
| 56 | ldmgeia r1!, {r3 - r9, ip} | ||
| 57 | subges r2, r2, #32 | ||
| 58 | stmia r0!, {r3 - r9, ip} | ||
| 59 | bge 2b | ||
| 60 | 3: PLD( ldmia r1!, {r3 - r9, ip} ) | ||
| 61 | PLD( adds r2, r2, #32 ) | ||
| 62 | PLD( stmgeia r0!, {r3 - r9, ip} ) | ||
| 63 | PLD( ldmgeia r1!, {r3 - r9, ip} ) | ||
| 64 | PLD( subges r2, r2, #32 ) | ||
| 65 | PLD( stmia r0!, {r3 - r9, ip} ) | ||
| 66 | 4: cmn r2, #16 | ||
| 67 | ldmgeia r1!, {r3 - r6} | ||
| 68 | subge r2, r2, #16 | ||
| 69 | stmgeia r0!, {r3 - r6} | ||
| 70 | adds r2, r2, #20 | ||
| 71 | ldmgeia r1!, {r3 - r5} | ||
| 72 | subge r2, r2, #12 | ||
| 73 | stmgeia r0!, {r3 - r5} | ||
| 74 | 5: adds r2, r2, #8 | ||
| 75 | blt 6f | ||
| 76 | subs r2, r2, #4 | ||
| 77 | ldrlt r3, [r1], #4 | ||
| 78 | ldmgeia r1!, {r4, r5} | ||
| 79 | subge r2, r2, #4 | ||
| 80 | strlt r3, [r0], #4 | ||
| 81 | stmgeia r0!, {r4, r5} | ||
| 82 | 23 | ||
| 83 | 6: adds r2, r2, #4 | 24 | .macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort |
| 84 | EXITEQ | 25 | ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8} |
| 85 | cmp r2, #2 | 26 | .endm |
| 86 | ldrb r3, [r1], #1 | ||
| 87 | ldrgeb r4, [r1], #1 | ||
| 88 | ldrgtb r5, [r1], #1 | ||
| 89 | strb r3, [r0], #1 | ||
| 90 | strgeb r4, [r0], #1 | ||
| 91 | strgtb r5, [r0], #1 | ||
| 92 | EXIT | ||
| 93 | 27 | ||
| 94 | 7: rsb ip, ip, #4 | 28 | .macro ldr1b ptr reg cond=al abort |
| 95 | cmp ip, #2 | 29 | ldr\cond\()b \reg, [\ptr], #1 |
| 96 | ldrb r3, [r1], #1 | 30 | .endm |
| 97 | ldrgeb r4, [r1], #1 | ||
| 98 | ldrgtb r5, [r1], #1 | ||
| 99 | strb r3, [r0], #1 | ||
| 100 | strgeb r4, [r0], #1 | ||
| 101 | strgtb r5, [r0], #1 | ||
| 102 | subs r2, r2, ip | ||
| 103 | blt 6b | ||
| 104 | ands ip, r1, #3 | ||
| 105 | beq 1b | ||
| 106 | 31 | ||
| 107 | 8: bic r1, r1, #3 | 32 | .macro str1w ptr reg abort |
| 108 | ldr r7, [r1], #4 | 33 | str \reg, [\ptr], #4 |
| 109 | cmp ip, #2 | 34 | .endm |
| 110 | bgt 18f | ||
| 111 | beq 13f | ||
| 112 | cmp r2, #12 | ||
| 113 | blt 11f | ||
| 114 | PLD( pld [r1, #12] ) | ||
| 115 | sub r2, r2, #12 | ||
| 116 | PLD( subs r2, r2, #32 ) | ||
| 117 | PLD( blt 10f ) | ||
| 118 | PLD( pld [r1, #28] ) | ||
| 119 | 9: PLD( pld [r1, #44] ) | ||
| 120 | 10: mov r3, r7, pull #8 | ||
| 121 | ldmia r1!, {r4 - r7} | ||
| 122 | subs r2, r2, #16 | ||
| 123 | orr r3, r3, r4, push #24 | ||
| 124 | mov r4, r4, pull #8 | ||
| 125 | orr r4, r4, r5, push #24 | ||
| 126 | mov r5, r5, pull #8 | ||
| 127 | orr r5, r5, r6, push #24 | ||
| 128 | mov r6, r6, pull #8 | ||
| 129 | orr r6, r6, r7, push #24 | ||
| 130 | stmia r0!, {r3 - r6} | ||
| 131 | bge 9b | ||
| 132 | PLD( cmn r2, #32 ) | ||
| 133 | PLD( bge 10b ) | ||
| 134 | PLD( add r2, r2, #32 ) | ||
| 135 | adds r2, r2, #12 | ||
| 136 | blt 12f | ||
| 137 | 11: mov r3, r7, pull #8 | ||
| 138 | ldr r7, [r1], #4 | ||
| 139 | subs r2, r2, #4 | ||
| 140 | orr r3, r3, r7, push #24 | ||
| 141 | str r3, [r0], #4 | ||
| 142 | bge 11b | ||
| 143 | 12: sub r1, r1, #3 | ||
| 144 | b 6b | ||
| 145 | 35 | ||
| 146 | 13: cmp r2, #12 | 36 | .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort |
| 147 | blt 16f | 37 | stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8} |
| 148 | PLD( pld [r1, #12] ) | 38 | .endm |
| 149 | sub r2, r2, #12 | ||
| 150 | PLD( subs r2, r2, #32 ) | ||
| 151 | PLD( blt 15f ) | ||
| 152 | PLD( pld [r1, #28] ) | ||
| 153 | 14: PLD( pld [r1, #44] ) | ||
| 154 | 15: mov r3, r7, pull #16 | ||
| 155 | ldmia r1!, {r4 - r7} | ||
| 156 | subs r2, r2, #16 | ||
| 157 | orr r3, r3, r4, push #16 | ||
| 158 | mov r4, r4, pull #16 | ||
| 159 | orr r4, r4, r5, push #16 | ||
| 160 | mov r5, r5, pull #16 | ||
| 161 | orr r5, r5, r6, push #16 | ||
| 162 | mov r6, r6, pull #16 | ||
| 163 | orr r6, r6, r7, push #16 | ||
| 164 | stmia r0!, {r3 - r6} | ||
| 165 | bge 14b | ||
| 166 | PLD( cmn r2, #32 ) | ||
| 167 | PLD( bge 15b ) | ||
| 168 | PLD( add r2, r2, #32 ) | ||
| 169 | adds r2, r2, #12 | ||
| 170 | blt 17f | ||
| 171 | 16: mov r3, r7, pull #16 | ||
| 172 | ldr r7, [r1], #4 | ||
| 173 | subs r2, r2, #4 | ||
| 174 | orr r3, r3, r7, push #16 | ||
| 175 | str r3, [r0], #4 | ||
| 176 | bge 16b | ||
| 177 | 17: sub r1, r1, #2 | ||
| 178 | b 6b | ||
| 179 | 39 | ||
| 180 | 18: cmp r2, #12 | 40 | .macro str1b ptr reg cond=al abort |
| 181 | blt 21f | 41 | str\cond\()b \reg, [\ptr], #1 |
| 182 | PLD( pld [r1, #12] ) | 42 | .endm |
| 183 | sub r2, r2, #12 | ||
| 184 | PLD( subs r2, r2, #32 ) | ||
| 185 | PLD( blt 20f ) | ||
| 186 | PLD( pld [r1, #28] ) | ||
| 187 | 19: PLD( pld [r1, #44] ) | ||
| 188 | 20: mov r3, r7, pull #24 | ||
| 189 | ldmia r1!, {r4 - r7} | ||
| 190 | subs r2, r2, #16 | ||
| 191 | orr r3, r3, r4, push #8 | ||
| 192 | mov r4, r4, pull #24 | ||
| 193 | orr r4, r4, r5, push #8 | ||
| 194 | mov r5, r5, pull #24 | ||
| 195 | orr r5, r5, r6, push #8 | ||
| 196 | mov r6, r6, pull #24 | ||
| 197 | orr r6, r6, r7, push #8 | ||
| 198 | stmia r0!, {r3 - r6} | ||
| 199 | bge 19b | ||
| 200 | PLD( cmn r2, #32 ) | ||
| 201 | PLD( bge 20b ) | ||
| 202 | PLD( add r2, r2, #32 ) | ||
| 203 | adds r2, r2, #12 | ||
| 204 | blt 22f | ||
| 205 | 21: mov r3, r7, pull #24 | ||
| 206 | ldr r7, [r1], #4 | ||
| 207 | subs r2, r2, #4 | ||
| 208 | orr r3, r3, r7, push #8 | ||
| 209 | str r3, [r0], #4 | ||
| 210 | bge 21b | ||
| 211 | 22: sub r1, r1, #1 | ||
| 212 | b 6b | ||
| 213 | 43 | ||
| 44 | .macro enter reg1 reg2 | ||
| 45 | stmdb sp!, {r0, \reg1, \reg2} | ||
| 46 | .endm | ||
| 214 | 47 | ||
| 215 | 23: add r1, r1, r2 | 48 | .macro exit reg1 reg2 |
| 216 | add r0, r0, r2 | 49 | ldmfd sp!, {r0, \reg1, \reg2} |
| 217 | subs r2, r2, #4 | 50 | .endm |
| 218 | blt 29f | ||
| 219 | PLD( pld [r1, #-4] ) | ||
| 220 | ands ip, r0, #3 | ||
| 221 | bne 30f | ||
| 222 | ands ip, r1, #3 | ||
| 223 | bne 31f | ||
| 224 | 51 | ||
| 225 | 24: subs r2, r2, #8 | 52 | .text |
| 226 | blt 28f | ||
| 227 | subs r2, r2, #20 | ||
| 228 | blt 27f | ||
| 229 | PLD( pld [r1, #-32] ) | ||
| 230 | PLD( subs r2, r2, #64 ) | ||
| 231 | PLD( blt 26f ) | ||
| 232 | 25: PLD( pld [r1, #-64] ) | ||
| 233 | PLD( pld [r1, #-96] ) | ||
| 234 | ldmdb r1!, {r3 - r9, ip} | ||
| 235 | subs r2, r2, #32 | ||
| 236 | stmgedb r0!, {r3 - r9, ip} | ||
| 237 | ldmgedb r1!, {r3 - r9, ip} | ||
| 238 | subges r2, r2, #32 | ||
| 239 | stmdb r0!, {r3 - r9, ip} | ||
| 240 | bge 25b | ||
| 241 | 26: PLD( ldmdb r1!, {r3 - r9, ip} ) | ||
| 242 | PLD( adds r2, r2, #32 ) | ||
| 243 | PLD( stmgedb r0!, {r3 - r9, ip} ) | ||
| 244 | PLD( ldmgedb r1!, {r3 - r9, ip} ) | ||
| 245 | PLD( subges r2, r2, #32 ) | ||
| 246 | PLD( stmdb r0!, {r3 - r9, ip} ) | ||
| 247 | 27: cmn r2, #16 | ||
| 248 | ldmgedb r1!, {r3 - r6} | ||
| 249 | subge r2, r2, #16 | ||
| 250 | stmgedb r0!, {r3 - r6} | ||
| 251 | adds r2, r2, #20 | ||
| 252 | ldmgedb r1!, {r3 - r5} | ||
| 253 | subge r2, r2, #12 | ||
| 254 | stmgedb r0!, {r3 - r5} | ||
| 255 | 28: adds r2, r2, #8 | ||
| 256 | blt 29f | ||
| 257 | subs r2, r2, #4 | ||
| 258 | ldrlt r3, [r1, #-4]! | ||
| 259 | ldmgedb r1!, {r4, r5} | ||
| 260 | subge r2, r2, #4 | ||
| 261 | strlt r3, [r0, #-4]! | ||
| 262 | stmgedb r0!, {r4, r5} | ||
| 263 | 53 | ||
| 264 | 29: adds r2, r2, #4 | 54 | /* Prototype: void *memcpy(void *dest, const void *src, size_t n); */ |
| 265 | EXITEQ | ||
| 266 | cmp r2, #2 | ||
| 267 | ldrb r3, [r1, #-1]! | ||
| 268 | ldrgeb r4, [r1, #-1]! | ||
| 269 | ldrgtb r5, [r1, #-1]! | ||
| 270 | strb r3, [r0, #-1]! | ||
| 271 | strgeb r4, [r0, #-1]! | ||
| 272 | strgtb r5, [r0, #-1]! | ||
| 273 | EXIT | ||
| 274 | 55 | ||
| 275 | 30: cmp ip, #2 | 56 | ENTRY(memcpy) |
| 276 | ldrb r3, [r1, #-1]! | ||
| 277 | ldrgeb r4, [r1, #-1]! | ||
| 278 | ldrgtb r5, [r1, #-1]! | ||
| 279 | strb r3, [r0, #-1]! | ||
| 280 | strgeb r4, [r0, #-1]! | ||
| 281 | strgtb r5, [r0, #-1]! | ||
| 282 | subs r2, r2, ip | ||
| 283 | blt 29b | ||
| 284 | ands ip, r1, #3 | ||
| 285 | beq 24b | ||
| 286 | |||
| 287 | 31: bic r1, r1, #3 | ||
| 288 | ldr r3, [r1], #0 | ||
| 289 | cmp ip, #2 | ||
| 290 | blt 41f | ||
| 291 | beq 36f | ||
| 292 | cmp r2, #12 | ||
| 293 | blt 34f | ||
| 294 | PLD( pld [r1, #-16] ) | ||
| 295 | sub r2, r2, #12 | ||
| 296 | PLD( subs r2, r2, #32 ) | ||
| 297 | PLD( blt 33f ) | ||
| 298 | PLD( pld [r1, #-32] ) | ||
| 299 | 32: PLD( pld [r1, #-48] ) | ||
| 300 | 33: mov r7, r3, push #8 | ||
| 301 | ldmdb r1!, {r3, r4, r5, r6} | ||
| 302 | subs r2, r2, #16 | ||
| 303 | orr r7, r7, r6, pull #24 | ||
| 304 | mov r6, r6, push #8 | ||
| 305 | orr r6, r6, r5, pull #24 | ||
| 306 | mov r5, r5, push #8 | ||
| 307 | orr r5, r5, r4, pull #24 | ||
| 308 | mov r4, r4, push #8 | ||
| 309 | orr r4, r4, r3, pull #24 | ||
| 310 | stmdb r0!, {r4, r5, r6, r7} | ||
| 311 | bge 32b | ||
| 312 | PLD( cmn r2, #32 ) | ||
| 313 | PLD( bge 33b ) | ||
| 314 | PLD( add r2, r2, #32 ) | ||
| 315 | adds r2, r2, #12 | ||
| 316 | blt 35f | ||
| 317 | 34: mov ip, r3, push #8 | ||
| 318 | ldr r3, [r1, #-4]! | ||
| 319 | subs r2, r2, #4 | ||
| 320 | orr ip, ip, r3, pull #24 | ||
| 321 | str ip, [r0, #-4]! | ||
| 322 | bge 34b | ||
| 323 | 35: add r1, r1, #3 | ||
| 324 | b 29b | ||
| 325 | |||
| 326 | 36: cmp r2, #12 | ||
| 327 | blt 39f | ||
| 328 | PLD( pld [r1, #-16] ) | ||
| 329 | sub r2, r2, #12 | ||
| 330 | PLD( subs r2, r2, #32 ) | ||
| 331 | PLD( blt 38f ) | ||
| 332 | PLD( pld [r1, #-32] ) | ||
| 333 | 37: PLD( pld [r1, #-48] ) | ||
| 334 | 38: mov r7, r3, push #16 | ||
| 335 | ldmdb r1!, {r3, r4, r5, r6} | ||
| 336 | subs r2, r2, #16 | ||
| 337 | orr r7, r7, r6, pull #16 | ||
| 338 | mov r6, r6, push #16 | ||
| 339 | orr r6, r6, r5, pull #16 | ||
| 340 | mov r5, r5, push #16 | ||
| 341 | orr r5, r5, r4, pull #16 | ||
| 342 | mov r4, r4, push #16 | ||
| 343 | orr r4, r4, r3, pull #16 | ||
| 344 | stmdb r0!, {r4, r5, r6, r7} | ||
| 345 | bge 37b | ||
| 346 | PLD( cmn r2, #32 ) | ||
| 347 | PLD( bge 38b ) | ||
| 348 | PLD( add r2, r2, #32 ) | ||
| 349 | adds r2, r2, #12 | ||
| 350 | blt 40f | ||
| 351 | 39: mov ip, r3, push #16 | ||
| 352 | ldr r3, [r1, #-4]! | ||
| 353 | subs r2, r2, #4 | ||
| 354 | orr ip, ip, r3, pull #16 | ||
| 355 | str ip, [r0, #-4]! | ||
| 356 | bge 39b | ||
| 357 | 40: add r1, r1, #2 | ||
| 358 | b 29b | ||
| 359 | 57 | ||
| 360 | 41: cmp r2, #12 | 58 | #include "copy_template.S" |
| 361 | blt 44f | ||
| 362 | PLD( pld [r1, #-16] ) | ||
| 363 | sub r2, r2, #12 | ||
| 364 | PLD( subs r2, r2, #32 ) | ||
| 365 | PLD( blt 43f ) | ||
| 366 | PLD( pld [r1, #-32] ) | ||
| 367 | 42: PLD( pld [r1, #-48] ) | ||
| 368 | 43: mov r7, r3, push #24 | ||
| 369 | ldmdb r1!, {r3, r4, r5, r6} | ||
| 370 | subs r2, r2, #16 | ||
| 371 | orr r7, r7, r6, pull #8 | ||
| 372 | mov r6, r6, push #24 | ||
| 373 | orr r6, r6, r5, pull #8 | ||
| 374 | mov r5, r5, push #24 | ||
| 375 | orr r5, r5, r4, pull #8 | ||
| 376 | mov r4, r4, push #24 | ||
| 377 | orr r4, r4, r3, pull #8 | ||
| 378 | stmdb r0!, {r4, r5, r6, r7} | ||
| 379 | bge 42b | ||
| 380 | PLD( cmn r2, #32 ) | ||
| 381 | PLD( bge 43b ) | ||
| 382 | PLD( add r2, r2, #32 ) | ||
| 383 | adds r2, r2, #12 | ||
| 384 | blt 45f | ||
| 385 | 44: mov ip, r3, push #24 | ||
| 386 | ldr r3, [r1, #-4]! | ||
| 387 | subs r2, r2, #4 | ||
| 388 | orr ip, ip, r3, pull #8 | ||
| 389 | str ip, [r0, #-4]! | ||
| 390 | bge 44b | ||
| 391 | 45: add r1, r1, #1 | ||
| 392 | b 29b | ||
| 393 | 59 | ||
diff --git a/arch/arm/lib/memmove.S b/arch/arm/lib/memmove.S new file mode 100644 index 000000000000..ef7fddc14ac9 --- /dev/null +++ b/arch/arm/lib/memmove.S | |||
| @@ -0,0 +1,206 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/lib/memmove.S | ||
| 3 | * | ||
| 4 | * Author: Nicolas Pitre | ||
| 5 | * Created: Sep 28, 2005 | ||
| 6 | * Copyright: (C) MontaVista Software Inc. | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/linkage.h> | ||
| 14 | #include <asm/assembler.h> | ||
| 15 | |||
| 16 | /* | ||
| 17 | * This can be used to enable code to cacheline align the source pointer. | ||
| 18 | * Experiments on tested architectures (StrongARM and XScale) didn't show | ||
| 19 | * this a worthwhile thing to do. That might be different in the future. | ||
| 20 | */ | ||
| 21 | //#define CALGN(code...) code | ||
| 22 | #define CALGN(code...) | ||
| 23 | |||
| 24 | .text | ||
| 25 | |||
| 26 | /* | ||
| 27 | * Prototype: void *memmove(void *dest, const void *src, size_t n); | ||
| 28 | * | ||
| 29 | * Note: | ||
| 30 | * | ||
| 31 | * If the memory regions don't overlap, we simply branch to memcpy which is | ||
| 32 | * normally a bit faster. Otherwise the copy is done going downwards. This | ||
| 33 | * is a transposition of the code from copy_template.S but with the copy | ||
| 34 | * occurring in the opposite direction. | ||
| 35 | */ | ||
| 36 | |||
| 37 | ENTRY(memmove) | ||
| 38 | |||
| 39 | subs ip, r0, r1 | ||
| 40 | cmphi r2, ip | ||
| 41 | bls memcpy | ||
| 42 | |||
| 43 | stmfd sp!, {r0, r4, lr} | ||
| 44 | add r1, r1, r2 | ||
| 45 | add r0, r0, r2 | ||
| 46 | subs r2, r2, #4 | ||
| 47 | blt 8f | ||
| 48 | ands ip, r0, #3 | ||
| 49 | PLD( pld [r1, #-4] ) | ||
| 50 | bne 9f | ||
| 51 | ands ip, r1, #3 | ||
| 52 | bne 10f | ||
| 53 | |||
| 54 | 1: subs r2, r2, #(28) | ||
| 55 | stmfd sp!, {r5 - r8} | ||
| 56 | blt 5f | ||
| 57 | |||
| 58 | CALGN( ands ip, r1, #31 ) | ||
| 59 | CALGN( sbcnes r4, ip, r2 ) @ C is always set here | ||
| 60 | CALGN( bcs 2f ) | ||
| 61 | CALGN( adr r4, 6f ) | ||
| 62 | CALGN( subs r2, r2, ip ) @ C is set here | ||
| 63 | CALGN( add pc, r4, ip ) | ||
| 64 | |||
| 65 | PLD( pld [r1, #-4] ) | ||
| 66 | 2: PLD( subs r2, r2, #96 ) | ||
| 67 | PLD( pld [r1, #-32] ) | ||
| 68 | PLD( blt 4f ) | ||
| 69 | PLD( pld [r1, #-64] ) | ||
| 70 | PLD( pld [r1, #-96] ) | ||
| 71 | |||
| 72 | 3: PLD( pld [r1, #-128] ) | ||
| 73 | 4: ldmdb r1!, {r3, r4, r5, r6, r7, r8, ip, lr} | ||
| 74 | subs r2, r2, #32 | ||
| 75 | stmdb r0!, {r3, r4, r5, r6, r7, r8, ip, lr} | ||
| 76 | bge 3b | ||
| 77 | PLD( cmn r2, #96 ) | ||
| 78 | PLD( bge 4b ) | ||
| 79 | |||
| 80 | 5: ands ip, r2, #28 | ||
| 81 | rsb ip, ip, #32 | ||
| 82 | addne pc, pc, ip @ C is always clear here | ||
| 83 | b 7f | ||
| 84 | 6: nop | ||
| 85 | ldr r3, [r1, #-4]! | ||
| 86 | ldr r4, [r1, #-4]! | ||
| 87 | ldr r5, [r1, #-4]! | ||
| 88 | ldr r6, [r1, #-4]! | ||
| 89 | ldr r7, [r1, #-4]! | ||
| 90 | ldr r8, [r1, #-4]! | ||
| 91 | ldr lr, [r1, #-4]! | ||
| 92 | |||
| 93 | add pc, pc, ip | ||
| 94 | nop | ||
| 95 | nop | ||
| 96 | str r3, [r0, #-4]! | ||
| 97 | str r4, [r0, #-4]! | ||
| 98 | str r5, [r0, #-4]! | ||
| 99 | str r6, [r0, #-4]! | ||
| 100 | str r7, [r0, #-4]! | ||
| 101 | str r8, [r0, #-4]! | ||
| 102 | str lr, [r0, #-4]! | ||
| 103 | |||
| 104 | CALGN( bcs 2b ) | ||
| 105 | |||
| 106 | 7: ldmfd sp!, {r5 - r8} | ||
| 107 | |||
| 108 | 8: movs r2, r2, lsl #31 | ||
| 109 | ldrneb r3, [r1, #-1]! | ||
| 110 | ldrcsb r4, [r1, #-1]! | ||
| 111 | ldrcsb ip, [r1, #-1] | ||
| 112 | strneb r3, [r0, #-1]! | ||
| 113 | strcsb r4, [r0, #-1]! | ||
| 114 | strcsb ip, [r0, #-1] | ||
| 115 | ldmfd sp!, {r0, r4, pc} | ||
| 116 | |||
| 117 | 9: cmp ip, #2 | ||
| 118 | ldrgtb r3, [r1, #-1]! | ||
| 119 | ldrgeb r4, [r1, #-1]! | ||
| 120 | ldrb lr, [r1, #-1]! | ||
| 121 | strgtb r3, [r0, #-1]! | ||
| 122 | strgeb r4, [r0, #-1]! | ||
| 123 | subs r2, r2, ip | ||
| 124 | strb lr, [r0, #-1]! | ||
| 125 | blt 8b | ||
| 126 | ands ip, r1, #3 | ||
| 127 | beq 1b | ||
| 128 | |||
| 129 | 10: bic r1, r1, #3 | ||
| 130 | cmp ip, #2 | ||
| 131 | ldr r3, [r1, #0] | ||
| 132 | beq 17f | ||
| 133 | blt 18f | ||
| 134 | |||
| 135 | |||
| 136 | .macro backward_copy_shift push pull | ||
| 137 | |||
| 138 | subs r2, r2, #28 | ||
| 139 | blt 14f | ||
| 140 | |||
| 141 | CALGN( ands ip, r1, #31 ) | ||
| 142 | CALGN( rsb ip, ip, #32 ) | ||
| 143 | CALGN( sbcnes r4, ip, r2 ) @ C is always set here | ||
| 144 | CALGN( subcc r2, r2, ip ) | ||
| 145 | CALGN( bcc 15f ) | ||
| 146 | |||
| 147 | 11: stmfd sp!, {r5 - r9} | ||
| 148 | |||
| 149 | PLD( pld [r1, #-4] ) | ||
| 150 | PLD( subs r2, r2, #96 ) | ||
| 151 | PLD( pld [r1, #-32] ) | ||
| 152 | PLD( blt 13f ) | ||
| 153 | PLD( pld [r1, #-64] ) | ||
| 154 | PLD( pld [r1, #-96] ) | ||
| 155 | |||
| 156 | 12: PLD( pld [r1, #-128] ) | ||
| 157 | 13: ldmdb r1!, {r7, r8, r9, ip} | ||
| 158 | mov lr, r3, push #\push | ||
| 159 | subs r2, r2, #32 | ||
| 160 | ldmdb r1!, {r3, r4, r5, r6} | ||
| 161 | orr lr, lr, ip, pull #\pull | ||
| 162 | mov ip, ip, push #\push | ||
| 163 | orr ip, ip, r9, pull #\pull | ||
| 164 | mov r9, r9, push #\push | ||
| 165 | orr r9, r9, r8, pull #\pull | ||
| 166 | mov r8, r8, push #\push | ||
| 167 | orr r8, r8, r7, pull #\pull | ||
| 168 | mov r7, r7, push #\push | ||
| 169 | orr r7, r7, r6, pull #\pull | ||
| 170 | mov r6, r6, push #\push | ||
| 171 | orr r6, r6, r5, pull #\pull | ||
| 172 | mov r5, r5, push #\push | ||
| 173 | orr r5, r5, r4, pull #\pull | ||
| 174 | mov r4, r4, push #\push | ||
| 175 | orr r4, r4, r3, pull #\pull | ||
| 176 | stmdb r0!, {r4 - r9, ip, lr} | ||
| 177 | bge 12b | ||
| 178 | PLD( cmn r2, #96 ) | ||
| 179 | PLD( bge 13b ) | ||
| 180 | |||
| 181 | ldmfd sp!, {r5 - r9} | ||
| 182 | |||
| 183 | 14: ands ip, r2, #28 | ||
| 184 | beq 16f | ||
| 185 | |||
| 186 | 15: mov lr, r3, push #\push | ||
| 187 | ldr r3, [r1, #-4]! | ||
| 188 | subs ip, ip, #4 | ||
| 189 | orr lr, lr, r3, pull #\pull | ||
| 190 | str lr, [r0, #-4]! | ||
| 191 | bgt 15b | ||
| 192 | CALGN( cmp r2, #0 ) | ||
| 193 | CALGN( bge 11b ) | ||
| 194 | |||
| 195 | 16: add r1, r1, #(\pull / 8) | ||
| 196 | b 8b | ||
| 197 | |||
| 198 | .endm | ||
| 199 | |||
| 200 | |||
| 201 | backward_copy_shift push=8 pull=24 | ||
| 202 | |||
| 203 | 17: backward_copy_shift push=16 pull=16 | ||
| 204 | |||
| 205 | 18: backward_copy_shift push=24 pull=8 | ||
| 206 | |||
diff --git a/arch/arm/lib/uaccess.S b/arch/arm/lib/uaccess.S index d3ed0636c008..6f1b5b49fe4c 100644 --- a/arch/arm/lib/uaccess.S +++ b/arch/arm/lib/uaccess.S | |||
| @@ -43,8 +43,6 @@ ENTRY(__arch_copy_to_user) | |||
| 43 | stmfd sp!, {r2, r4 - r7, lr} | 43 | stmfd sp!, {r2, r4 - r7, lr} |
| 44 | cmp r2, #4 | 44 | cmp r2, #4 |
| 45 | blt .c2u_not_enough | 45 | blt .c2u_not_enough |
| 46 | PLD( pld [r1, #0] ) | ||
| 47 | PLD( pld [r0, #0] ) | ||
| 48 | ands ip, r0, #3 | 46 | ands ip, r0, #3 |
| 49 | bne .c2u_dest_not_aligned | 47 | bne .c2u_dest_not_aligned |
| 50 | .c2u_dest_aligned: | 48 | .c2u_dest_aligned: |
| @@ -73,25 +71,13 @@ USER( strt r3, [r0], #4) @ May fault | |||
| 73 | sub r2, r2, ip | 71 | sub r2, r2, ip |
| 74 | subs ip, ip, #32 | 72 | subs ip, ip, #32 |
| 75 | blt .c2u_0rem8lp | 73 | blt .c2u_0rem8lp |
| 76 | PLD( pld [r1, #28] ) | 74 | |
| 77 | PLD( pld [r0, #28] ) | 75 | .c2u_0cpy8lp: ldmia r1!, {r3 - r6} |
| 78 | PLD( subs ip, ip, #64 ) | ||
| 79 | PLD( blt .c2u_0cpynopld ) | ||
| 80 | PLD( pld [r1, #60] ) | ||
| 81 | PLD( pld [r0, #60] ) | ||
| 82 | |||
| 83 | .c2u_0cpy8lp: | ||
| 84 | PLD( pld [r1, #92] ) | ||
| 85 | PLD( pld [r0, #92] ) | ||
| 86 | .c2u_0cpynopld: ldmia r1!, {r3 - r6} | ||
| 87 | stmia r0!, {r3 - r6} @ Shouldnt fault | 76 | stmia r0!, {r3 - r6} @ Shouldnt fault |
| 88 | ldmia r1!, {r3 - r6} | 77 | ldmia r1!, {r3 - r6} |
| 89 | subs ip, ip, #32 | 78 | subs ip, ip, #32 |
| 90 | stmia r0!, {r3 - r6} @ Shouldnt fault | 79 | stmia r0!, {r3 - r6} @ Shouldnt fault |
| 91 | bpl .c2u_0cpy8lp | 80 | bpl .c2u_0cpy8lp |
| 92 | PLD( cmn ip, #64 ) | ||
| 93 | PLD( bge .c2u_0cpynopld ) | ||
| 94 | PLD( add ip, ip, #64 ) | ||
| 95 | 81 | ||
| 96 | .c2u_0rem8lp: cmn ip, #16 | 82 | .c2u_0rem8lp: cmn ip, #16 |
| 97 | ldmgeia r1!, {r3 - r6} | 83 | ldmgeia r1!, {r3 - r6} |
| @@ -143,17 +129,8 @@ USER( strt r3, [r0], #4) @ May fault | |||
| 143 | sub r2, r2, ip | 129 | sub r2, r2, ip |
| 144 | subs ip, ip, #16 | 130 | subs ip, ip, #16 |
| 145 | blt .c2u_1rem8lp | 131 | blt .c2u_1rem8lp |
| 146 | PLD( pld [r1, #12] ) | 132 | |
| 147 | PLD( pld [r0, #12] ) | 133 | .c2u_1cpy8lp: mov r3, r7, pull #8 |
| 148 | PLD( subs ip, ip, #32 ) | ||
| 149 | PLD( blt .c2u_1cpynopld ) | ||
| 150 | PLD( pld [r1, #28] ) | ||
| 151 | PLD( pld [r0, #28] ) | ||
| 152 | |||
| 153 | .c2u_1cpy8lp: | ||
| 154 | PLD( pld [r1, #44] ) | ||
| 155 | PLD( pld [r0, #44] ) | ||
| 156 | .c2u_1cpynopld: mov r3, r7, pull #8 | ||
| 157 | ldmia r1!, {r4 - r7} | 134 | ldmia r1!, {r4 - r7} |
| 158 | subs ip, ip, #16 | 135 | subs ip, ip, #16 |
| 159 | orr r3, r3, r4, push #24 | 136 | orr r3, r3, r4, push #24 |
| @@ -165,9 +142,6 @@ USER( strt r3, [r0], #4) @ May fault | |||
| 165 | orr r6, r6, r7, push #24 | 142 | orr r6, r6, r7, push #24 |
| 166 | stmia r0!, {r3 - r6} @ Shouldnt fault | 143 | stmia r0!, {r3 - r6} @ Shouldnt fault |
| 167 | bpl .c2u_1cpy8lp | 144 | bpl .c2u_1cpy8lp |
| 168 | PLD( cmn ip, #32 ) | ||
| 169 | PLD( bge .c2u_1cpynopld ) | ||
| 170 | PLD( add ip, ip, #32 ) | ||
| 171 | 145 | ||
| 172 | .c2u_1rem8lp: tst ip, #8 | 146 | .c2u_1rem8lp: tst ip, #8 |
| 173 | movne r3, r7, pull #8 | 147 | movne r3, r7, pull #8 |
| @@ -210,17 +184,8 @@ USER( strt r3, [r0], #4) @ May fault | |||
| 210 | sub r2, r2, ip | 184 | sub r2, r2, ip |
| 211 | subs ip, ip, #16 | 185 | subs ip, ip, #16 |
| 212 | blt .c2u_2rem8lp | 186 | blt .c2u_2rem8lp |
| 213 | PLD( pld [r1, #12] ) | 187 | |
| 214 | PLD( pld [r0, #12] ) | 188 | .c2u_2cpy8lp: mov r3, r7, pull #16 |
| 215 | PLD( subs ip, ip, #32 ) | ||
| 216 | PLD( blt .c2u_2cpynopld ) | ||
| 217 | PLD( pld [r1, #28] ) | ||
| 218 | PLD( pld [r0, #28] ) | ||
| 219 | |||
| 220 | .c2u_2cpy8lp: | ||
| 221 | PLD( pld [r1, #44] ) | ||
| 222 | PLD( pld [r0, #44] ) | ||
| 223 | .c2u_2cpynopld: mov r3, r7, pull #16 | ||
| 224 | ldmia r1!, {r4 - r7} | 189 | ldmia r1!, {r4 - r7} |
| 225 | subs ip, ip, #16 | 190 | subs ip, ip, #16 |
| 226 | orr r3, r3, r4, push #16 | 191 | orr r3, r3, r4, push #16 |
| @@ -232,9 +197,6 @@ USER( strt r3, [r0], #4) @ May fault | |||
| 232 | orr r6, r6, r7, push #16 | 197 | orr r6, r6, r7, push #16 |
| 233 | stmia r0!, {r3 - r6} @ Shouldnt fault | 198 | stmia r0!, {r3 - r6} @ Shouldnt fault |
| 234 | bpl .c2u_2cpy8lp | 199 | bpl .c2u_2cpy8lp |
| 235 | PLD( cmn ip, #32 ) | ||
| 236 | PLD( bge .c2u_2cpynopld ) | ||
| 237 | PLD( add ip, ip, #32 ) | ||
| 238 | 200 | ||
| 239 | .c2u_2rem8lp: tst ip, #8 | 201 | .c2u_2rem8lp: tst ip, #8 |
| 240 | movne r3, r7, pull #16 | 202 | movne r3, r7, pull #16 |
| @@ -277,17 +239,8 @@ USER( strt r3, [r0], #4) @ May fault | |||
| 277 | sub r2, r2, ip | 239 | sub r2, r2, ip |
| 278 | subs ip, ip, #16 | 240 | subs ip, ip, #16 |
| 279 | blt .c2u_3rem8lp | 241 | blt .c2u_3rem8lp |
| 280 | PLD( pld [r1, #12] ) | 242 | |
| 281 | PLD( pld [r0, #12] ) | 243 | .c2u_3cpy8lp: mov r3, r7, pull #24 |
| 282 | PLD( subs ip, ip, #32 ) | ||
| 283 | PLD( blt .c2u_3cpynopld ) | ||
| 284 | PLD( pld [r1, #28] ) | ||
| 285 | PLD( pld [r0, #28] ) | ||
| 286 | |||
| 287 | .c2u_3cpy8lp: | ||
| 288 | PLD( pld [r1, #44] ) | ||
| 289 | PLD( pld [r0, #44] ) | ||
| 290 | .c2u_3cpynopld: mov r3, r7, pull #24 | ||
| 291 | ldmia r1!, {r4 - r7} | 244 | ldmia r1!, {r4 - r7} |
| 292 | subs ip, ip, #16 | 245 | subs ip, ip, #16 |
| 293 | orr r3, r3, r4, push #8 | 246 | orr r3, r3, r4, push #8 |
| @@ -299,9 +252,6 @@ USER( strt r3, [r0], #4) @ May fault | |||
| 299 | orr r6, r6, r7, push #8 | 252 | orr r6, r6, r7, push #8 |
| 300 | stmia r0!, {r3 - r6} @ Shouldnt fault | 253 | stmia r0!, {r3 - r6} @ Shouldnt fault |
| 301 | bpl .c2u_3cpy8lp | 254 | bpl .c2u_3cpy8lp |
| 302 | PLD( cmn ip, #32 ) | ||
| 303 | PLD( bge .c2u_3cpynopld ) | ||
| 304 | PLD( add ip, ip, #32 ) | ||
| 305 | 255 | ||
| 306 | .c2u_3rem8lp: tst ip, #8 | 256 | .c2u_3rem8lp: tst ip, #8 |
| 307 | movne r3, r7, pull #24 | 257 | movne r3, r7, pull #24 |
| @@ -356,8 +306,6 @@ ENTRY(__arch_copy_from_user) | |||
| 356 | stmfd sp!, {r0, r2, r4 - r7, lr} | 306 | stmfd sp!, {r0, r2, r4 - r7, lr} |
| 357 | cmp r2, #4 | 307 | cmp r2, #4 |
| 358 | blt .cfu_not_enough | 308 | blt .cfu_not_enough |
| 359 | PLD( pld [r1, #0] ) | ||
| 360 | PLD( pld [r0, #0] ) | ||
| 361 | ands ip, r0, #3 | 309 | ands ip, r0, #3 |
| 362 | bne .cfu_dest_not_aligned | 310 | bne .cfu_dest_not_aligned |
| 363 | .cfu_dest_aligned: | 311 | .cfu_dest_aligned: |
| @@ -385,25 +333,13 @@ USER( ldrt r3, [r1], #4) | |||
| 385 | sub r2, r2, ip | 333 | sub r2, r2, ip |
| 386 | subs ip, ip, #32 | 334 | subs ip, ip, #32 |
| 387 | blt .cfu_0rem8lp | 335 | blt .cfu_0rem8lp |
| 388 | PLD( pld [r1, #28] ) | 336 | |
| 389 | PLD( pld [r0, #28] ) | 337 | .cfu_0cpy8lp: ldmia r1!, {r3 - r6} @ Shouldnt fault |
| 390 | PLD( subs ip, ip, #64 ) | ||
| 391 | PLD( blt .cfu_0cpynopld ) | ||
| 392 | PLD( pld [r1, #60] ) | ||
| 393 | PLD( pld [r0, #60] ) | ||
| 394 | |||
| 395 | .cfu_0cpy8lp: | ||
| 396 | PLD( pld [r1, #92] ) | ||
| 397 | PLD( pld [r0, #92] ) | ||
| 398 | .cfu_0cpynopld: ldmia r1!, {r3 - r6} @ Shouldnt fault | ||
| 399 | stmia r0!, {r3 - r6} | 338 | stmia r0!, {r3 - r6} |
| 400 | ldmia r1!, {r3 - r6} @ Shouldnt fault | 339 | ldmia r1!, {r3 - r6} @ Shouldnt fault |
| 401 | subs ip, ip, #32 | 340 | subs ip, ip, #32 |
| 402 | stmia r0!, {r3 - r6} | 341 | stmia r0!, {r3 - r6} |
| 403 | bpl .cfu_0cpy8lp | 342 | bpl .cfu_0cpy8lp |
| 404 | PLD( cmn ip, #64 ) | ||
| 405 | PLD( bge .cfu_0cpynopld ) | ||
| 406 | PLD( add ip, ip, #64 ) | ||
| 407 | 343 | ||
| 408 | .cfu_0rem8lp: cmn ip, #16 | 344 | .cfu_0rem8lp: cmn ip, #16 |
| 409 | ldmgeia r1!, {r3 - r6} @ Shouldnt fault | 345 | ldmgeia r1!, {r3 - r6} @ Shouldnt fault |
| @@ -456,17 +392,8 @@ USER( ldrt r7, [r1], #4) @ May fault | |||
| 456 | sub r2, r2, ip | 392 | sub r2, r2, ip |
| 457 | subs ip, ip, #16 | 393 | subs ip, ip, #16 |
| 458 | blt .cfu_1rem8lp | 394 | blt .cfu_1rem8lp |
| 459 | PLD( pld [r1, #12] ) | 395 | |
| 460 | PLD( pld [r0, #12] ) | 396 | .cfu_1cpy8lp: mov r3, r7, pull #8 |
| 461 | PLD( subs ip, ip, #32 ) | ||
| 462 | PLD( blt .cfu_1cpynopld ) | ||
| 463 | PLD( pld [r1, #28] ) | ||
| 464 | PLD( pld [r0, #28] ) | ||
| 465 | |||
| 466 | .cfu_1cpy8lp: | ||
| 467 | PLD( pld [r1, #44] ) | ||
| 468 | PLD( pld [r0, #44] ) | ||
| 469 | .cfu_1cpynopld: mov r3, r7, pull #8 | ||
| 470 | ldmia r1!, {r4 - r7} @ Shouldnt fault | 397 | ldmia r1!, {r4 - r7} @ Shouldnt fault |
| 471 | subs ip, ip, #16 | 398 | subs ip, ip, #16 |
| 472 | orr r3, r3, r4, push #24 | 399 | orr r3, r3, r4, push #24 |
| @@ -478,9 +405,6 @@ USER( ldrt r7, [r1], #4) @ May fault | |||
| 478 | orr r6, r6, r7, push #24 | 405 | orr r6, r6, r7, push #24 |
| 479 | stmia r0!, {r3 - r6} | 406 | stmia r0!, {r3 - r6} |
| 480 | bpl .cfu_1cpy8lp | 407 | bpl .cfu_1cpy8lp |
| 481 | PLD( cmn ip, #32 ) | ||
| 482 | PLD( bge .cfu_1cpynopld ) | ||
| 483 | PLD( add ip, ip, #32 ) | ||
| 484 | 408 | ||
| 485 | .cfu_1rem8lp: tst ip, #8 | 409 | .cfu_1rem8lp: tst ip, #8 |
| 486 | movne r3, r7, pull #8 | 410 | movne r3, r7, pull #8 |
| @@ -523,17 +447,8 @@ USER( ldrt r7, [r1], #4) @ May fault | |||
| 523 | sub r2, r2, ip | 447 | sub r2, r2, ip |
| 524 | subs ip, ip, #16 | 448 | subs ip, ip, #16 |
| 525 | blt .cfu_2rem8lp | 449 | blt .cfu_2rem8lp |
| 526 | PLD( pld [r1, #12] ) | 450 | |
| 527 | PLD( pld [r0, #12] ) | 451 | .cfu_2cpy8lp: mov r3, r7, pull #16 |
| 528 | PLD( subs ip, ip, #32 ) | ||
| 529 | PLD( blt .cfu_2cpynopld ) | ||
| 530 | PLD( pld [r1, #28] ) | ||
| 531 | PLD( pld [r0, #28] ) | ||
| 532 | |||
| 533 | .cfu_2cpy8lp: | ||
| 534 | PLD( pld [r1, #44] ) | ||
| 535 | PLD( pld [r0, #44] ) | ||
| 536 | .cfu_2cpynopld: mov r3, r7, pull #16 | ||
| 537 | ldmia r1!, {r4 - r7} @ Shouldnt fault | 452 | ldmia r1!, {r4 - r7} @ Shouldnt fault |
| 538 | subs ip, ip, #16 | 453 | subs ip, ip, #16 |
| 539 | orr r3, r3, r4, push #16 | 454 | orr r3, r3, r4, push #16 |
| @@ -545,9 +460,6 @@ USER( ldrt r7, [r1], #4) @ May fault | |||
| 545 | orr r6, r6, r7, push #16 | 460 | orr r6, r6, r7, push #16 |
| 546 | stmia r0!, {r3 - r6} | 461 | stmia r0!, {r3 - r6} |
| 547 | bpl .cfu_2cpy8lp | 462 | bpl .cfu_2cpy8lp |
| 548 | PLD( cmn ip, #32 ) | ||
| 549 | PLD( bge .cfu_2cpynopld ) | ||
| 550 | PLD( add ip, ip, #32 ) | ||
| 551 | 463 | ||
| 552 | .cfu_2rem8lp: tst ip, #8 | 464 | .cfu_2rem8lp: tst ip, #8 |
| 553 | movne r3, r7, pull #16 | 465 | movne r3, r7, pull #16 |
| @@ -590,17 +502,8 @@ USER( ldrt r7, [r1], #4) @ May fault | |||
| 590 | sub r2, r2, ip | 502 | sub r2, r2, ip |
| 591 | subs ip, ip, #16 | 503 | subs ip, ip, #16 |
| 592 | blt .cfu_3rem8lp | 504 | blt .cfu_3rem8lp |
| 593 | PLD( pld [r1, #12] ) | 505 | |
| 594 | PLD( pld [r0, #12] ) | 506 | .cfu_3cpy8lp: mov r3, r7, pull #24 |
| 595 | PLD( subs ip, ip, #32 ) | ||
| 596 | PLD( blt .cfu_3cpynopld ) | ||
| 597 | PLD( pld [r1, #28] ) | ||
| 598 | PLD( pld [r0, #28] ) | ||
| 599 | |||
| 600 | .cfu_3cpy8lp: | ||
| 601 | PLD( pld [r1, #44] ) | ||
| 602 | PLD( pld [r0, #44] ) | ||
| 603 | .cfu_3cpynopld: mov r3, r7, pull #24 | ||
| 604 | ldmia r1!, {r4 - r7} @ Shouldnt fault | 507 | ldmia r1!, {r4 - r7} @ Shouldnt fault |
| 605 | orr r3, r3, r4, push #8 | 508 | orr r3, r3, r4, push #8 |
| 606 | mov r4, r4, pull #24 | 509 | mov r4, r4, pull #24 |
| @@ -612,9 +515,6 @@ USER( ldrt r7, [r1], #4) @ May fault | |||
| 612 | stmia r0!, {r3 - r6} | 515 | stmia r0!, {r3 - r6} |
| 613 | subs ip, ip, #16 | 516 | subs ip, ip, #16 |
| 614 | bpl .cfu_3cpy8lp | 517 | bpl .cfu_3cpy8lp |
| 615 | PLD( cmn ip, #32 ) | ||
| 616 | PLD( bge .cfu_3cpynopld ) | ||
| 617 | PLD( add ip, ip, #32 ) | ||
| 618 | 518 | ||
| 619 | .cfu_3rem8lp: tst ip, #8 | 519 | .cfu_3rem8lp: tst ip, #8 |
| 620 | movne r3, r7, pull #24 | 520 | movne r3, r7, pull #24 |
| @@ -657,41 +557,3 @@ USER( ldrgtbt r3, [r1], #1) @ May fault | |||
| 657 | LOADREGS(fd,sp!, {r4 - r7, pc}) | 557 | LOADREGS(fd,sp!, {r4 - r7, pc}) |
| 658 | .previous | 558 | .previous |
| 659 | 559 | ||
| 660 | /* Prototype: int __arch_clear_user(void *addr, size_t sz) | ||
| 661 | * Purpose : clear some user memory | ||
| 662 | * Params : addr - user memory address to clear | ||
| 663 | * : sz - number of bytes to clear | ||
| 664 | * Returns : number of bytes NOT cleared | ||
| 665 | */ | ||
| 666 | ENTRY(__arch_clear_user) | ||
| 667 | stmfd sp!, {r1, lr} | ||
| 668 | mov r2, #0 | ||
| 669 | cmp r1, #4 | ||
| 670 | blt 2f | ||
| 671 | ands ip, r0, #3 | ||
| 672 | beq 1f | ||
| 673 | cmp ip, #2 | ||
| 674 | USER( strbt r2, [r0], #1) | ||
| 675 | USER( strlebt r2, [r0], #1) | ||
| 676 | USER( strltbt r2, [r0], #1) | ||
| 677 | rsb ip, ip, #4 | ||
| 678 | sub r1, r1, ip @ 7 6 5 4 3 2 1 | ||
| 679 | 1: subs r1, r1, #8 @ -1 -2 -3 -4 -5 -6 -7 | ||
| 680 | USER( strplt r2, [r0], #4) | ||
| 681 | USER( strplt r2, [r0], #4) | ||
| 682 | bpl 1b | ||
| 683 | adds r1, r1, #4 @ 3 2 1 0 -1 -2 -3 | ||
| 684 | USER( strplt r2, [r0], #4) | ||
| 685 | 2: tst r1, #2 @ 1x 1x 0x 0x 1x 1x 0x | ||
| 686 | USER( strnebt r2, [r0], #1) | ||
| 687 | USER( strnebt r2, [r0], #1) | ||
| 688 | tst r1, #1 @ x1 x0 x1 x0 x1 x0 x1 | ||
| 689 | USER( strnebt r2, [r0], #1) | ||
| 690 | mov r0, #0 | ||
| 691 | LOADREGS(fd,sp!, {r1, pc}) | ||
| 692 | |||
| 693 | .section .fixup,"ax" | ||
| 694 | .align 0 | ||
| 695 | 9001: LOADREGS(fd,sp!, {r0, pc}) | ||
| 696 | .previous | ||
| 697 | |||
diff --git a/arch/arm/mach-aaec2000/core.c b/arch/arm/mach-aaec2000/core.c index 0c53dab80905..4e706d9ad368 100644 --- a/arch/arm/mach-aaec2000/core.c +++ b/arch/arm/mach-aaec2000/core.c | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
| 14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
| 15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
| 16 | #include <linux/device.h> | 16 | #include <linux/platform_device.h> |
| 17 | #include <linux/list.h> | 17 | #include <linux/list.h> |
| 18 | #include <linux/errno.h> | 18 | #include <linux/errno.h> |
| 19 | #include <linux/dma-mapping.h> | 19 | #include <linux/dma-mapping.h> |
diff --git a/arch/arm/mach-clps711x/Kconfig b/arch/arm/mach-clps711x/Kconfig index d5c155045762..0793dcf54f2e 100644 --- a/arch/arm/mach-clps711x/Kconfig +++ b/arch/arm/mach-clps711x/Kconfig | |||
| @@ -69,17 +69,6 @@ config EP72XX_ROM_BOOT | |||
| 69 | 69 | ||
| 70 | You almost surely want to say N here. | 70 | You almost surely want to say N here. |
| 71 | 71 | ||
| 72 | config MACH_MP1000 | ||
| 73 | bool "MACH_MP1000" | ||
| 74 | help | ||
| 75 | Say Y if you intend to run the kernel on the Comdial MP1000 platform. | ||
| 76 | |||
| 77 | config MP1000_90MHZ | ||
| 78 | bool "MP1000_90MHZ" | ||
| 79 | depends on MACH_MP1000 | ||
| 80 | help | ||
| 81 | Say Y if you have the MP1000 configured to be set at 90MHZ rather than 74MHZ | ||
| 82 | |||
| 83 | endmenu | 72 | endmenu |
| 84 | 73 | ||
| 85 | endif | 74 | endif |
diff --git a/arch/arm/mach-clps711x/Makefile b/arch/arm/mach-clps711x/Makefile index 8a6dc1ccf8fe..4a197315f0cf 100644 --- a/arch/arm/mach-clps711x/Makefile +++ b/arch/arm/mach-clps711x/Makefile | |||
| @@ -15,7 +15,6 @@ obj-$(CONFIG_ARCH_CDB89712) += cdb89712.o | |||
| 15 | obj-$(CONFIG_ARCH_CLEP7312) += clep7312.o | 15 | obj-$(CONFIG_ARCH_CLEP7312) += clep7312.o |
| 16 | obj-$(CONFIG_ARCH_EDB7211) += edb7211-arch.o edb7211-mm.o | 16 | obj-$(CONFIG_ARCH_EDB7211) += edb7211-arch.o edb7211-mm.o |
| 17 | obj-$(CONFIG_ARCH_FORTUNET) += fortunet.o | 17 | obj-$(CONFIG_ARCH_FORTUNET) += fortunet.o |
| 18 | obj-$(CONFIG_MACH_MP1000) += mp1000-mach.o mp1000-mm.o mp1000-seprom.o | ||
| 19 | obj-$(CONFIG_ARCH_P720T) += p720t.o | 18 | obj-$(CONFIG_ARCH_P720T) += p720t.o |
| 20 | leds-$(CONFIG_ARCH_P720T) += p720t-leds.o | 19 | leds-$(CONFIG_ARCH_P720T) += p720t-leds.o |
| 21 | obj-$(CONFIG_LEDS) += $(leds-y) | 20 | obj-$(CONFIG_LEDS) += $(leds-y) |
diff --git a/arch/arm/mach-clps711x/edb7211-mm.c b/arch/arm/mach-clps711x/edb7211-mm.c index 72f8bb05d55e..0d52e0851251 100644 --- a/arch/arm/mach-clps711x/edb7211-mm.c +++ b/arch/arm/mach-clps711x/edb7211-mm.c | |||
| @@ -55,22 +55,22 @@ static struct map_desc edb7211_io_desc[] __initdata = { | |||
| 55 | .virtual = EP7211_VIRT_EXTKBD, | 55 | .virtual = EP7211_VIRT_EXTKBD, |
| 56 | .pfn = __phys_to_pfn(EP7211_PHYS_EXTKBD), | 56 | .pfn = __phys_to_pfn(EP7211_PHYS_EXTKBD), |
| 57 | .length = SZ_1M, | 57 | .length = SZ_1M, |
| 58 | .type - MT_DEVICE | 58 | .type = MT_DEVICE, |
| 59 | }, { /* and CS8900A Ethernet chip */ | 59 | }, { /* and CS8900A Ethernet chip */ |
| 60 | .virtual = EP7211_VIRT_CS8900A, | 60 | .virtual = EP7211_VIRT_CS8900A, |
| 61 | .pfn = __phys_to_pfn(EP7211_PHYS_CS8900A), | 61 | .pfn = __phys_to_pfn(EP7211_PHYS_CS8900A), |
| 62 | .length = SZ_1M, | 62 | .length = SZ_1M, |
| 63 | .type = MT_DEVICE | 63 | .type = MT_DEVICE, |
| 64 | }, { /* flash banks */ | 64 | }, { /* flash banks */ |
| 65 | .virtual = EP7211_VIRT_FLASH1, | 65 | .virtual = EP7211_VIRT_FLASH1, |
| 66 | .pfn = __phys_to_pfn(EP7211_PHYS_FLASH1), | 66 | .pfn = __phys_to_pfn(EP7211_PHYS_FLASH1), |
| 67 | .length = SZ_8M, | 67 | .length = SZ_8M, |
| 68 | .type = MT_DEVICE | 68 | .type = MT_DEVICE, |
| 69 | }, { | 69 | }, { |
| 70 | .virtual = EP7211_VIRT_FLASH2, | 70 | .virtual = EP7211_VIRT_FLASH2, |
| 71 | .pfn = __phys_to_pfn(EP7211_PHYS_FLASH2), | 71 | .pfn = __phys_to_pfn(EP7211_PHYS_FLASH2), |
| 72 | .length = SZ_8M, | 72 | .length = SZ_8M, |
| 73 | .type = MT_DEVICE | 73 | .type = MT_DEVICE, |
| 74 | } | 74 | } |
| 75 | }; | 75 | }; |
| 76 | 76 | ||
diff --git a/arch/arm/mach-clps711x/mp1000-mach.c b/arch/arm/mach-clps711x/mp1000-mach.c deleted file mode 100644 index c2816bcde5e7..000000000000 --- a/arch/arm/mach-clps711x/mp1000-mach.c +++ /dev/null | |||
| @@ -1,49 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mach-mp1000/mp1000.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2005 Comdial Corporation | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License as published by | ||
| 8 | * the Free Software Foundation; either version 2 of the License, or | ||
| 9 | * (at your option) any later version. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License | ||
| 17 | * along with this program; if not, write to the Free Software | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 19 | */ | ||
| 20 | #include <linux/init.h> | ||
| 21 | #include <linux/types.h> | ||
| 22 | #include <linux/string.h> | ||
| 23 | |||
| 24 | #include <asm/setup.h> | ||
| 25 | #include <asm/mach-types.h> | ||
| 26 | #include <asm/mach/arch.h> | ||
| 27 | #include <asm/arch/mp1000-seprom.h> | ||
| 28 | |||
| 29 | #include "common.h" | ||
| 30 | |||
| 31 | extern void mp1000_map_io(void); | ||
| 32 | |||
| 33 | static void __init mp1000_init(void) | ||
| 34 | { | ||
| 35 | seprom_init(); | ||
| 36 | } | ||
| 37 | |||
| 38 | MACHINE_START(MP1000, "Comdial MP1000") | ||
| 39 | /* Maintainer: Jon Ringle */ | ||
| 40 | .phys_ram = 0xc0000000, | ||
| 41 | .phys_io = 0x80000000, | ||
| 42 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, | ||
| 43 | .boot_params = 0xc0015100, | ||
| 44 | .map_io = mp1000_map_io, | ||
| 45 | .init_irq = clps711x_init_irq, | ||
| 46 | .init_machine = mp1000_init, | ||
| 47 | .timer = &clps711x_timer, | ||
| 48 | MACHINE_END | ||
| 49 | |||
diff --git a/arch/arm/mach-clps711x/mp1000-mm.c b/arch/arm/mach-clps711x/mp1000-mm.c deleted file mode 100644 index 20e810b0ec0c..000000000000 --- a/arch/arm/mach-clps711x/mp1000-mm.c +++ /dev/null | |||
| @@ -1,47 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mach-mp1000/mm.c | ||
| 3 | * | ||
| 4 | * Extra MM routines for the MP1000 | ||
| 5 | * | ||
| 6 | * Copyright (C) 2005 Comdial Corporation | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License as published by | ||
| 10 | * the Free Software Foundation; either version 2 of the License, or | ||
| 11 | * (at your option) any later version. | ||
| 12 | * | ||
| 13 | * This program is distributed in the hope that it will be useful, | ||
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | * GNU General Public License for more details. | ||
| 17 | * | ||
| 18 | * You should have received a copy of the GNU General Public License | ||
| 19 | * along with this program; if not, write to the Free Software | ||
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 21 | */ | ||
| 22 | #include <linux/kernel.h> | ||
| 23 | #include <linux/init.h> | ||
| 24 | |||
| 25 | #include <asm/hardware.h> | ||
| 26 | #include <asm/page.h> | ||
| 27 | #include <asm/pgtable.h> | ||
| 28 | #include <asm/sizes.h> | ||
| 29 | |||
| 30 | #include <asm/mach/map.h> | ||
| 31 | |||
| 32 | extern void clps711x_map_io(void); | ||
| 33 | |||
| 34 | static struct map_desc mp1000_io_desc[] __initdata = { | ||
| 35 | { MP1000_EIO_BASE, MP1000_EIO_START, MP1000_EIO_SIZE, MT_DEVICE }, | ||
| 36 | { MP1000_FIO_BASE, MP1000_FIO_START, MP1000_FIO_SIZE, MT_DEVICE }, | ||
| 37 | { MP1000_LIO_BASE, MP1000_LIO_START, MP1000_LIO_SIZE, MT_DEVICE }, | ||
| 38 | { MP1000_NIO_BASE, MP1000_NIO_START, MP1000_NIO_SIZE, MT_DEVICE }, | ||
| 39 | { MP1000_IDE_BASE, MP1000_IDE_START, MP1000_IDE_SIZE, MT_DEVICE }, | ||
| 40 | { MP1000_DSP_BASE, MP1000_DSP_START, MP1000_DSP_SIZE, MT_DEVICE } | ||
| 41 | }; | ||
| 42 | |||
| 43 | void __init mp1000_map_io(void) | ||
| 44 | { | ||
| 45 | clps711x_map_io(); | ||
| 46 | iotable_init(mp1000_io_desc, ARRAY_SIZE(mp1000_io_desc)); | ||
| 47 | } | ||
diff --git a/arch/arm/mach-clps711x/mp1000-seprom.c b/arch/arm/mach-clps711x/mp1000-seprom.c deleted file mode 100644 index b22d0bebb851..000000000000 --- a/arch/arm/mach-clps711x/mp1000-seprom.c +++ /dev/null | |||
| @@ -1,195 +0,0 @@ | |||
| 1 | /*` | ||
| 2 | * mp1000-seprom.c | ||
| 3 | * | ||
| 4 | * This file contains the Serial EEPROM code for the MP1000 board | ||
| 5 | * | ||
| 6 | * Copyright (C) 2005 Comdial Corporation | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License as published by | ||
| 10 | * the Free Software Foundation; either version 2 of the License, or | ||
| 11 | * (at your option) any later version. | ||
| 12 | * | ||
| 13 | * This program is distributed in the hope that it will be useful, | ||
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | * GNU General Public License for more details. | ||
| 17 | * | ||
| 18 | * You should have received a copy of the GNU General Public License | ||
| 19 | * along with this program; if not, write to the Free Software | ||
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 21 | * | ||
| 22 | */ | ||
| 23 | |||
| 24 | #include <linux/kernel.h> | ||
| 25 | #include <linux/init.h> | ||
| 26 | #include <asm/hardware.h> | ||
| 27 | #include <asm/hardware/clps7111.h> | ||
| 28 | #include <asm/arch/mp1000-seprom.h> | ||
| 29 | |||
| 30 | /* If SepromInit() can initialize and checksum the seprom successfully, */ | ||
| 31 | /* then it will point seprom_data_ptr at the shadow copy. */ | ||
| 32 | |||
| 33 | static eeprom_struct seprom_data; /* shadow copy of seprom content */ | ||
| 34 | |||
| 35 | eeprom_struct *seprom_data_ptr = 0; /* 0 => not initialized */ | ||
| 36 | |||
| 37 | /* | ||
| 38 | * Port D Bit 5 is Chip Select for EEPROM | ||
| 39 | * Port E Bit 0 is Input, Data out from EEPROM | ||
| 40 | * Port E Bit 1 is Output, Data in to EEPROM | ||
| 41 | * Port E Bit 2 is Output, CLK to EEPROM | ||
| 42 | */ | ||
| 43 | |||
| 44 | static char *port_d_ptr = (char *)(CLPS7111_VIRT_BASE + PDDR); | ||
| 45 | static char *port_e_ptr = (char *)(CLPS7111_VIRT_BASE + PEDR); | ||
| 46 | |||
| 47 | #define NO_OF_SHORTS 64 // Device is 64 x 16 bits | ||
| 48 | #define ENABLE_RW 0 | ||
| 49 | #define DISABLE_RW 1 | ||
| 50 | |||
| 51 | static inline void toggle_seprom_clock(void) | ||
| 52 | { | ||
| 53 | *port_e_ptr |= HwPortESepromCLK; | ||
| 54 | *port_e_ptr &= ~(HwPortESepromCLK); | ||
| 55 | } | ||
| 56 | |||
| 57 | static inline void select_eeprom(void) | ||
| 58 | { | ||
| 59 | *port_d_ptr |= HwPortDEECS; | ||
| 60 | *port_e_ptr &= ~(HwPortESepromCLK); | ||
| 61 | } | ||
| 62 | |||
| 63 | static inline void deselect_eeprom(void) | ||
| 64 | { | ||
| 65 | *port_d_ptr &= ~(HwPortDEECS); | ||
| 66 | *port_e_ptr &= ~(HwPortESepromDIn); | ||
| 67 | } | ||
| 68 | |||
| 69 | /* | ||
| 70 | * GetSepromDataPtr - returns pointer to shadow (RAM) copy of seprom | ||
| 71 | * and returns 0 if seprom is not initialized or | ||
| 72 | * has a checksum error. | ||
| 73 | */ | ||
| 74 | |||
| 75 | eeprom_struct* get_seprom_ptr(void) | ||
| 76 | { | ||
| 77 | return seprom_data_ptr; | ||
| 78 | } | ||
| 79 | |||
| 80 | unsigned char* get_eeprom_mac_address(void) | ||
| 81 | { | ||
| 82 | return seprom_data_ptr->variant.eprom_struct.mac_Address; | ||
| 83 | } | ||
| 84 | |||
| 85 | /* | ||
| 86 | * ReadSProm, Physically reads data from the Serial PROM | ||
| 87 | */ | ||
| 88 | static void read_sprom(short address, int length, eeprom_struct *buffer) | ||
| 89 | { | ||
| 90 | short data = COMMAND_READ | (address & 0x3F); | ||
| 91 | short bit; | ||
| 92 | int i; | ||
| 93 | |||
| 94 | select_eeprom(); | ||
| 95 | |||
| 96 | // Clock in 9 bits of the command | ||
| 97 | for (i = 0, bit = 0x100; i < 9; i++, bit >>= 1) { | ||
| 98 | if (data & bit) | ||
| 99 | *port_e_ptr |= HwPortESepromDIn; | ||
| 100 | else | ||
| 101 | *port_e_ptr &= ~(HwPortESepromDIn); | ||
| 102 | |||
| 103 | toggle_seprom_clock(); | ||
| 104 | } | ||
| 105 | |||
| 106 | // | ||
| 107 | // Now read one or more shorts of data from the Seprom | ||
| 108 | // | ||
| 109 | while (length-- > 0) { | ||
| 110 | data = 0; | ||
| 111 | |||
| 112 | // Read 16 bits at a time | ||
| 113 | for (i = 0; i < 16; i++) { | ||
| 114 | data <<= 1; | ||
| 115 | toggle_seprom_clock(); | ||
| 116 | data |= *port_e_ptr & HwPortESepromDOut; | ||
| 117 | |||
| 118 | } | ||
| 119 | |||
| 120 | buffer->variant.eprom_short_data[address++] = data; | ||
| 121 | } | ||
| 122 | |||
| 123 | deselect_eeprom(); | ||
| 124 | |||
| 125 | return; | ||
| 126 | } | ||
| 127 | |||
| 128 | |||
| 129 | |||
| 130 | /* | ||
| 131 | * ReadSerialPROM | ||
| 132 | * | ||
| 133 | * Input: Pointer to array of 64 x 16 Bits | ||
| 134 | * | ||
| 135 | * Output: if no problem reading data is filled in | ||
| 136 | */ | ||
| 137 | static void read_serial_prom(eeprom_struct *data) | ||
| 138 | { | ||
| 139 | read_sprom(0, 64, data); | ||
| 140 | } | ||
| 141 | |||
| 142 | |||
| 143 | // | ||
| 144 | // Compute Serial EEPROM checksum | ||
| 145 | // | ||
| 146 | // Input: Pointer to struct with Eprom data | ||
| 147 | // | ||
| 148 | // Output: The computed Eprom checksum | ||
| 149 | // | ||
| 150 | static short compute_seprom_checksum(eeprom_struct *data) | ||
| 151 | { | ||
| 152 | short checksum = 0; | ||
| 153 | int i; | ||
| 154 | |||
| 155 | for (i = 0; i < 126; i++) { | ||
| 156 | checksum += (short)data->variant.eprom_byte_data[i]; | ||
| 157 | } | ||
| 158 | |||
| 159 | return((short)(0x5555 - (checksum & 0xFFFF))); | ||
| 160 | } | ||
| 161 | |||
| 162 | // | ||
| 163 | // Make sure the data port bits for the SEPROM are correctly initialised | ||
| 164 | // | ||
| 165 | |||
| 166 | void __init seprom_init(void) | ||
| 167 | { | ||
| 168 | short checksum; | ||
| 169 | |||
| 170 | // Init Port D | ||
| 171 | *(char *)(CLPS7111_VIRT_BASE + PDDDR) = 0x0; | ||
| 172 | *(char *)(CLPS7111_VIRT_BASE + PDDR) = 0x15; | ||
| 173 | |||
| 174 | // Init Port E | ||
| 175 | *(int *)(CLPS7111_VIRT_BASE + PEDDR) = 0x06; | ||
| 176 | *(int *)(CLPS7111_VIRT_BASE + PEDR) = 0x04; | ||
| 177 | |||
| 178 | // | ||
| 179 | // Make sure that EEPROM struct size never exceeds 128 bytes | ||
| 180 | // | ||
| 181 | if (sizeof(eeprom_struct) > 128) { | ||
| 182 | panic("Serial PROM struct size > 128, aborting read\n"); | ||
| 183 | } | ||
| 184 | |||
| 185 | read_serial_prom(&seprom_data); | ||
| 186 | |||
| 187 | checksum = compute_seprom_checksum(&seprom_data); | ||
| 188 | |||
| 189 | if (checksum != seprom_data.variant.eprom_short_data[63]) { | ||
| 190 | panic("Serial EEPROM checksum failed\n"); | ||
| 191 | } | ||
| 192 | |||
| 193 | seprom_data_ptr = &seprom_data; | ||
| 194 | } | ||
| 195 | |||
diff --git a/arch/arm/mach-ebsa110/core.c b/arch/arm/mach-ebsa110/core.c index 15261646dcdd..ed4614983adb 100644 --- a/arch/arm/mach-ebsa110/core.c +++ b/arch/arm/mach-ebsa110/core.c | |||
| @@ -251,9 +251,33 @@ static struct platform_device serial_device = { | |||
| 251 | }, | 251 | }, |
| 252 | }; | 252 | }; |
| 253 | 253 | ||
| 254 | static struct resource am79c961_resources[] = { | ||
| 255 | { | ||
| 256 | .start = 0x220, | ||
| 257 | .end = 0x238, | ||
| 258 | .flags = IORESOURCE_IO, | ||
| 259 | }, { | ||
| 260 | .start = IRQ_EBSA110_ETHERNET, | ||
| 261 | .end = IRQ_EBSA110_ETHERNET, | ||
| 262 | .flags = IORESOURCE_IRQ, | ||
| 263 | }, | ||
| 264 | }; | ||
| 265 | |||
| 266 | static struct platform_device am79c961_device = { | ||
| 267 | .name = "am79c961", | ||
| 268 | .id = -1, | ||
| 269 | .num_resources = ARRAY_SIZE(am79c961_resources), | ||
| 270 | .resource = am79c961_resources, | ||
| 271 | }; | ||
| 272 | |||
| 273 | static struct platform_device *ebsa110_devices[] = { | ||
| 274 | &serial_device, | ||
| 275 | &am79c961_device, | ||
| 276 | }; | ||
| 277 | |||
| 254 | static int __init ebsa110_init(void) | 278 | static int __init ebsa110_init(void) |
| 255 | { | 279 | { |
| 256 | return platform_device_register(&serial_device); | 280 | return platform_add_devices(ebsa110_devices, ARRAY_SIZE(ebsa110_devices)); |
| 257 | } | 281 | } |
| 258 | 282 | ||
| 259 | arch_initcall(ebsa110_init); | 283 | arch_initcall(ebsa110_init); |
diff --git a/arch/arm/mach-h720x/h7202-eval.c b/arch/arm/mach-h720x/h7202-eval.c index db9078ad008c..d75c8221d2a5 100644 --- a/arch/arm/mach-h720x/h7202-eval.c +++ b/arch/arm/mach-h720x/h7202-eval.c | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
| 19 | #include <linux/types.h> | 19 | #include <linux/types.h> |
| 20 | #include <linux/string.h> | 20 | #include <linux/string.h> |
| 21 | #include <linux/device.h> | 21 | #include <linux/platform_device.h> |
| 22 | 22 | ||
| 23 | #include <asm/setup.h> | 23 | #include <asm/setup.h> |
| 24 | #include <asm/types.h> | 24 | #include <asm/types.h> |
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c index 837d7f0bda4c..37613ad68366 100644 --- a/arch/arm/mach-imx/generic.c +++ b/arch/arm/mach-imx/generic.c | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 23 | * | 23 | * |
| 24 | */ | 24 | */ |
| 25 | #include <linux/device.h> | 25 | #include <linux/platform_device.h> |
| 26 | #include <linux/init.h> | 26 | #include <linux/init.h> |
| 27 | #include <linux/kernel.h> | 27 | #include <linux/kernel.h> |
| 28 | #include <linux/module.h> | 28 | #include <linux/module.h> |
diff --git a/arch/arm/mach-imx/mx1ads.c b/arch/arm/mach-imx/mx1ads.c index 4cbdc1fe04b1..708e1b3faa14 100644 --- a/arch/arm/mach-imx/mx1ads.c +++ b/arch/arm/mach-imx/mx1ads.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #include <linux/device.h> | 15 | #include <linux/device.h> |
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/platform_device.h> | ||
| 17 | #include <asm/system.h> | 18 | #include <asm/system.h> |
| 18 | #include <asm/hardware.h> | 19 | #include <asm/hardware.h> |
| 19 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c index 764ceb49470a..4c0f7c65facf 100644 --- a/arch/arm/mach-integrator/integrator_ap.c +++ b/arch/arm/mach-integrator/integrator_ap.c | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
| 22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
| 23 | #include <linux/list.h> | 23 | #include <linux/list.h> |
| 24 | #include <linux/device.h> | 24 | #include <linux/platform_device.h> |
| 25 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
| 26 | #include <linux/string.h> | 26 | #include <linux/string.h> |
| 27 | #include <linux/sysdev.h> | 27 | #include <linux/sysdev.h> |
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index aa34c58b96c4..93f7ccb22c27 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/list.h> | 13 | #include <linux/list.h> |
| 14 | #include <linux/device.h> | 14 | #include <linux/platform_device.h> |
| 15 | #include <linux/dma-mapping.h> | 15 | #include <linux/dma-mapping.h> |
| 16 | #include <linux/slab.h> | 16 | #include <linux/slab.h> |
| 17 | #include <linux/string.h> | 17 | #include <linux/string.h> |
diff --git a/arch/arm/mach-iop3xx/iop321-setup.c b/arch/arm/mach-iop3xx/iop321-setup.c index bb5091223b63..80770233b8d4 100644 --- a/arch/arm/mach-iop3xx/iop321-setup.c +++ b/arch/arm/mach-iop3xx/iop321-setup.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/major.h> | 17 | #include <linux/major.h> |
| 18 | #include <linux/fs.h> | 18 | #include <linux/fs.h> |
| 19 | #include <linux/device.h> | 19 | #include <linux/platform_device.h> |
| 20 | #include <linux/serial.h> | 20 | #include <linux/serial.h> |
| 21 | #include <linux/tty.h> | 21 | #include <linux/tty.h> |
| 22 | #include <linux/serial_core.h> | 22 | #include <linux/serial_core.h> |
diff --git a/arch/arm/mach-iop3xx/iop331-setup.c b/arch/arm/mach-iop3xx/iop331-setup.c index a2533c3ab42f..53f60614498b 100644 --- a/arch/arm/mach-iop3xx/iop331-setup.c +++ b/arch/arm/mach-iop3xx/iop331-setup.c | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
| 16 | #include <linux/major.h> | 16 | #include <linux/major.h> |
| 17 | #include <linux/fs.h> | 17 | #include <linux/fs.h> |
| 18 | #include <linux/device.h> | 18 | #include <linux/platform_device.h> |
| 19 | #include <linux/serial.h> | 19 | #include <linux/serial.h> |
| 20 | #include <linux/tty.h> | 20 | #include <linux/tty.h> |
| 21 | #include <linux/serial_core.h> | 21 | #include <linux/serial_core.h> |
diff --git a/arch/arm/mach-ixp2000/Makefile b/arch/arm/mach-ixp2000/Makefile index 1e6139d42a92..9621aeb61f46 100644 --- a/arch/arm/mach-ixp2000/Makefile +++ b/arch/arm/mach-ixp2000/Makefile | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Makefile for the linux kernel. | 2 | # Makefile for the linux kernel. |
| 3 | # | 3 | # |
| 4 | obj-y := core.o pci.o | 4 | obj-y := core.o pci.o uengine.o |
| 5 | obj-m := | 5 | obj-m := |
| 6 | obj-n := | 6 | obj-n := |
| 7 | obj- := | 7 | obj- := |
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c index 01c393c504d0..df140962bb0f 100644 --- a/arch/arm/mach-ixp2000/core.c +++ b/arch/arm/mach-ixp2000/core.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * arch/arm/mach-ixp2000/common.c | 2 | * arch/arm/mach-ixp2000/core.c |
| 3 | * | 3 | * |
| 4 | * Common routines used by all IXP2400/2800 based platforms. | 4 | * Common routines used by all IXP2400/2800 based platforms. |
| 5 | * | 5 | * |
| @@ -49,7 +49,6 @@ static unsigned long ixp2000_slowport_irq_flags; | |||
| 49 | *************************************************************************/ | 49 | *************************************************************************/ |
| 50 | void ixp2000_acquire_slowport(struct slowport_cfg *new_cfg, struct slowport_cfg *old_cfg) | 50 | void ixp2000_acquire_slowport(struct slowport_cfg *new_cfg, struct slowport_cfg *old_cfg) |
| 51 | { | 51 | { |
| 52 | |||
| 53 | spin_lock_irqsave(&ixp2000_slowport_lock, ixp2000_slowport_irq_flags); | 52 | spin_lock_irqsave(&ixp2000_slowport_lock, ixp2000_slowport_irq_flags); |
| 54 | 53 | ||
| 55 | old_cfg->CCR = *IXP2000_SLOWPORT_CCR; | 54 | old_cfg->CCR = *IXP2000_SLOWPORT_CCR; |
| @@ -62,7 +61,7 @@ void ixp2000_acquire_slowport(struct slowport_cfg *new_cfg, struct slowport_cfg | |||
| 62 | ixp2000_reg_write(IXP2000_SLOWPORT_WTC2, new_cfg->WTC); | 61 | ixp2000_reg_write(IXP2000_SLOWPORT_WTC2, new_cfg->WTC); |
| 63 | ixp2000_reg_write(IXP2000_SLOWPORT_RTC2, new_cfg->RTC); | 62 | ixp2000_reg_write(IXP2000_SLOWPORT_RTC2, new_cfg->RTC); |
| 64 | ixp2000_reg_write(IXP2000_SLOWPORT_PCR, new_cfg->PCR); | 63 | ixp2000_reg_write(IXP2000_SLOWPORT_PCR, new_cfg->PCR); |
| 65 | ixp2000_reg_write(IXP2000_SLOWPORT_ADC, new_cfg->ADC); | 64 | ixp2000_reg_wrb(IXP2000_SLOWPORT_ADC, new_cfg->ADC); |
| 66 | } | 65 | } |
| 67 | 66 | ||
| 68 | void ixp2000_release_slowport(struct slowport_cfg *old_cfg) | 67 | void ixp2000_release_slowport(struct slowport_cfg *old_cfg) |
| @@ -71,7 +70,7 @@ void ixp2000_release_slowport(struct slowport_cfg *old_cfg) | |||
| 71 | ixp2000_reg_write(IXP2000_SLOWPORT_WTC2, old_cfg->WTC); | 70 | ixp2000_reg_write(IXP2000_SLOWPORT_WTC2, old_cfg->WTC); |
| 72 | ixp2000_reg_write(IXP2000_SLOWPORT_RTC2, old_cfg->RTC); | 71 | ixp2000_reg_write(IXP2000_SLOWPORT_RTC2, old_cfg->RTC); |
| 73 | ixp2000_reg_write(IXP2000_SLOWPORT_PCR, old_cfg->PCR); | 72 | ixp2000_reg_write(IXP2000_SLOWPORT_PCR, old_cfg->PCR); |
| 74 | ixp2000_reg_write(IXP2000_SLOWPORT_ADC, old_cfg->ADC); | 73 | ixp2000_reg_wrb(IXP2000_SLOWPORT_ADC, old_cfg->ADC); |
| 75 | 74 | ||
| 76 | spin_unlock_irqrestore(&ixp2000_slowport_lock, | 75 | spin_unlock_irqrestore(&ixp2000_slowport_lock, |
| 77 | ixp2000_slowport_irq_flags); | 76 | ixp2000_slowport_irq_flags); |
| @@ -145,7 +144,7 @@ void __init ixp2000_map_io(void) | |||
| 145 | iotable_init(ixp2000_io_desc, ARRAY_SIZE(ixp2000_io_desc)); | 144 | iotable_init(ixp2000_io_desc, ARRAY_SIZE(ixp2000_io_desc)); |
| 146 | 145 | ||
| 147 | /* Set slowport to 8-bit mode. */ | 146 | /* Set slowport to 8-bit mode. */ |
| 148 | ixp2000_reg_write(IXP2000_SLOWPORT_FRM, 1); | 147 | ixp2000_reg_wrb(IXP2000_SLOWPORT_FRM, 1); |
| 149 | } | 148 | } |
| 150 | 149 | ||
| 151 | 150 | ||
| @@ -209,7 +208,7 @@ static int ixp2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
| 209 | write_seqlock(&xtime_lock); | 208 | write_seqlock(&xtime_lock); |
| 210 | 209 | ||
| 211 | /* clear timer 1 */ | 210 | /* clear timer 1 */ |
| 212 | ixp2000_reg_write(IXP2000_T1_CLR, 1); | 211 | ixp2000_reg_wrb(IXP2000_T1_CLR, 1); |
| 213 | 212 | ||
| 214 | while ((next_jiffy_time - *missing_jiffy_timer_csr) > ticks_per_jiffy) { | 213 | while ((next_jiffy_time - *missing_jiffy_timer_csr) > ticks_per_jiffy) { |
| 215 | timer_tick(regs); | 214 | timer_tick(regs); |
| @@ -252,12 +251,12 @@ void __init ixp2000_init_time(unsigned long tick_rate) | |||
| 252 | 251 | ||
| 253 | ixp2000_reg_write(IXP2000_T4_CLR, 0); | 252 | ixp2000_reg_write(IXP2000_T4_CLR, 0); |
| 254 | ixp2000_reg_write(IXP2000_T4_CLD, -1); | 253 | ixp2000_reg_write(IXP2000_T4_CLD, -1); |
| 255 | ixp2000_reg_write(IXP2000_T4_CTL, (1 << 7)); | 254 | ixp2000_reg_wrb(IXP2000_T4_CTL, (1 << 7)); |
| 256 | missing_jiffy_timer_csr = IXP2000_T4_CSR; | 255 | missing_jiffy_timer_csr = IXP2000_T4_CSR; |
| 257 | } else { | 256 | } else { |
| 258 | ixp2000_reg_write(IXP2000_T2_CLR, 0); | 257 | ixp2000_reg_write(IXP2000_T2_CLR, 0); |
| 259 | ixp2000_reg_write(IXP2000_T2_CLD, -1); | 258 | ixp2000_reg_write(IXP2000_T2_CLD, -1); |
| 260 | ixp2000_reg_write(IXP2000_T2_CTL, (1 << 7)); | 259 | ixp2000_reg_wrb(IXP2000_T2_CTL, (1 << 7)); |
| 261 | missing_jiffy_timer_csr = IXP2000_T2_CSR; | 260 | missing_jiffy_timer_csr = IXP2000_T2_CSR; |
| 262 | } | 261 | } |
| 263 | next_jiffy_time = 0xffffffff; | 262 | next_jiffy_time = 0xffffffff; |
| @@ -279,7 +278,7 @@ static void update_gpio_int_csrs(void) | |||
| 279 | ixp2000_reg_write(IXP2000_GPIO_FEDR, GPIO_IRQ_falling_edge); | 278 | ixp2000_reg_write(IXP2000_GPIO_FEDR, GPIO_IRQ_falling_edge); |
| 280 | ixp2000_reg_write(IXP2000_GPIO_REDR, GPIO_IRQ_rising_edge); | 279 | ixp2000_reg_write(IXP2000_GPIO_REDR, GPIO_IRQ_rising_edge); |
| 281 | ixp2000_reg_write(IXP2000_GPIO_LSLR, GPIO_IRQ_level_low); | 280 | ixp2000_reg_write(IXP2000_GPIO_LSLR, GPIO_IRQ_level_low); |
| 282 | ixp2000_reg_write(IXP2000_GPIO_LSHR, GPIO_IRQ_level_high); | 281 | ixp2000_reg_wrb(IXP2000_GPIO_LSHR, GPIO_IRQ_level_high); |
| 283 | } | 282 | } |
| 284 | 283 | ||
| 285 | void gpio_line_config(int line, int direction) | 284 | void gpio_line_config(int line, int direction) |
| @@ -297,9 +296,9 @@ void gpio_line_config(int line, int direction) | |||
| 297 | GPIO_IRQ_level_high &= ~(1 << line); | 296 | GPIO_IRQ_level_high &= ~(1 << line); |
| 298 | update_gpio_int_csrs(); | 297 | update_gpio_int_csrs(); |
| 299 | 298 | ||
| 300 | ixp2000_reg_write(IXP2000_GPIO_PDSR, 1 << line); | 299 | ixp2000_reg_wrb(IXP2000_GPIO_PDSR, 1 << line); |
| 301 | } else if (direction == GPIO_IN) { | 300 | } else if (direction == GPIO_IN) { |
| 302 | ixp2000_reg_write(IXP2000_GPIO_PDCR, 1 << line); | 301 | ixp2000_reg_wrb(IXP2000_GPIO_PDCR, 1 << line); |
| 303 | } | 302 | } |
| 304 | local_irq_restore(flags); | 303 | local_irq_restore(flags); |
| 305 | } | 304 | } |
| @@ -365,12 +364,12 @@ static void ixp2000_GPIO_irq_mask_ack(unsigned int irq) | |||
| 365 | 364 | ||
| 366 | ixp2000_reg_write(IXP2000_GPIO_EDSR, (1 << (irq - IRQ_IXP2000_GPIO0))); | 365 | ixp2000_reg_write(IXP2000_GPIO_EDSR, (1 << (irq - IRQ_IXP2000_GPIO0))); |
| 367 | ixp2000_reg_write(IXP2000_GPIO_LDSR, (1 << (irq - IRQ_IXP2000_GPIO0))); | 366 | ixp2000_reg_write(IXP2000_GPIO_LDSR, (1 << (irq - IRQ_IXP2000_GPIO0))); |
| 368 | ixp2000_reg_write(IXP2000_GPIO_INST, (1 << (irq - IRQ_IXP2000_GPIO0))); | 367 | ixp2000_reg_wrb(IXP2000_GPIO_INST, (1 << (irq - IRQ_IXP2000_GPIO0))); |
| 369 | } | 368 | } |
| 370 | 369 | ||
| 371 | static void ixp2000_GPIO_irq_mask(unsigned int irq) | 370 | static void ixp2000_GPIO_irq_mask(unsigned int irq) |
| 372 | { | 371 | { |
| 373 | ixp2000_reg_write(IXP2000_GPIO_INCR, (1 << (irq - IRQ_IXP2000_GPIO0))); | 372 | ixp2000_reg_wrb(IXP2000_GPIO_INCR, (1 << (irq - IRQ_IXP2000_GPIO0))); |
| 374 | } | 373 | } |
| 375 | 374 | ||
| 376 | static void ixp2000_GPIO_irq_unmask(unsigned int irq) | 375 | static void ixp2000_GPIO_irq_unmask(unsigned int irq) |
| @@ -389,9 +388,9 @@ static void ixp2000_pci_irq_mask(unsigned int irq) | |||
| 389 | { | 388 | { |
| 390 | unsigned long temp = *IXP2000_PCI_XSCALE_INT_ENABLE; | 389 | unsigned long temp = *IXP2000_PCI_XSCALE_INT_ENABLE; |
| 391 | if (irq == IRQ_IXP2000_PCIA) | 390 | if (irq == IRQ_IXP2000_PCIA) |
| 392 | ixp2000_reg_write(IXP2000_PCI_XSCALE_INT_ENABLE, (temp & ~(1 << 26))); | 391 | ixp2000_reg_wrb(IXP2000_PCI_XSCALE_INT_ENABLE, (temp & ~(1 << 26))); |
| 393 | else if (irq == IRQ_IXP2000_PCIB) | 392 | else if (irq == IRQ_IXP2000_PCIB) |
| 394 | ixp2000_reg_write(IXP2000_PCI_XSCALE_INT_ENABLE, (temp & ~(1 << 27))); | 393 | ixp2000_reg_wrb(IXP2000_PCI_XSCALE_INT_ENABLE, (temp & ~(1 << 27))); |
| 395 | } | 394 | } |
| 396 | 395 | ||
| 397 | static void ixp2000_pci_irq_unmask(unsigned int irq) | 396 | static void ixp2000_pci_irq_unmask(unsigned int irq) |
| @@ -403,6 +402,40 @@ static void ixp2000_pci_irq_unmask(unsigned int irq) | |||
| 403 | ixp2000_reg_write(IXP2000_PCI_XSCALE_INT_ENABLE, (temp | (1 << 27))); | 402 | ixp2000_reg_write(IXP2000_PCI_XSCALE_INT_ENABLE, (temp | (1 << 27))); |
| 404 | } | 403 | } |
| 405 | 404 | ||
| 405 | /* | ||
| 406 | * Error interrupts. These are used extensively by the microengine drivers | ||
| 407 | */ | ||
| 408 | static void ixp2000_err_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) | ||
| 409 | { | ||
| 410 | int i; | ||
| 411 | unsigned long status = *IXP2000_IRQ_ERR_STATUS; | ||
| 412 | |||
| 413 | for(i = 31; i >= 0; i--) { | ||
| 414 | if(status & (1 << i)) { | ||
| 415 | desc = irq_desc + IRQ_IXP2000_DRAM0_MIN_ERR + i; | ||
| 416 | desc->handle(IRQ_IXP2000_DRAM0_MIN_ERR + i, desc, regs); | ||
| 417 | } | ||
| 418 | } | ||
| 419 | } | ||
| 420 | |||
| 421 | static void ixp2000_err_irq_mask(unsigned int irq) | ||
| 422 | { | ||
| 423 | ixp2000_reg_write(IXP2000_IRQ_ERR_ENABLE_CLR, | ||
| 424 | (1 << (irq - IRQ_IXP2000_DRAM0_MIN_ERR))); | ||
| 425 | } | ||
| 426 | |||
| 427 | static void ixp2000_err_irq_unmask(unsigned int irq) | ||
| 428 | { | ||
| 429 | ixp2000_reg_write(IXP2000_IRQ_ERR_ENABLE_SET, | ||
| 430 | (1 << (irq - IRQ_IXP2000_DRAM0_MIN_ERR))); | ||
| 431 | } | ||
| 432 | |||
| 433 | static struct irqchip ixp2000_err_irq_chip = { | ||
| 434 | .ack = ixp2000_err_irq_mask, | ||
| 435 | .mask = ixp2000_err_irq_mask, | ||
| 436 | .unmask = ixp2000_err_irq_unmask | ||
| 437 | }; | ||
| 438 | |||
| 406 | static struct irqchip ixp2000_pci_irq_chip = { | 439 | static struct irqchip ixp2000_pci_irq_chip = { |
| 407 | .ack = ixp2000_pci_irq_mask, | 440 | .ack = ixp2000_pci_irq_mask, |
| 408 | .mask = ixp2000_pci_irq_mask, | 441 | .mask = ixp2000_pci_irq_mask, |
| @@ -411,7 +444,7 @@ static struct irqchip ixp2000_pci_irq_chip = { | |||
| 411 | 444 | ||
| 412 | static void ixp2000_irq_mask(unsigned int irq) | 445 | static void ixp2000_irq_mask(unsigned int irq) |
| 413 | { | 446 | { |
| 414 | ixp2000_reg_write(IXP2000_IRQ_ENABLE_CLR, (1 << irq)); | 447 | ixp2000_reg_wrb(IXP2000_IRQ_ENABLE_CLR, (1 << irq)); |
| 415 | } | 448 | } |
| 416 | 449 | ||
| 417 | static void ixp2000_irq_unmask(unsigned int irq) | 450 | static void ixp2000_irq_unmask(unsigned int irq) |
| @@ -443,7 +476,7 @@ void __init ixp2000_init_irq(void) | |||
| 443 | ixp2000_reg_write(IXP2000_GPIO_INCR, -1); | 476 | ixp2000_reg_write(IXP2000_GPIO_INCR, -1); |
| 444 | 477 | ||
| 445 | /* clear PCI interrupt sources */ | 478 | /* clear PCI interrupt sources */ |
| 446 | ixp2000_reg_write(IXP2000_PCI_XSCALE_INT_ENABLE, 0); | 479 | ixp2000_reg_wrb(IXP2000_PCI_XSCALE_INT_ENABLE, 0); |
| 447 | 480 | ||
| 448 | /* | 481 | /* |
| 449 | * Certain bits in the IRQ status register of the | 482 | * Certain bits in the IRQ status register of the |
| @@ -460,6 +493,18 @@ void __init ixp2000_init_irq(void) | |||
| 460 | } else set_irq_flags(irq, 0); | 493 | } else set_irq_flags(irq, 0); |
| 461 | } | 494 | } |
| 462 | 495 | ||
| 496 | for (irq = IRQ_IXP2000_DRAM0_MIN_ERR; irq <= IRQ_IXP2000_SP_INT; irq++) { | ||
| 497 | if((1 << (irq - IRQ_IXP2000_DRAM0_MIN_ERR)) & | ||
| 498 | IXP2000_VALID_ERR_IRQ_MASK) { | ||
| 499 | set_irq_chip(irq, &ixp2000_err_irq_chip); | ||
| 500 | set_irq_handler(irq, do_level_IRQ); | ||
| 501 | set_irq_flags(irq, IRQF_VALID); | ||
| 502 | } | ||
| 503 | else | ||
| 504 | set_irq_flags(irq, 0); | ||
| 505 | } | ||
| 506 | set_irq_chained_handler(IRQ_IXP2000_ERRSUM, ixp2000_err_irq_handler); | ||
| 507 | |||
| 463 | /* | 508 | /* |
| 464 | * GPIO IRQs are invalid until someone sets the interrupt mode | 509 | * GPIO IRQs are invalid until someone sets the interrupt mode |
| 465 | * by calling set_irq_type(). | 510 | * by calling set_irq_type(). |
diff --git a/arch/arm/mach-ixp2000/enp2611.c b/arch/arm/mach-ixp2000/enp2611.c index 9aa54de44740..61f6006241bd 100644 --- a/arch/arm/mach-ixp2000/enp2611.c +++ b/arch/arm/mach-ixp2000/enp2611.c | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | #include <linux/serial.h> | 32 | #include <linux/serial.h> |
| 33 | #include <linux/tty.h> | 33 | #include <linux/tty.h> |
| 34 | #include <linux/serial_core.h> | 34 | #include <linux/serial_core.h> |
| 35 | #include <linux/device.h> | 35 | #include <linux/platform_device.h> |
| 36 | 36 | ||
| 37 | #include <asm/io.h> | 37 | #include <asm/io.h> |
| 38 | #include <asm/irq.h> | 38 | #include <asm/irq.h> |
| @@ -64,6 +64,35 @@ static struct sys_timer enp2611_timer = { | |||
| 64 | 64 | ||
| 65 | 65 | ||
| 66 | /************************************************************************* | 66 | /************************************************************************* |
| 67 | * ENP-2611 I/O | ||
| 68 | *************************************************************************/ | ||
| 69 | static struct map_desc enp2611_io_desc[] __initdata = { | ||
| 70 | { | ||
| 71 | .virtual = ENP2611_CALEB_VIRT_BASE, | ||
| 72 | .pfn = __phys_to_pfn(ENP2611_CALEB_PHYS_BASE), | ||
| 73 | .length = ENP2611_CALEB_SIZE, | ||
| 74 | .type = MT_IXP2000_DEVICE, | ||
| 75 | }, { | ||
| 76 | .virtual = ENP2611_PM3386_0_VIRT_BASE, | ||
| 77 | .pfn = __phys_to_pfn(ENP2611_PM3386_0_PHYS_BASE), | ||
| 78 | .length = ENP2611_PM3386_0_SIZE, | ||
| 79 | .type = MT_IXP2000_DEVICE, | ||
| 80 | }, { | ||
| 81 | .virtual = ENP2611_PM3386_1_VIRT_BASE, | ||
| 82 | .pfn = __phys_to_pfn(ENP2611_PM3386_1_PHYS_BASE), | ||
| 83 | .length = ENP2611_PM3386_1_SIZE, | ||
| 84 | .type = MT_IXP2000_DEVICE, | ||
| 85 | } | ||
| 86 | }; | ||
| 87 | |||
| 88 | void __init enp2611_map_io(void) | ||
| 89 | { | ||
| 90 | ixp2000_map_io(); | ||
| 91 | iotable_init(enp2611_io_desc, ARRAY_SIZE(enp2611_io_desc)); | ||
| 92 | } | ||
| 93 | |||
| 94 | |||
| 95 | /************************************************************************* | ||
| 67 | * ENP-2611 PCI | 96 | * ENP-2611 PCI |
| 68 | *************************************************************************/ | 97 | *************************************************************************/ |
| 69 | static int enp2611_pci_setup(int nr, struct pci_sys_data *sys) | 98 | static int enp2611_pci_setup(int nr, struct pci_sys_data *sys) |
| @@ -229,7 +258,7 @@ MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board") | |||
| 229 | .phys_io = IXP2000_UART_PHYS_BASE, | 258 | .phys_io = IXP2000_UART_PHYS_BASE, |
| 230 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, | 259 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, |
| 231 | .boot_params = 0x00000100, | 260 | .boot_params = 0x00000100, |
| 232 | .map_io = ixp2000_map_io, | 261 | .map_io = enp2611_map_io, |
| 233 | .init_irq = ixp2000_init_irq, | 262 | .init_irq = ixp2000_init_irq, |
| 234 | .timer = &enp2611_timer, | 263 | .timer = &enp2611_timer, |
| 235 | .init_machine = enp2611_init_machine, | 264 | .init_machine = enp2611_init_machine, |
diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c index 8b4a839b6279..d628da56b4bc 100644 --- a/arch/arm/mach-ixp2000/ixdp2x00.c +++ b/arch/arm/mach-ixp2000/ixdp2x00.c | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #include <linux/mm.h> | 20 | #include <linux/mm.h> |
| 21 | #include <linux/sched.h> | 21 | #include <linux/sched.h> |
| 22 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
| 23 | #include <linux/device.h> | 23 | #include <linux/platform_device.h> |
| 24 | #include <linux/bitops.h> | 24 | #include <linux/bitops.h> |
| 25 | #include <linux/pci.h> | 25 | #include <linux/pci.h> |
| 26 | #include <linux/ioport.h> | 26 | #include <linux/ioport.h> |
| @@ -81,7 +81,7 @@ static void ixdp2x00_irq_mask(unsigned int irq) | |||
| 81 | 81 | ||
| 82 | dummy = *board_irq_mask; | 82 | dummy = *board_irq_mask; |
| 83 | dummy |= IXP2000_BOARD_IRQ_MASK(irq); | 83 | dummy |= IXP2000_BOARD_IRQ_MASK(irq); |
| 84 | ixp2000_reg_write(board_irq_mask, dummy); | 84 | ixp2000_reg_wrb(board_irq_mask, dummy); |
| 85 | 85 | ||
| 86 | #ifdef CONFIG_ARCH_IXDP2400 | 86 | #ifdef CONFIG_ARCH_IXDP2400 |
| 87 | if (machine_is_ixdp2400()) | 87 | if (machine_is_ixdp2400()) |
| @@ -101,7 +101,7 @@ static void ixdp2x00_irq_unmask(unsigned int irq) | |||
| 101 | 101 | ||
| 102 | dummy = *board_irq_mask; | 102 | dummy = *board_irq_mask; |
| 103 | dummy &= ~IXP2000_BOARD_IRQ_MASK(irq); | 103 | dummy &= ~IXP2000_BOARD_IRQ_MASK(irq); |
| 104 | ixp2000_reg_write(board_irq_mask, dummy); | 104 | ixp2000_reg_wrb(board_irq_mask, dummy); |
| 105 | 105 | ||
| 106 | if (machine_is_ixdp2400()) | 106 | if (machine_is_ixdp2400()) |
| 107 | ixp2000_release_slowport(&old_cfg); | 107 | ixp2000_release_slowport(&old_cfg); |
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c index fee1d7b73503..e6a882f35da2 100644 --- a/arch/arm/mach-ixp2000/ixdp2x01.c +++ b/arch/arm/mach-ixp2000/ixdp2x01.c | |||
| @@ -29,7 +29,7 @@ | |||
| 29 | #include <linux/serial.h> | 29 | #include <linux/serial.h> |
| 30 | #include <linux/tty.h> | 30 | #include <linux/tty.h> |
| 31 | #include <linux/serial_core.h> | 31 | #include <linux/serial_core.h> |
| 32 | #include <linux/device.h> | 32 | #include <linux/platform_device.h> |
| 33 | 33 | ||
| 34 | #include <asm/io.h> | 34 | #include <asm/io.h> |
| 35 | #include <asm/irq.h> | 35 | #include <asm/irq.h> |
| @@ -51,7 +51,7 @@ | |||
| 51 | *************************************************************************/ | 51 | *************************************************************************/ |
| 52 | static void ixdp2x01_irq_mask(unsigned int irq) | 52 | static void ixdp2x01_irq_mask(unsigned int irq) |
| 53 | { | 53 | { |
| 54 | ixp2000_reg_write(IXDP2X01_INT_MASK_SET_REG, | 54 | ixp2000_reg_wrb(IXDP2X01_INT_MASK_SET_REG, |
| 55 | IXP2000_BOARD_IRQ_MASK(irq)); | 55 | IXP2000_BOARD_IRQ_MASK(irq)); |
| 56 | } | 56 | } |
| 57 | 57 | ||
| @@ -114,7 +114,7 @@ void __init ixdp2x01_init_irq(void) | |||
| 114 | 114 | ||
| 115 | /* Mask all interrupts from CPLD, disable simulation */ | 115 | /* Mask all interrupts from CPLD, disable simulation */ |
| 116 | ixp2000_reg_write(IXDP2X01_INT_MASK_SET_REG, 0xffffffff); | 116 | ixp2000_reg_write(IXDP2X01_INT_MASK_SET_REG, 0xffffffff); |
| 117 | ixp2000_reg_write(IXDP2X01_INT_SIM_REG, 0); | 117 | ixp2000_reg_wrb(IXDP2X01_INT_SIM_REG, 0); |
| 118 | 118 | ||
| 119 | for (irq = NR_IXP2000_IRQS; irq < NR_IXDP2X01_IRQS; irq++) { | 119 | for (irq = NR_IXP2000_IRQS; irq < NR_IXDP2X01_IRQS; irq++) { |
| 120 | if (irq & valid_irq_mask) { | 120 | if (irq & valid_irq_mask) { |
| @@ -299,7 +299,6 @@ struct hw_pci ixdp2x01_pci __initdata = { | |||
| 299 | 299 | ||
| 300 | int __init ixdp2x01_pci_init(void) | 300 | int __init ixdp2x01_pci_init(void) |
| 301 | { | 301 | { |
| 302 | |||
| 303 | pci_common_init(&ixdp2x01_pci); | 302 | pci_common_init(&ixdp2x01_pci); |
| 304 | return 0; | 303 | return 0; |
| 305 | } | 304 | } |
| @@ -316,7 +315,7 @@ static struct flash_platform_data ixdp2x01_flash_platform_data = { | |||
| 316 | 315 | ||
| 317 | static unsigned long ixdp2x01_flash_bank_setup(unsigned long ofs) | 316 | static unsigned long ixdp2x01_flash_bank_setup(unsigned long ofs) |
| 318 | { | 317 | { |
| 319 | ixp2000_reg_write(IXDP2X01_CPLD_FLASH_REG, | 318 | ixp2000_reg_wrb(IXDP2X01_CPLD_FLASH_REG, |
| 320 | ((ofs >> IXDP2X01_FLASH_WINDOW_BITS) | IXDP2X01_CPLD_FLASH_INTERN)); | 319 | ((ofs >> IXDP2X01_FLASH_WINDOW_BITS) | IXDP2X01_CPLD_FLASH_INTERN)); |
| 321 | return (ofs & IXDP2X01_FLASH_WINDOW_MASK); | 320 | return (ofs & IXDP2X01_FLASH_WINDOW_MASK); |
| 322 | } | 321 | } |
| @@ -363,7 +362,7 @@ static struct platform_device *ixdp2x01_devices[] __initdata = { | |||
| 363 | 362 | ||
| 364 | static void __init ixdp2x01_init_machine(void) | 363 | static void __init ixdp2x01_init_machine(void) |
| 365 | { | 364 | { |
| 366 | ixp2000_reg_write(IXDP2X01_CPLD_FLASH_REG, | 365 | ixp2000_reg_wrb(IXDP2X01_CPLD_FLASH_REG, |
| 367 | (IXDP2X01_CPLD_FLASH_BANK_MASK | IXDP2X01_CPLD_FLASH_INTERN)); | 366 | (IXDP2X01_CPLD_FLASH_BANK_MASK | IXDP2X01_CPLD_FLASH_INTERN)); |
| 368 | 367 | ||
| 369 | ixdp2x01_flash_data.nr_banks = | 368 | ixdp2x01_flash_data.nr_banks = |
diff --git a/arch/arm/mach-ixp2000/pci.c b/arch/arm/mach-ixp2000/pci.c index 522205acb316..d4bf1e1c0031 100644 --- a/arch/arm/mach-ixp2000/pci.c +++ b/arch/arm/mach-ixp2000/pci.c | |||
| @@ -148,7 +148,7 @@ int ixp2000_pci_abort_handler(unsigned long addr, unsigned int fsr, struct pt_re | |||
| 148 | local_irq_save(flags); | 148 | local_irq_save(flags); |
| 149 | temp = *(IXP2000_PCI_CONTROL); | 149 | temp = *(IXP2000_PCI_CONTROL); |
| 150 | if (temp & ((1 << 8) | (1 << 5))) { | 150 | if (temp & ((1 << 8) | (1 << 5))) { |
| 151 | ixp2000_reg_write(IXP2000_PCI_CONTROL, temp); | 151 | ixp2000_reg_wrb(IXP2000_PCI_CONTROL, temp); |
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | temp = *(IXP2000_PCI_CMDSTAT); | 154 | temp = *(IXP2000_PCI_CMDSTAT); |
| @@ -178,8 +178,8 @@ clear_master_aborts(void) | |||
| 178 | 178 | ||
| 179 | local_irq_save(flags); | 179 | local_irq_save(flags); |
| 180 | temp = *(IXP2000_PCI_CONTROL); | 180 | temp = *(IXP2000_PCI_CONTROL); |
| 181 | if (temp & ((1 << 8) | (1 << 5))) { | 181 | if (temp & ((1 << 8) | (1 << 5))) { |
| 182 | ixp2000_reg_write(IXP2000_PCI_CONTROL, temp); | 182 | ixp2000_reg_wrb(IXP2000_PCI_CONTROL, temp); |
| 183 | } | 183 | } |
| 184 | 184 | ||
| 185 | temp = *(IXP2000_PCI_CMDSTAT); | 185 | temp = *(IXP2000_PCI_CMDSTAT); |
diff --git a/arch/arm/mach-ixp2000/uengine.c b/arch/arm/mach-ixp2000/uengine.c new file mode 100644 index 000000000000..43e234349d4a --- /dev/null +++ b/arch/arm/mach-ixp2000/uengine.c | |||
| @@ -0,0 +1,474 @@ | |||
| 1 | /* | ||
| 2 | * Generic library functions for the microengines found on the Intel | ||
| 3 | * IXP2000 series of network processors. | ||
| 4 | * | ||
| 5 | * Copyright (C) 2004, 2005 Lennert Buytenhek <buytenh@wantstofly.org> | ||
| 6 | * Dedicated to Marija Kulikova. | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU Lesser General Public License as | ||
| 10 | * published by the Free Software Foundation; either version 2.1 of the | ||
| 11 | * License, or (at your option) any later version. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/config.h> | ||
| 15 | #include <linux/kernel.h> | ||
| 16 | #include <linux/init.h> | ||
| 17 | #include <linux/slab.h> | ||
| 18 | #include <linux/module.h> | ||
| 19 | #include <linux/string.h> | ||
| 20 | #include <asm/hardware.h> | ||
| 21 | #include <asm/arch/ixp2000-regs.h> | ||
| 22 | #include <asm/arch/uengine.h> | ||
| 23 | #include <asm/io.h> | ||
| 24 | |||
| 25 | #define USTORE_ADDRESS 0x000 | ||
| 26 | #define USTORE_DATA_LOWER 0x004 | ||
| 27 | #define USTORE_DATA_UPPER 0x008 | ||
| 28 | #define CTX_ENABLES 0x018 | ||
| 29 | #define CC_ENABLE 0x01c | ||
| 30 | #define CSR_CTX_POINTER 0x020 | ||
| 31 | #define INDIRECT_CTX_STS 0x040 | ||
| 32 | #define ACTIVE_CTX_STS 0x044 | ||
| 33 | #define INDIRECT_CTX_SIG_EVENTS 0x048 | ||
| 34 | #define INDIRECT_CTX_WAKEUP_EVENTS 0x050 | ||
| 35 | #define NN_PUT 0x080 | ||
| 36 | #define NN_GET 0x084 | ||
| 37 | #define TIMESTAMP_LOW 0x0c0 | ||
| 38 | #define TIMESTAMP_HIGH 0x0c4 | ||
| 39 | #define T_INDEX_BYTE_INDEX 0x0f4 | ||
| 40 | #define LOCAL_CSR_STATUS 0x180 | ||
| 41 | |||
| 42 | u32 ixp2000_uengine_mask; | ||
| 43 | |||
| 44 | static void *ixp2000_uengine_csr_area(int uengine) | ||
| 45 | { | ||
| 46 | return ((void *)IXP2000_UENGINE_CSR_VIRT_BASE) + (uengine << 10); | ||
| 47 | } | ||
| 48 | |||
| 49 | /* | ||
| 50 | * LOCAL_CSR_STATUS=1 after a read or write to a microengine's CSR | ||
| 51 | * space means that the microengine we tried to access was also trying | ||
| 52 | * to access its own CSR space on the same clock cycle as we did. When | ||
| 53 | * this happens, we lose the arbitration process by default, and the | ||
| 54 | * read or write we tried to do was not actually performed, so we try | ||
| 55 | * again until it succeeds. | ||
| 56 | */ | ||
| 57 | u32 ixp2000_uengine_csr_read(int uengine, int offset) | ||
| 58 | { | ||
| 59 | void *uebase; | ||
| 60 | u32 *local_csr_status; | ||
| 61 | u32 *reg; | ||
| 62 | u32 value; | ||
| 63 | |||
| 64 | uebase = ixp2000_uengine_csr_area(uengine); | ||
| 65 | |||
| 66 | local_csr_status = (u32 *)(uebase + LOCAL_CSR_STATUS); | ||
| 67 | reg = (u32 *)(uebase + offset); | ||
| 68 | do { | ||
| 69 | value = ixp2000_reg_read(reg); | ||
| 70 | } while (ixp2000_reg_read(local_csr_status) & 1); | ||
| 71 | |||
| 72 | return value; | ||
| 73 | } | ||
| 74 | EXPORT_SYMBOL(ixp2000_uengine_csr_read); | ||
| 75 | |||
| 76 | void ixp2000_uengine_csr_write(int uengine, int offset, u32 value) | ||
| 77 | { | ||
| 78 | void *uebase; | ||
| 79 | u32 *local_csr_status; | ||
| 80 | u32 *reg; | ||
| 81 | |||
| 82 | uebase = ixp2000_uengine_csr_area(uengine); | ||
| 83 | |||
| 84 | local_csr_status = (u32 *)(uebase + LOCAL_CSR_STATUS); | ||
| 85 | reg = (u32 *)(uebase + offset); | ||
| 86 | do { | ||
| 87 | ixp2000_reg_write(reg, value); | ||
| 88 | } while (ixp2000_reg_read(local_csr_status) & 1); | ||
| 89 | } | ||
| 90 | EXPORT_SYMBOL(ixp2000_uengine_csr_write); | ||
| 91 | |||
| 92 | void ixp2000_uengine_reset(u32 uengine_mask) | ||
| 93 | { | ||
| 94 | ixp2000_reg_write(IXP2000_RESET1, uengine_mask & ixp2000_uengine_mask); | ||
| 95 | ixp2000_reg_write(IXP2000_RESET1, 0); | ||
| 96 | } | ||
| 97 | EXPORT_SYMBOL(ixp2000_uengine_reset); | ||
| 98 | |||
| 99 | void ixp2000_uengine_set_mode(int uengine, u32 mode) | ||
| 100 | { | ||
| 101 | /* | ||
| 102 | * CTL_STR_PAR_EN: unconditionally enable parity checking on | ||
| 103 | * control store. | ||
| 104 | */ | ||
| 105 | mode |= 0x10000000; | ||
| 106 | ixp2000_uengine_csr_write(uengine, CTX_ENABLES, mode); | ||
| 107 | |||
| 108 | /* | ||
| 109 | * Enable updating of condition codes. | ||
| 110 | */ | ||
| 111 | ixp2000_uengine_csr_write(uengine, CC_ENABLE, 0x00002000); | ||
| 112 | |||
| 113 | /* | ||
| 114 | * Initialise other per-microengine registers. | ||
| 115 | */ | ||
| 116 | ixp2000_uengine_csr_write(uengine, NN_PUT, 0x00); | ||
| 117 | ixp2000_uengine_csr_write(uengine, NN_GET, 0x00); | ||
| 118 | ixp2000_uengine_csr_write(uengine, T_INDEX_BYTE_INDEX, 0); | ||
| 119 | } | ||
| 120 | EXPORT_SYMBOL(ixp2000_uengine_set_mode); | ||
| 121 | |||
| 122 | static int make_even_parity(u32 x) | ||
| 123 | { | ||
| 124 | return hweight32(x) & 1; | ||
| 125 | } | ||
| 126 | |||
| 127 | static void ustore_write(int uengine, u64 insn) | ||
| 128 | { | ||
| 129 | /* | ||
| 130 | * Generate even parity for top and bottom 20 bits. | ||
| 131 | */ | ||
| 132 | insn |= (u64)make_even_parity((insn >> 20) & 0x000fffff) << 41; | ||
| 133 | insn |= (u64)make_even_parity(insn & 0x000fffff) << 40; | ||
| 134 | |||
| 135 | /* | ||
| 136 | * Write to microstore. The second write auto-increments | ||
| 137 | * the USTORE_ADDRESS index register. | ||
| 138 | */ | ||
| 139 | ixp2000_uengine_csr_write(uengine, USTORE_DATA_LOWER, (u32)insn); | ||
| 140 | ixp2000_uengine_csr_write(uengine, USTORE_DATA_UPPER, (u32)(insn >> 32)); | ||
| 141 | } | ||
| 142 | |||
| 143 | void ixp2000_uengine_load_microcode(int uengine, u8 *ucode, int insns) | ||
| 144 | { | ||
| 145 | int i; | ||
| 146 | |||
| 147 | /* | ||
| 148 | * Start writing to microstore at address 0. | ||
| 149 | */ | ||
| 150 | ixp2000_uengine_csr_write(uengine, USTORE_ADDRESS, 0x80000000); | ||
| 151 | for (i = 0; i < insns; i++) { | ||
| 152 | u64 insn; | ||
| 153 | |||
| 154 | insn = (((u64)ucode[0]) << 32) | | ||
| 155 | (((u64)ucode[1]) << 24) | | ||
| 156 | (((u64)ucode[2]) << 16) | | ||
| 157 | (((u64)ucode[3]) << 8) | | ||
| 158 | ((u64)ucode[4]); | ||
| 159 | ucode += 5; | ||
| 160 | |||
| 161 | ustore_write(uengine, insn); | ||
| 162 | } | ||
| 163 | |||
| 164 | /* | ||
| 165 | * Pad with a few NOPs at the end (to avoid the microengine | ||
| 166 | * aborting as it prefetches beyond the last instruction), unless | ||
| 167 | * we run off the end of the instruction store first, at which | ||
| 168 | * point the address register will wrap back to zero. | ||
| 169 | */ | ||
| 170 | for (i = 0; i < 4; i++) { | ||
| 171 | u32 addr; | ||
| 172 | |||
| 173 | addr = ixp2000_uengine_csr_read(uengine, USTORE_ADDRESS); | ||
| 174 | if (addr == 0x80000000) | ||
| 175 | break; | ||
| 176 | ustore_write(uengine, 0xf0000c0300ULL); | ||
| 177 | } | ||
| 178 | |||
| 179 | /* | ||
| 180 | * End programming. | ||
| 181 | */ | ||
| 182 | ixp2000_uengine_csr_write(uengine, USTORE_ADDRESS, 0x00000000); | ||
| 183 | } | ||
| 184 | EXPORT_SYMBOL(ixp2000_uengine_load_microcode); | ||
| 185 | |||
| 186 | void ixp2000_uengine_init_context(int uengine, int context, int pc) | ||
| 187 | { | ||
| 188 | /* | ||
| 189 | * Select the right context for indirect access. | ||
| 190 | */ | ||
| 191 | ixp2000_uengine_csr_write(uengine, CSR_CTX_POINTER, context); | ||
| 192 | |||
| 193 | /* | ||
| 194 | * Initialise signal masks to immediately go to Ready state. | ||
| 195 | */ | ||
| 196 | ixp2000_uengine_csr_write(uengine, INDIRECT_CTX_SIG_EVENTS, 1); | ||
| 197 | ixp2000_uengine_csr_write(uengine, INDIRECT_CTX_WAKEUP_EVENTS, 1); | ||
| 198 | |||
| 199 | /* | ||
| 200 | * Set program counter. | ||
| 201 | */ | ||
| 202 | ixp2000_uengine_csr_write(uengine, INDIRECT_CTX_STS, pc); | ||
| 203 | } | ||
| 204 | EXPORT_SYMBOL(ixp2000_uengine_init_context); | ||
| 205 | |||
| 206 | void ixp2000_uengine_start_contexts(int uengine, u8 ctx_mask) | ||
| 207 | { | ||
| 208 | u32 mask; | ||
| 209 | |||
| 210 | /* | ||
| 211 | * Enable the specified context to go to Executing state. | ||
| 212 | */ | ||
| 213 | mask = ixp2000_uengine_csr_read(uengine, CTX_ENABLES); | ||
| 214 | mask |= ctx_mask << 8; | ||
| 215 | ixp2000_uengine_csr_write(uengine, CTX_ENABLES, mask); | ||
| 216 | } | ||
| 217 | EXPORT_SYMBOL(ixp2000_uengine_start_contexts); | ||
| 218 | |||
| 219 | void ixp2000_uengine_stop_contexts(int uengine, u8 ctx_mask) | ||
| 220 | { | ||
| 221 | u32 mask; | ||
| 222 | |||
| 223 | /* | ||
| 224 | * Disable the Ready->Executing transition. Note that this | ||
| 225 | * does not stop the context until it voluntarily yields. | ||
| 226 | */ | ||
| 227 | mask = ixp2000_uengine_csr_read(uengine, CTX_ENABLES); | ||
| 228 | mask &= ~(ctx_mask << 8); | ||
| 229 | ixp2000_uengine_csr_write(uengine, CTX_ENABLES, mask); | ||
| 230 | } | ||
| 231 | EXPORT_SYMBOL(ixp2000_uengine_stop_contexts); | ||
| 232 | |||
| 233 | static int check_ixp_type(struct ixp2000_uengine_code *c) | ||
| 234 | { | ||
| 235 | u32 product_id; | ||
| 236 | u32 rev; | ||
| 237 | |||
| 238 | product_id = ixp2000_reg_read(IXP2000_PRODUCT_ID); | ||
| 239 | if (((product_id >> 16) & 0x1f) != 0) | ||
| 240 | return 0; | ||
| 241 | |||
| 242 | switch ((product_id >> 8) & 0xff) { | ||
| 243 | case 0: /* IXP2800 */ | ||
| 244 | if (!(c->cpu_model_bitmask & 4)) | ||
| 245 | return 0; | ||
| 246 | break; | ||
| 247 | |||
| 248 | case 1: /* IXP2850 */ | ||
| 249 | if (!(c->cpu_model_bitmask & 8)) | ||
| 250 | return 0; | ||
| 251 | break; | ||
| 252 | |||
| 253 | case 2: /* IXP2400 */ | ||
| 254 | if (!(c->cpu_model_bitmask & 2)) | ||
| 255 | return 0; | ||
| 256 | break; | ||
| 257 | |||
| 258 | default: | ||
| 259 | return 0; | ||
| 260 | } | ||
| 261 | |||
| 262 | rev = product_id & 0xff; | ||
| 263 | if (rev < c->cpu_min_revision || rev > c->cpu_max_revision) | ||
| 264 | return 0; | ||
| 265 | |||
| 266 | return 1; | ||
| 267 | } | ||
| 268 | |||
| 269 | static void generate_ucode(u8 *ucode, u32 *gpr_a, u32 *gpr_b) | ||
| 270 | { | ||
| 271 | int offset; | ||
| 272 | int i; | ||
| 273 | |||
| 274 | offset = 0; | ||
| 275 | |||
| 276 | for (i = 0; i < 128; i++) { | ||
| 277 | u8 b3; | ||
| 278 | u8 b2; | ||
| 279 | u8 b1; | ||
| 280 | u8 b0; | ||
| 281 | |||
| 282 | b3 = (gpr_a[i] >> 24) & 0xff; | ||
| 283 | b2 = (gpr_a[i] >> 16) & 0xff; | ||
| 284 | b1 = (gpr_a[i] >> 8) & 0xff; | ||
| 285 | b0 = gpr_a[i] & 0xff; | ||
| 286 | |||
| 287 | // immed[@ai, (b1 << 8) | b0] | ||
| 288 | // 11110000 0000VVVV VVVV11VV VVVVVV00 1IIIIIII | ||
| 289 | ucode[offset++] = 0xf0; | ||
| 290 | ucode[offset++] = (b1 >> 4); | ||
| 291 | ucode[offset++] = (b1 << 4) | 0x0c | (b0 >> 6); | ||
| 292 | ucode[offset++] = (b0 << 2); | ||
| 293 | ucode[offset++] = 0x80 | i; | ||
| 294 | |||
| 295 | // immed_w1[@ai, (b3 << 8) | b2] | ||
| 296 | // 11110100 0100VVVV VVVV11VV VVVVVV00 1IIIIIII | ||
| 297 | ucode[offset++] = 0xf4; | ||
| 298 | ucode[offset++] = 0x40 | (b3 >> 4); | ||
| 299 | ucode[offset++] = (b3 << 4) | 0x0c | (b2 >> 6); | ||
| 300 | ucode[offset++] = (b2 << 2); | ||
| 301 | ucode[offset++] = 0x80 | i; | ||
| 302 | } | ||
| 303 | |||
| 304 | for (i = 0; i < 128; i++) { | ||
| 305 | u8 b3; | ||
| 306 | u8 b2; | ||
| 307 | u8 b1; | ||
| 308 | u8 b0; | ||
| 309 | |||
| 310 | b3 = (gpr_b[i] >> 24) & 0xff; | ||
| 311 | b2 = (gpr_b[i] >> 16) & 0xff; | ||
| 312 | b1 = (gpr_b[i] >> 8) & 0xff; | ||
| 313 | b0 = gpr_b[i] & 0xff; | ||
| 314 | |||
| 315 | // immed[@bi, (b1 << 8) | b0] | ||
| 316 | // 11110000 0000VVVV VVVV001I IIIIII11 VVVVVVVV | ||
| 317 | ucode[offset++] = 0xf0; | ||
| 318 | ucode[offset++] = (b1 >> 4); | ||
| 319 | ucode[offset++] = (b1 << 4) | 0x02 | (i >> 6); | ||
| 320 | ucode[offset++] = (i << 2) | 0x03; | ||
| 321 | ucode[offset++] = b0; | ||
| 322 | |||
| 323 | // immed_w1[@bi, (b3 << 8) | b2] | ||
| 324 | // 11110100 0100VVVV VVVV001I IIIIII11 VVVVVVVV | ||
| 325 | ucode[offset++] = 0xf4; | ||
| 326 | ucode[offset++] = 0x40 | (b3 >> 4); | ||
| 327 | ucode[offset++] = (b3 << 4) | 0x02 | (i >> 6); | ||
| 328 | ucode[offset++] = (i << 2) | 0x03; | ||
| 329 | ucode[offset++] = b2; | ||
| 330 | } | ||
| 331 | |||
| 332 | // ctx_arb[kill] | ||
| 333 | ucode[offset++] = 0xe0; | ||
| 334 | ucode[offset++] = 0x00; | ||
| 335 | ucode[offset++] = 0x01; | ||
| 336 | ucode[offset++] = 0x00; | ||
| 337 | ucode[offset++] = 0x00; | ||
| 338 | } | ||
| 339 | |||
| 340 | static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c) | ||
| 341 | { | ||
| 342 | int per_ctx_regs; | ||
| 343 | u32 *gpr_a; | ||
| 344 | u32 *gpr_b; | ||
| 345 | u8 *ucode; | ||
| 346 | int i; | ||
| 347 | |||
| 348 | gpr_a = kmalloc(128 * sizeof(u32), GFP_KERNEL); | ||
| 349 | gpr_b = kmalloc(128 * sizeof(u32), GFP_KERNEL); | ||
| 350 | ucode = kmalloc(513 * 5, GFP_KERNEL); | ||
| 351 | if (gpr_a == NULL || gpr_b == NULL || ucode == NULL) { | ||
| 352 | kfree(ucode); | ||
| 353 | kfree(gpr_b); | ||
| 354 | kfree(gpr_a); | ||
| 355 | return 1; | ||
| 356 | } | ||
| 357 | |||
| 358 | per_ctx_regs = 16; | ||
| 359 | if (c->uengine_parameters & IXP2000_UENGINE_4_CONTEXTS) | ||
| 360 | per_ctx_regs = 32; | ||
| 361 | |||
| 362 | memset(gpr_a, 0, sizeof(gpr_a)); | ||
| 363 | memset(gpr_b, 0, sizeof(gpr_b)); | ||
| 364 | for (i = 0; i < 256; i++) { | ||
| 365 | struct ixp2000_reg_value *r = c->initial_reg_values + i; | ||
| 366 | u32 *bank; | ||
| 367 | int inc; | ||
| 368 | int j; | ||
| 369 | |||
| 370 | if (r->reg == -1) | ||
| 371 | break; | ||
| 372 | |||
| 373 | bank = (r->reg & 0x400) ? gpr_b : gpr_a; | ||
| 374 | inc = (r->reg & 0x80) ? 128 : per_ctx_regs; | ||
| 375 | |||
| 376 | j = r->reg & 0x7f; | ||
| 377 | while (j < 128) { | ||
| 378 | bank[j] = r->value; | ||
| 379 | j += inc; | ||
| 380 | } | ||
| 381 | } | ||
| 382 | |||
| 383 | generate_ucode(ucode, gpr_a, gpr_b); | ||
| 384 | ixp2000_uengine_load_microcode(uengine, ucode, 513); | ||
| 385 | ixp2000_uengine_init_context(uengine, 0, 0); | ||
| 386 | ixp2000_uengine_start_contexts(uengine, 0x01); | ||
| 387 | for (i = 0; i < 100; i++) { | ||
| 388 | u32 status; | ||
| 389 | |||
| 390 | status = ixp2000_uengine_csr_read(uengine, ACTIVE_CTX_STS); | ||
| 391 | if (!(status & 0x80000000)) | ||
| 392 | break; | ||
| 393 | } | ||
| 394 | ixp2000_uengine_stop_contexts(uengine, 0x01); | ||
| 395 | |||
| 396 | kfree(ucode); | ||
| 397 | kfree(gpr_b); | ||
| 398 | kfree(gpr_a); | ||
| 399 | |||
| 400 | return !!(i == 100); | ||
| 401 | } | ||
| 402 | |||
| 403 | int ixp2000_uengine_load(int uengine, struct ixp2000_uengine_code *c) | ||
| 404 | { | ||
| 405 | int ctx; | ||
| 406 | |||
| 407 | if (!check_ixp_type(c)) | ||
| 408 | return 1; | ||
| 409 | |||
| 410 | if (!(ixp2000_uengine_mask & (1 << uengine))) | ||
| 411 | return 1; | ||
| 412 | |||
| 413 | ixp2000_uengine_reset(1 << uengine); | ||
| 414 | ixp2000_uengine_set_mode(uengine, c->uengine_parameters); | ||
| 415 | if (set_initial_registers(uengine, c)) | ||
| 416 | return 1; | ||
| 417 | ixp2000_uengine_load_microcode(uengine, c->insns, c->num_insns); | ||
| 418 | |||
| 419 | for (ctx = 0; ctx < 8; ctx++) | ||
| 420 | ixp2000_uengine_init_context(uengine, ctx, 0); | ||
| 421 | |||
| 422 | return 0; | ||
| 423 | } | ||
| 424 | EXPORT_SYMBOL(ixp2000_uengine_load); | ||
| 425 | |||
| 426 | |||
| 427 | static int __init ixp2000_uengine_init(void) | ||
| 428 | { | ||
| 429 | int uengine; | ||
| 430 | u32 value; | ||
| 431 | |||
| 432 | /* | ||
| 433 | * Determine number of microengines present. | ||
| 434 | */ | ||
| 435 | switch ((ixp2000_reg_read(IXP2000_PRODUCT_ID) >> 8) & 0x1fff) { | ||
| 436 | case 0: /* IXP2800 */ | ||
| 437 | case 1: /* IXP2850 */ | ||
| 438 | ixp2000_uengine_mask = 0x00ff00ff; | ||
| 439 | break; | ||
| 440 | |||
| 441 | case 2: /* IXP2400 */ | ||
| 442 | ixp2000_uengine_mask = 0x000f000f; | ||
| 443 | break; | ||
| 444 | |||
| 445 | default: | ||
| 446 | printk(KERN_INFO "Detected unknown IXP2000 model (%.8x)\n", | ||
| 447 | (unsigned int)ixp2000_reg_read(IXP2000_PRODUCT_ID)); | ||
| 448 | ixp2000_uengine_mask = 0x00000000; | ||
| 449 | break; | ||
| 450 | } | ||
| 451 | |||
| 452 | /* | ||
| 453 | * Reset microengines. | ||
| 454 | */ | ||
| 455 | ixp2000_reg_write(IXP2000_RESET1, ixp2000_uengine_mask); | ||
| 456 | ixp2000_reg_write(IXP2000_RESET1, 0); | ||
| 457 | |||
| 458 | /* | ||
| 459 | * Synchronise timestamp counters across all microengines. | ||
| 460 | */ | ||
| 461 | value = ixp2000_reg_read(IXP2000_MISC_CONTROL); | ||
| 462 | ixp2000_reg_write(IXP2000_MISC_CONTROL, value & ~0x80); | ||
| 463 | for (uengine = 0; uengine < 32; uengine++) { | ||
| 464 | if (ixp2000_uengine_mask & (1 << uengine)) { | ||
| 465 | ixp2000_uengine_csr_write(uengine, TIMESTAMP_LOW, 0); | ||
| 466 | ixp2000_uengine_csr_write(uengine, TIMESTAMP_HIGH, 0); | ||
| 467 | } | ||
| 468 | } | ||
| 469 | ixp2000_reg_write(IXP2000_MISC_CONTROL, value | 0x80); | ||
| 470 | |||
| 471 | return 0; | ||
| 472 | } | ||
| 473 | |||
| 474 | subsys_initcall(ixp2000_uengine_init); | ||
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c index 6c396447c4e0..f3c687cf0071 100644 --- a/arch/arm/mach-ixp4xx/common.c +++ b/arch/arm/mach-ixp4xx/common.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/serial.h> | 20 | #include <linux/serial.h> |
| 21 | #include <linux/sched.h> | 21 | #include <linux/sched.h> |
| 22 | #include <linux/tty.h> | 22 | #include <linux/tty.h> |
| 23 | #include <linux/platform_device.h> | ||
| 23 | #include <linux/serial_core.h> | 24 | #include <linux/serial_core.h> |
| 24 | #include <linux/bootmem.h> | 25 | #include <linux/bootmem.h> |
| 25 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
diff --git a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c index a20eabc132b0..4eb962fdb3a8 100644 --- a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c +++ b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | #include <linux/tty.h> | 11 | #include <linux/tty.h> |
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/device.h> | 13 | #include <linux/platform_device.h> |
| 14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
| 15 | 15 | ||
| 16 | #include <asm/hardware.h> | 16 | #include <asm/hardware.h> |
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index d46a70063b0c..4ee6bd8a50b8 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | 21 | ||
| 22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
| 23 | #include <linux/init.h> | 23 | #include <linux/init.h> |
| 24 | #include <linux/device.h> | 24 | #include <linux/platform_device.h> |
| 25 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
| 26 | #include <linux/mtd/mtd.h> | 26 | #include <linux/mtd/mtd.h> |
| 27 | #include <linux/mtd/partitions.h> | 27 | #include <linux/mtd/partitions.h> |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 2798613696fa..fc824361430d 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
| 20 | #include <linux/major.h> | 20 | #include <linux/major.h> |
| 21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
| 22 | #include <linux/device.h> | 22 | #include <linux/platform_device.h> |
| 23 | #include <linux/errno.h> | 23 | #include <linux/errno.h> |
| 24 | #include <linux/mtd/mtd.h> | 24 | #include <linux/mtd/mtd.h> |
| 25 | #include <linux/mtd/partitions.h> | 25 | #include <linux/mtd/partitions.h> |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index fd9183ff2ed5..a2eac853b2da 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | 18 | ||
| 19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
| 20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
| 21 | #include <linux/device.h> | 21 | #include <linux/platform_device.h> |
| 22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
| 23 | #include <linux/mtd/mtd.h> | 23 | #include <linux/mtd/mtd.h> |
| 24 | #include <linux/mtd/partitions.h> | 24 | #include <linux/mtd/partitions.h> |
diff --git a/arch/arm/mach-omap1/board-netstar.c b/arch/arm/mach-omap1/board-netstar.c index d904e643f5ec..c851c2e4dfcb 100644 --- a/arch/arm/mach-omap1/board-netstar.c +++ b/arch/arm/mach-omap1/board-netstar.c | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | */ | 11 | */ |
| 12 | 12 | ||
| 13 | #include <linux/delay.h> | 13 | #include <linux/delay.h> |
| 14 | #include <linux/device.h> | 14 | #include <linux/platform_device.h> |
| 15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index 21103df50415..a88524e7c315 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
| @@ -28,7 +28,7 @@ | |||
| 28 | 28 | ||
| 29 | #include <linux/kernel.h> | 29 | #include <linux/kernel.h> |
| 30 | #include <linux/init.h> | 30 | #include <linux/init.h> |
| 31 | #include <linux/device.h> | 31 | #include <linux/platform_device.h> |
| 32 | #include <linux/interrupt.h> | 32 | #include <linux/interrupt.h> |
| 33 | 33 | ||
| 34 | #include <linux/mtd/mtd.h> | 34 | #include <linux/mtd/mtd.h> |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index 2ba26e239108..354b157acb3a 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | 13 | ||
| 14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
| 15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
| 16 | #include <linux/device.h> | 16 | #include <linux/platform_device.h> |
| 17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
| 18 | #include <linux/mtd/mtd.h> | 18 | #include <linux/mtd/mtd.h> |
| 19 | #include <linux/mtd/partitions.h> | 19 | #include <linux/mtd/partitions.h> |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index bf30b1acda0b..3f018b296861 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
| 16 | #include <linux/device.h> | 16 | #include <linux/platform_device.h> |
| 17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
| 18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
| 19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c index e8b3981444cd..3c5d901efeaa 100644 --- a/arch/arm/mach-omap1/devices.c +++ b/arch/arm/mach-omap1/devices.c | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
| 14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
| 15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
| 16 | #include <linux/device.h> | 16 | #include <linux/platform_device.h> |
| 17 | 17 | ||
| 18 | #include <asm/hardware.h> | 18 | #include <asm/hardware.h> |
| 19 | #include <asm/io.h> | 19 | #include <asm/io.h> |
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index 656f73bbcb5a..eb5f6d744a4a 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/device.h> | 17 | #include <linux/platform_device.h> |
| 18 | #include <linux/major.h> | 18 | #include <linux/major.h> |
| 19 | #include <linux/fs.h> | 19 | #include <linux/fs.h> |
| 20 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
diff --git a/arch/arm/mach-pxa/corgi_lcd.c b/arch/arm/mach-pxa/corgi_lcd.c index 370df113dc06..54162ba95414 100644 --- a/arch/arm/mach-pxa/corgi_lcd.c +++ b/arch/arm/mach-pxa/corgi_lcd.c | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | 17 | ||
| 18 | #include <linux/delay.h> | 18 | #include <linux/delay.h> |
| 19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
| 20 | #include <linux/device.h> | 20 | #include <linux/platform_device.h> |
| 21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
| 22 | #include <asm/arch/akita.h> | 22 | #include <asm/arch/akita.h> |
| 23 | #include <asm/arch/corgi.h> | 23 | #include <asm/arch/corgi.h> |
diff --git a/arch/arm/mach-pxa/corgi_ssp.c b/arch/arm/mach-pxa/corgi_ssp.c index 136c269db0b7..591e5f32dbec 100644 --- a/arch/arm/mach-pxa/corgi_ssp.c +++ b/arch/arm/mach-pxa/corgi_ssp.c | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | #include <linux/sched.h> | 15 | #include <linux/sched.h> |
| 16 | #include <linux/slab.h> | 16 | #include <linux/slab.h> |
| 17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
| 18 | #include <linux/device.h> | 18 | #include <linux/platform_device.h> |
| 19 | #include <asm/hardware.h> | 19 | #include <asm/hardware.h> |
| 20 | #include <asm/mach-types.h> | 20 | #include <asm/mach-types.h> |
| 21 | 21 | ||
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c index 9c0289333301..9b48a90aefce 100644 --- a/arch/arm/mach-pxa/generic.c +++ b/arch/arm/mach-pxa/generic.c | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
| 21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
| 22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
| 23 | #include <linux/device.h> | 23 | #include <linux/platform_device.h> |
| 24 | #include <linux/ioport.h> | 24 | #include <linux/ioport.h> |
| 25 | #include <linux/pm.h> | 25 | #include <linux/pm.h> |
| 26 | #include <linux/string.h> | 26 | #include <linux/string.h> |
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c index 01a83ab09ac3..7de159e2ab42 100644 --- a/arch/arm/mach-pxa/idp.c +++ b/arch/arm/mach-pxa/idp.c | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | 18 | ||
| 19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
| 20 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
| 21 | #include <linux/device.h> | 21 | #include <linux/platform_device.h> |
| 22 | #include <linux/fb.h> | 22 | #include <linux/fb.h> |
| 23 | 23 | ||
| 24 | #include <asm/setup.h> | 24 | #include <asm/setup.h> |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index beccf455f796..b464bc88ff93 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
| @@ -14,21 +14,25 @@ | |||
| 14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
| 15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/device.h> | 17 | #include <linux/platform_device.h> |
| 18 | #include <linux/sysdev.h> | 18 | #include <linux/sysdev.h> |
| 19 | #include <linux/major.h> | 19 | #include <linux/major.h> |
| 20 | #include <linux/fb.h> | 20 | #include <linux/fb.h> |
| 21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
| 22 | #include <linux/mtd/mtd.h> | ||
| 23 | #include <linux/mtd/partitions.h> | ||
| 22 | 24 | ||
| 23 | #include <asm/setup.h> | 25 | #include <asm/setup.h> |
| 24 | #include <asm/memory.h> | 26 | #include <asm/memory.h> |
| 25 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
| 26 | #include <asm/hardware.h> | 28 | #include <asm/hardware.h> |
| 27 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
| 30 | #include <asm/sizes.h> | ||
| 28 | 31 | ||
| 29 | #include <asm/mach/arch.h> | 32 | #include <asm/mach/arch.h> |
| 30 | #include <asm/mach/map.h> | 33 | #include <asm/mach/map.h> |
| 31 | #include <asm/mach/irq.h> | 34 | #include <asm/mach/irq.h> |
| 35 | #include <asm/mach/flash.h> | ||
| 32 | 36 | ||
| 33 | #include <asm/hardware/sa1111.h> | 37 | #include <asm/hardware/sa1111.h> |
| 34 | 38 | ||
| @@ -175,7 +179,7 @@ static struct platform_device sa1111_device = { | |||
| 175 | static struct resource smc91x_resources[] = { | 179 | static struct resource smc91x_resources[] = { |
| 176 | [0] = { | 180 | [0] = { |
| 177 | .name = "smc91x-regs", | 181 | .name = "smc91x-regs", |
| 178 | .start = 0x0c000000, | 182 | .start = 0x0c000c00, |
| 179 | .end = 0x0c0fffff, | 183 | .end = 0x0c0fffff, |
| 180 | .flags = IORESOURCE_MEM, | 184 | .flags = IORESOURCE_MEM, |
| 181 | }, | 185 | }, |
| @@ -199,10 +203,75 @@ static struct platform_device smc91x_device = { | |||
| 199 | .resource = smc91x_resources, | 203 | .resource = smc91x_resources, |
| 200 | }; | 204 | }; |
| 201 | 205 | ||
| 206 | static struct resource flash_resources[] = { | ||
| 207 | [0] = { | ||
| 208 | .start = 0x00000000, | ||
| 209 | .end = SZ_64M - 1, | ||
| 210 | .flags = IORESOURCE_MEM, | ||
| 211 | }, | ||
| 212 | [1] = { | ||
| 213 | .start = 0x04000000, | ||
| 214 | .end = 0x04000000 + SZ_64M - 1, | ||
| 215 | .flags = IORESOURCE_MEM, | ||
| 216 | }, | ||
| 217 | }; | ||
| 218 | |||
| 219 | static struct mtd_partition lubbock_partitions[] = { | ||
| 220 | { | ||
| 221 | .name = "Bootloader", | ||
| 222 | .size = 0x00040000, | ||
| 223 | .offset = 0, | ||
| 224 | .mask_flags = MTD_WRITEABLE /* force read-only */ | ||
| 225 | },{ | ||
| 226 | .name = "Kernel", | ||
| 227 | .size = 0x00100000, | ||
| 228 | .offset = 0x00040000, | ||
| 229 | },{ | ||
| 230 | .name = "Filesystem", | ||
| 231 | .size = MTDPART_SIZ_FULL, | ||
| 232 | .offset = 0x00140000 | ||
| 233 | } | ||
| 234 | }; | ||
| 235 | |||
| 236 | static struct flash_platform_data lubbock_flash_data[2] = { | ||
| 237 | { | ||
| 238 | .map_name = "cfi_probe", | ||
| 239 | .parts = lubbock_partitions, | ||
| 240 | .nr_parts = ARRAY_SIZE(lubbock_partitions), | ||
| 241 | }, { | ||
| 242 | .map_name = "cfi_probe", | ||
| 243 | .parts = NULL, | ||
| 244 | .nr_parts = 0, | ||
| 245 | } | ||
| 246 | }; | ||
| 247 | |||
| 248 | static struct platform_device lubbock_flash_device[2] = { | ||
| 249 | { | ||
| 250 | .name = "pxa2xx-flash", | ||
| 251 | .id = 0, | ||
| 252 | .dev = { | ||
| 253 | .platform_data = &lubbock_flash_data[0], | ||
| 254 | }, | ||
| 255 | .resource = &flash_resources[0], | ||
| 256 | .num_resources = 1, | ||
| 257 | }, | ||
| 258 | { | ||
| 259 | .name = "pxa2xx-flash", | ||
| 260 | .id = 1, | ||
| 261 | .dev = { | ||
| 262 | .platform_data = &lubbock_flash_data[1], | ||
| 263 | }, | ||
| 264 | .resource = &flash_resources[1], | ||
| 265 | .num_resources = 1, | ||
| 266 | }, | ||
| 267 | }; | ||
| 268 | |||
| 202 | static struct platform_device *devices[] __initdata = { | 269 | static struct platform_device *devices[] __initdata = { |
| 203 | &sa1111_device, | 270 | &sa1111_device, |
| 204 | &lub_audio_device, | 271 | &lub_audio_device, |
| 205 | &smc91x_device, | 272 | &smc91x_device, |
| 273 | &lubbock_flash_device[0], | ||
| 274 | &lubbock_flash_device[1], | ||
| 206 | }; | 275 | }; |
| 207 | 276 | ||
| 208 | static struct pxafb_mach_info sharp_lm8v31 __initdata = { | 277 | static struct pxafb_mach_info sharp_lm8v31 __initdata = { |
| @@ -224,18 +293,75 @@ static struct pxafb_mach_info sharp_lm8v31 __initdata = { | |||
| 224 | .lccr3 = LCCR3_PCP | LCCR3_Acb(255), | 293 | .lccr3 = LCCR3_PCP | LCCR3_Acb(255), |
| 225 | }; | 294 | }; |
| 226 | 295 | ||
| 227 | static int lubbock_mci_init(struct device *dev, irqreturn_t (*lubbock_detect_int)(int, void *, struct pt_regs *), void *data) | 296 | #define MMC_POLL_RATE msecs_to_jiffies(1000) |
| 297 | |||
| 298 | static void lubbock_mmc_poll(unsigned long); | ||
| 299 | static irqreturn_t (*mmc_detect_int)(int, void *, struct pt_regs *); | ||
| 300 | |||
| 301 | static struct timer_list mmc_timer = { | ||
| 302 | .function = lubbock_mmc_poll, | ||
| 303 | }; | ||
| 304 | |||
| 305 | static void lubbock_mmc_poll(unsigned long data) | ||
| 306 | { | ||
| 307 | unsigned long flags; | ||
| 308 | |||
| 309 | /* clear any previous irq state, then ... */ | ||
| 310 | local_irq_save(flags); | ||
| 311 | LUB_IRQ_SET_CLR &= ~(1 << 0); | ||
| 312 | local_irq_restore(flags); | ||
| 313 | |||
| 314 | /* poll until mmc/sd card is removed */ | ||
| 315 | if (LUB_IRQ_SET_CLR & (1 << 0)) | ||
| 316 | mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE); | ||
| 317 | else { | ||
| 318 | (void) mmc_detect_int(LUBBOCK_SD_IRQ, (void *)data, NULL); | ||
| 319 | enable_irq(LUBBOCK_SD_IRQ); | ||
| 320 | } | ||
| 321 | } | ||
| 322 | |||
| 323 | static irqreturn_t lubbock_detect_int(int irq, void *data, struct pt_regs *regs) | ||
| 324 | { | ||
| 325 | /* IRQ is level triggered; disable, and poll for removal */ | ||
| 326 | disable_irq(irq); | ||
| 327 | mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE); | ||
| 328 | |||
| 329 | return mmc_detect_int(irq, data, regs); | ||
| 330 | } | ||
| 331 | |||
| 332 | static int lubbock_mci_init(struct device *dev, | ||
| 333 | irqreturn_t (*detect_int)(int, void *, struct pt_regs *), | ||
| 334 | void *data) | ||
| 228 | { | 335 | { |
| 229 | /* setup GPIO for PXA25x MMC controller */ | 336 | /* setup GPIO for PXA25x MMC controller */ |
| 230 | pxa_gpio_mode(GPIO6_MMCCLK_MD); | 337 | pxa_gpio_mode(GPIO6_MMCCLK_MD); |
| 231 | pxa_gpio_mode(GPIO8_MMCCS0_MD); | 338 | pxa_gpio_mode(GPIO8_MMCCS0_MD); |
| 232 | 339 | ||
| 233 | return 0; | 340 | /* detect card insert/eject */ |
| 341 | mmc_detect_int = detect_int; | ||
| 342 | init_timer(&mmc_timer); | ||
| 343 | mmc_timer.data = (unsigned long) data; | ||
| 344 | return request_irq(LUBBOCK_SD_IRQ, lubbock_detect_int, | ||
| 345 | SA_SAMPLE_RANDOM, "lubbock-sd-detect", data); | ||
| 346 | } | ||
| 347 | |||
| 348 | static int lubbock_mci_get_ro(struct device *dev) | ||
| 349 | { | ||
| 350 | return (LUB_MISC_RD & (1 << 2)) != 0; | ||
| 351 | } | ||
| 352 | |||
| 353 | static void lubbock_mci_exit(struct device *dev, void *data) | ||
| 354 | { | ||
| 355 | free_irq(LUBBOCK_SD_IRQ, data); | ||
| 356 | del_timer_sync(&mmc_timer); | ||
| 234 | } | 357 | } |
| 235 | 358 | ||
| 236 | static struct pxamci_platform_data lubbock_mci_platform_data = { | 359 | static struct pxamci_platform_data lubbock_mci_platform_data = { |
| 237 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 360 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
| 361 | .detect_delay = 1, | ||
| 238 | .init = lubbock_mci_init, | 362 | .init = lubbock_mci_init, |
| 363 | .get_ro = lubbock_mci_get_ro, | ||
| 364 | .exit = lubbock_mci_exit, | ||
| 239 | }; | 365 | }; |
| 240 | 366 | ||
| 241 | static void lubbock_irda_transceiver_mode(struct device *dev, int mode) | 367 | static void lubbock_irda_transceiver_mode(struct device *dev, int mode) |
| @@ -258,10 +384,21 @@ static struct pxaficp_platform_data lubbock_ficp_platform_data = { | |||
| 258 | 384 | ||
| 259 | static void __init lubbock_init(void) | 385 | static void __init lubbock_init(void) |
| 260 | { | 386 | { |
| 387 | int flashboot = (LUB_CONF_SWITCHES & 1); | ||
| 388 | |||
| 261 | pxa_set_udc_info(&udc_info); | 389 | pxa_set_udc_info(&udc_info); |
| 262 | set_pxa_fb_info(&sharp_lm8v31); | 390 | set_pxa_fb_info(&sharp_lm8v31); |
| 263 | pxa_set_mci_info(&lubbock_mci_platform_data); | 391 | pxa_set_mci_info(&lubbock_mci_platform_data); |
| 264 | pxa_set_ficp_info(&lubbock_ficp_platform_data); | 392 | pxa_set_ficp_info(&lubbock_ficp_platform_data); |
| 393 | |||
| 394 | lubbock_flash_data[0].width = lubbock_flash_data[1].width = | ||
| 395 | (BOOT_DEF & 1) ? 2 : 4; | ||
| 396 | /* Compensate for the nROMBT switch which swaps the flash banks */ | ||
| 397 | printk(KERN_NOTICE "Lubbock configured to boot from %s (bank %d)\n", | ||
| 398 | flashboot?"Flash":"ROM", flashboot); | ||
| 399 | |||
| 400 | lubbock_flash_data[flashboot^1].name = "application-flash"; | ||
| 401 | lubbock_flash_data[flashboot].name = "boot-rom"; | ||
| 265 | (void) platform_add_devices(devices, ARRAY_SIZE(devices)); | 402 | (void) platform_add_devices(devices, ARRAY_SIZE(devices)); |
| 266 | } | 403 | } |
| 267 | 404 | ||
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index a48c64026e1f..07892f4012d8 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
| @@ -14,12 +14,15 @@ | |||
| 14 | */ | 14 | */ |
| 15 | 15 | ||
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/device.h> | 17 | #include <linux/platform_device.h> |
| 18 | #include <linux/sysdev.h> | 18 | #include <linux/sysdev.h> |
| 19 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
| 20 | #include <linux/sched.h> | 20 | #include <linux/sched.h> |
| 21 | #include <linux/bitops.h> | 21 | #include <linux/bitops.h> |
| 22 | #include <linux/fb.h> | 22 | #include <linux/fb.h> |
| 23 | #include <linux/ioport.h> | ||
| 24 | #include <linux/mtd/mtd.h> | ||
| 25 | #include <linux/mtd/partitions.h> | ||
| 23 | 26 | ||
| 24 | #include <asm/types.h> | 27 | #include <asm/types.h> |
| 25 | #include <asm/setup.h> | 28 | #include <asm/setup.h> |
| @@ -27,10 +30,12 @@ | |||
| 27 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
| 28 | #include <asm/hardware.h> | 31 | #include <asm/hardware.h> |
| 29 | #include <asm/irq.h> | 32 | #include <asm/irq.h> |
| 33 | #include <asm/sizes.h> | ||
| 30 | 34 | ||
| 31 | #include <asm/mach/arch.h> | 35 | #include <asm/mach/arch.h> |
| 32 | #include <asm/mach/map.h> | 36 | #include <asm/mach/map.h> |
| 33 | #include <asm/mach/irq.h> | 37 | #include <asm/mach/irq.h> |
| 38 | #include <asm/mach/flash.h> | ||
| 34 | 39 | ||
| 35 | #include <asm/arch/pxa-regs.h> | 40 | #include <asm/arch/pxa-regs.h> |
| 36 | #include <asm/arch/mainstone.h> | 41 | #include <asm/arch/mainstone.h> |
| @@ -190,6 +195,69 @@ static struct platform_device mst_audio_device = { | |||
| 190 | .dev = { .platform_data = &mst_audio_ops }, | 195 | .dev = { .platform_data = &mst_audio_ops }, |
| 191 | }; | 196 | }; |
| 192 | 197 | ||
| 198 | static struct resource flash_resources[] = { | ||
| 199 | [0] = { | ||
| 200 | .start = PXA_CS0_PHYS, | ||
| 201 | .end = PXA_CS0_PHYS + SZ_64M - 1, | ||
| 202 | .flags = IORESOURCE_MEM, | ||
| 203 | }, | ||
| 204 | [1] = { | ||
| 205 | .start = PXA_CS1_PHYS, | ||
| 206 | .end = PXA_CS1_PHYS + SZ_64M - 1, | ||
| 207 | .flags = IORESOURCE_MEM, | ||
| 208 | }, | ||
| 209 | }; | ||
| 210 | |||
| 211 | static struct mtd_partition mainstoneflash0_partitions[] = { | ||
| 212 | { | ||
| 213 | .name = "Bootloader", | ||
| 214 | .size = 0x00040000, | ||
| 215 | .offset = 0, | ||
| 216 | .mask_flags = MTD_WRITEABLE /* force read-only */ | ||
| 217 | },{ | ||
| 218 | .name = "Kernel", | ||
| 219 | .size = 0x00400000, | ||
| 220 | .offset = 0x00040000, | ||
| 221 | },{ | ||
| 222 | .name = "Filesystem", | ||
| 223 | .size = MTDPART_SIZ_FULL, | ||
| 224 | .offset = 0x00440000 | ||
| 225 | } | ||
| 226 | }; | ||
| 227 | |||
| 228 | static struct flash_platform_data mst_flash_data[2] = { | ||
| 229 | { | ||
| 230 | .map_name = "cfi_probe", | ||
| 231 | .parts = mainstoneflash0_partitions, | ||
| 232 | .nr_parts = ARRAY_SIZE(mainstoneflash0_partitions), | ||
| 233 | }, { | ||
| 234 | .map_name = "cfi_probe", | ||
| 235 | .parts = NULL, | ||
| 236 | .nr_parts = 0, | ||
| 237 | } | ||
| 238 | }; | ||
| 239 | |||
| 240 | static struct platform_device mst_flash_device[2] = { | ||
| 241 | { | ||
| 242 | .name = "pxa2xx-flash", | ||
| 243 | .id = 0, | ||
| 244 | .dev = { | ||
| 245 | .platform_data = &mst_flash_data[0], | ||
| 246 | }, | ||
| 247 | .resource = &flash_resources[0], | ||
| 248 | .num_resources = 1, | ||
| 249 | }, | ||
| 250 | { | ||
| 251 | .name = "pxa2xx-flash", | ||
| 252 | .id = 1, | ||
| 253 | .dev = { | ||
| 254 | .platform_data = &mst_flash_data[1], | ||
| 255 | }, | ||
| 256 | .resource = &flash_resources[1], | ||
| 257 | .num_resources = 1, | ||
| 258 | }, | ||
| 259 | }; | ||
| 260 | |||
| 193 | static void mainstone_backlight_power(int on) | 261 | static void mainstone_backlight_power(int on) |
| 194 | { | 262 | { |
| 195 | if (on) { | 263 | if (on) { |
| @@ -318,16 +386,34 @@ static struct pxaficp_platform_data mainstone_ficp_platform_data = { | |||
| 318 | .transceiver_mode = mainstone_irda_transceiver_mode, | 386 | .transceiver_mode = mainstone_irda_transceiver_mode, |
| 319 | }; | 387 | }; |
| 320 | 388 | ||
| 389 | static struct platform_device *platform_devices[] __initdata = { | ||
| 390 | &smc91x_device, | ||
| 391 | &mst_audio_device, | ||
| 392 | &mst_flash_device[0], | ||
| 393 | &mst_flash_device[1], | ||
| 394 | }; | ||
| 395 | |||
| 321 | static void __init mainstone_init(void) | 396 | static void __init mainstone_init(void) |
| 322 | { | 397 | { |
| 398 | int SW7 = 0; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */ | ||
| 399 | |||
| 400 | mst_flash_data[0].width = (BOOT_DEF & 1) ? 2 : 4; | ||
| 401 | mst_flash_data[1].width = 4; | ||
| 402 | |||
| 403 | /* Compensate for SW7 which swaps the flash banks */ | ||
| 404 | mst_flash_data[SW7].name = "processor-flash"; | ||
| 405 | mst_flash_data[SW7 ^ 1].name = "mainboard-flash"; | ||
| 406 | |||
| 407 | printk(KERN_NOTICE "Mainstone configured to boot from %s\n", | ||
| 408 | mst_flash_data[0].name); | ||
| 409 | |||
| 323 | /* | 410 | /* |
| 324 | * On Mainstone, we route AC97_SYSCLK via GPIO45 to | 411 | * On Mainstone, we route AC97_SYSCLK via GPIO45 to |
| 325 | * the audio daughter card | 412 | * the audio daughter card |
| 326 | */ | 413 | */ |
| 327 | pxa_gpio_mode(GPIO45_SYSCLK_AC97_MD); | 414 | pxa_gpio_mode(GPIO45_SYSCLK_AC97_MD); |
| 328 | 415 | ||
| 329 | platform_device_register(&smc91x_device); | 416 | platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); |
| 330 | platform_device_register(&mst_audio_device); | ||
| 331 | 417 | ||
| 332 | /* reading Mainstone's "Virtual Configuration Register" | 418 | /* reading Mainstone's "Virtual Configuration Register" |
| 333 | might be handy to select LCD type here */ | 419 | might be handy to select LCD type here */ |
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index 6d413f6701a7..ad6a13f95a62 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | */ | 16 | */ |
| 17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
| 18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
| 19 | #include <linux/device.h> | 19 | #include <linux/platform_device.h> |
| 20 | #include <linux/fb.h> | 20 | #include <linux/fb.h> |
| 21 | 21 | ||
| 22 | #include <asm/hardware.h> | 22 | #include <asm/hardware.h> |
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 09a5d593f04b..c722a9a91fcc 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
| 17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
| 18 | #include <linux/pm.h> | 18 | #include <linux/pm.h> |
| 19 | #include <linux/device.h> | 19 | #include <linux/platform_device.h> |
| 20 | 20 | ||
| 21 | #include <asm/hardware.h> | 21 | #include <asm/hardware.h> |
| 22 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index b838842b6a20..6c6878cd2207 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/device.h> | 17 | #include <linux/platform_device.h> |
| 18 | #include <linux/delay.h> | 18 | #include <linux/delay.h> |
| 19 | #include <linux/major.h> | 19 | #include <linux/major.h> |
| 20 | #include <linux/fs.h> | 20 | #include <linux/fs.h> |
diff --git a/arch/arm/mach-realview/Kconfig b/arch/arm/mach-realview/Kconfig new file mode 100644 index 000000000000..4b63dc9eabfe --- /dev/null +++ b/arch/arm/mach-realview/Kconfig | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | menu "RealView platform type" | ||
| 2 | depends on ARCH_REALVIEW | ||
| 3 | |||
| 4 | config MACH_REALVIEW_EB | ||
| 5 | bool "Support RealView/EB platform" | ||
| 6 | default n | ||
| 7 | select ARM_GIC | ||
| 8 | help | ||
| 9 | Include support for the ARM(R) RealView Emulation Baseboard platform. | ||
| 10 | |||
| 11 | endmenu | ||
diff --git a/arch/arm/mach-realview/Makefile b/arch/arm/mach-realview/Makefile new file mode 100644 index 000000000000..8d37ea1605fd --- /dev/null +++ b/arch/arm/mach-realview/Makefile | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | # | ||
| 2 | # Makefile for the linux kernel. | ||
| 3 | # | ||
| 4 | |||
| 5 | obj-y := core.o clock.o | ||
| 6 | obj-$(CONFIG_MACH_REALVIEW_EB) += realview_eb.o | ||
diff --git a/arch/arm/mach-realview/Makefile.boot b/arch/arm/mach-realview/Makefile.boot new file mode 100644 index 000000000000..c7e75acfe6c9 --- /dev/null +++ b/arch/arm/mach-realview/Makefile.boot | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | zreladdr-y := 0x00008000 | ||
| 2 | params_phys-y := 0x00000100 | ||
| 3 | initrd_phys-y := 0x00800000 | ||
| 4 | |||
diff --git a/arch/arm/mach-realview/clock.c b/arch/arm/mach-realview/clock.c new file mode 100644 index 000000000000..002635c97bb6 --- /dev/null +++ b/arch/arm/mach-realview/clock.c | |||
| @@ -0,0 +1,145 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mach-realview/clock.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2004 ARM Limited. | ||
| 5 | * Written by Deep Blue Solutions Limited. | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published by the Free Software Foundation. | ||
| 10 | */ | ||
| 11 | #include <linux/module.h> | ||
| 12 | #include <linux/kernel.h> | ||
| 13 | #include <linux/list.h> | ||
| 14 | #include <linux/errno.h> | ||
| 15 | #include <linux/err.h> | ||
| 16 | |||
| 17 | #include <asm/semaphore.h> | ||
| 18 | #include <asm/hardware/clock.h> | ||
| 19 | #include <asm/hardware/icst307.h> | ||
| 20 | |||
| 21 | #include "clock.h" | ||
| 22 | |||
| 23 | static LIST_HEAD(clocks); | ||
| 24 | static DECLARE_MUTEX(clocks_sem); | ||
| 25 | |||
| 26 | struct clk *clk_get(struct device *dev, const char *id) | ||
| 27 | { | ||
| 28 | struct clk *p, *clk = ERR_PTR(-ENOENT); | ||
| 29 | |||
| 30 | down(&clocks_sem); | ||
| 31 | list_for_each_entry(p, &clocks, node) { | ||
| 32 | if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { | ||
| 33 | clk = p; | ||
| 34 | break; | ||
| 35 | } | ||
| 36 | } | ||
| 37 | up(&clocks_sem); | ||
| 38 | |||
| 39 | return clk; | ||
| 40 | } | ||
| 41 | EXPORT_SYMBOL(clk_get); | ||
| 42 | |||
| 43 | void clk_put(struct clk *clk) | ||
| 44 | { | ||
| 45 | module_put(clk->owner); | ||
| 46 | } | ||
| 47 | EXPORT_SYMBOL(clk_put); | ||
| 48 | |||
| 49 | int clk_enable(struct clk *clk) | ||
| 50 | { | ||
| 51 | return 0; | ||
| 52 | } | ||
| 53 | EXPORT_SYMBOL(clk_enable); | ||
| 54 | |||
| 55 | void clk_disable(struct clk *clk) | ||
| 56 | { | ||
| 57 | } | ||
| 58 | EXPORT_SYMBOL(clk_disable); | ||
| 59 | |||
| 60 | int clk_use(struct clk *clk) | ||
| 61 | { | ||
| 62 | return 0; | ||
| 63 | } | ||
| 64 | EXPORT_SYMBOL(clk_use); | ||
| 65 | |||
| 66 | void clk_unuse(struct clk *clk) | ||
| 67 | { | ||
| 68 | } | ||
| 69 | EXPORT_SYMBOL(clk_unuse); | ||
| 70 | |||
| 71 | unsigned long clk_get_rate(struct clk *clk) | ||
| 72 | { | ||
| 73 | return clk->rate; | ||
| 74 | } | ||
| 75 | EXPORT_SYMBOL(clk_get_rate); | ||
| 76 | |||
| 77 | long clk_round_rate(struct clk *clk, unsigned long rate) | ||
| 78 | { | ||
| 79 | return rate; | ||
| 80 | } | ||
| 81 | EXPORT_SYMBOL(clk_round_rate); | ||
| 82 | |||
| 83 | int clk_set_rate(struct clk *clk, unsigned long rate) | ||
| 84 | { | ||
| 85 | int ret = -EIO; | ||
| 86 | |||
| 87 | if (clk->setvco) { | ||
| 88 | struct icst307_vco vco; | ||
| 89 | |||
| 90 | vco = icst307_khz_to_vco(clk->params, rate / 1000); | ||
| 91 | clk->rate = icst307_khz(clk->params, vco) * 1000; | ||
| 92 | |||
| 93 | printk("Clock %s: setting VCO reg params: S=%d R=%d V=%d\n", | ||
| 94 | clk->name, vco.s, vco.r, vco.v); | ||
| 95 | |||
| 96 | clk->setvco(clk, vco); | ||
| 97 | ret = 0; | ||
| 98 | } | ||
| 99 | return ret; | ||
| 100 | } | ||
| 101 | EXPORT_SYMBOL(clk_set_rate); | ||
| 102 | |||
| 103 | /* | ||
| 104 | * These are fixed clocks. | ||
| 105 | */ | ||
| 106 | static struct clk kmi_clk = { | ||
| 107 | .name = "KMIREFCLK", | ||
| 108 | .rate = 24000000, | ||
| 109 | }; | ||
| 110 | |||
| 111 | static struct clk uart_clk = { | ||
| 112 | .name = "UARTCLK", | ||
| 113 | .rate = 24000000, | ||
| 114 | }; | ||
| 115 | |||
| 116 | static struct clk mmci_clk = { | ||
| 117 | .name = "MCLK", | ||
| 118 | .rate = 33000000, | ||
| 119 | }; | ||
| 120 | |||
| 121 | int clk_register(struct clk *clk) | ||
| 122 | { | ||
| 123 | down(&clocks_sem); | ||
| 124 | list_add(&clk->node, &clocks); | ||
| 125 | up(&clocks_sem); | ||
| 126 | return 0; | ||
| 127 | } | ||
| 128 | EXPORT_SYMBOL(clk_register); | ||
| 129 | |||
| 130 | void clk_unregister(struct clk *clk) | ||
| 131 | { | ||
| 132 | down(&clocks_sem); | ||
| 133 | list_del(&clk->node); | ||
| 134 | up(&clocks_sem); | ||
| 135 | } | ||
| 136 | EXPORT_SYMBOL(clk_unregister); | ||
| 137 | |||
| 138 | static int __init clk_init(void) | ||
| 139 | { | ||
| 140 | clk_register(&kmi_clk); | ||
| 141 | clk_register(&uart_clk); | ||
| 142 | clk_register(&mmci_clk); | ||
| 143 | return 0; | ||
| 144 | } | ||
| 145 | arch_initcall(clk_init); | ||
diff --git a/arch/arm/mach-realview/clock.h b/arch/arm/mach-realview/clock.h new file mode 100644 index 000000000000..dadba695e181 --- /dev/null +++ b/arch/arm/mach-realview/clock.h | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mach-realview/clock.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2004 ARM Limited. | ||
| 5 | * Written by Deep Blue Solutions Limited. | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published by the Free Software Foundation. | ||
| 10 | */ | ||
| 11 | struct module; | ||
| 12 | struct icst307_params; | ||
| 13 | |||
| 14 | struct clk { | ||
| 15 | struct list_head node; | ||
| 16 | unsigned long rate; | ||
| 17 | struct module *owner; | ||
| 18 | const char *name; | ||
| 19 | const struct icst307_params *params; | ||
| 20 | void *data; | ||
| 21 | void (*setvco)(struct clk *, struct icst307_vco vco); | ||
| 22 | }; | ||
| 23 | |||
| 24 | int clk_register(struct clk *clk); | ||
| 25 | void clk_unregister(struct clk *clk); | ||
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c new file mode 100644 index 000000000000..482eb512ebe8 --- /dev/null +++ b/arch/arm/mach-realview/core.c | |||
| @@ -0,0 +1,605 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mach-realview/core.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 1999 - 2003 ARM Limited | ||
| 5 | * Copyright (C) 2000 Deep Blue Solutions Ltd | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation; either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program; if not, write to the Free Software | ||
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 20 | */ | ||
| 21 | #include <linux/config.h> | ||
| 22 | #include <linux/init.h> | ||
| 23 | #include <linux/platform_device.h> | ||
| 24 | #include <linux/dma-mapping.h> | ||
| 25 | #include <linux/sysdev.h> | ||
| 26 | #include <linux/interrupt.h> | ||
| 27 | |||
| 28 | #include <asm/system.h> | ||
| 29 | #include <asm/hardware.h> | ||
| 30 | #include <asm/io.h> | ||
| 31 | #include <asm/irq.h> | ||
| 32 | #include <asm/leds.h> | ||
| 33 | #include <asm/mach-types.h> | ||
| 34 | #include <asm/hardware/amba.h> | ||
| 35 | #include <asm/hardware/amba_clcd.h> | ||
| 36 | #include <asm/hardware/arm_timer.h> | ||
| 37 | #include <asm/hardware/icst307.h> | ||
| 38 | |||
| 39 | #include <asm/mach/arch.h> | ||
| 40 | #include <asm/mach/flash.h> | ||
| 41 | #include <asm/mach/irq.h> | ||
| 42 | #include <asm/mach/time.h> | ||
| 43 | #include <asm/mach/map.h> | ||
| 44 | #include <asm/mach/mmc.h> | ||
| 45 | |||
| 46 | #include <asm/hardware/gic.h> | ||
| 47 | |||
| 48 | #include "core.h" | ||
| 49 | #include "clock.h" | ||
| 50 | |||
| 51 | #define REALVIEW_REFCOUNTER (__io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_24MHz_OFFSET) | ||
| 52 | |||
| 53 | /* | ||
| 54 | * This is the RealView sched_clock implementation. This has | ||
| 55 | * a resolution of 41.7ns, and a maximum value of about 179s. | ||
| 56 | */ | ||
| 57 | unsigned long long sched_clock(void) | ||
| 58 | { | ||
| 59 | unsigned long long v; | ||
| 60 | |||
| 61 | v = (unsigned long long)readl(REALVIEW_REFCOUNTER) * 125; | ||
| 62 | do_div(v, 3); | ||
| 63 | |||
| 64 | return v; | ||
| 65 | } | ||
| 66 | |||
| 67 | |||
| 68 | #define REALVIEW_FLASHCTRL (__io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_FLASH_OFFSET) | ||
| 69 | |||
| 70 | static int realview_flash_init(void) | ||
| 71 | { | ||
| 72 | u32 val; | ||
| 73 | |||
| 74 | val = __raw_readl(REALVIEW_FLASHCTRL); | ||
| 75 | val &= ~REALVIEW_FLASHPROG_FLVPPEN; | ||
| 76 | __raw_writel(val, REALVIEW_FLASHCTRL); | ||
| 77 | |||
| 78 | return 0; | ||
| 79 | } | ||
| 80 | |||
| 81 | static void realview_flash_exit(void) | ||
| 82 | { | ||
| 83 | u32 val; | ||
| 84 | |||
| 85 | val = __raw_readl(REALVIEW_FLASHCTRL); | ||
| 86 | val &= ~REALVIEW_FLASHPROG_FLVPPEN; | ||
| 87 | __raw_writel(val, REALVIEW_FLASHCTRL); | ||
| 88 | } | ||
| 89 | |||
| 90 | static void realview_flash_set_vpp(int on) | ||
| 91 | { | ||
| 92 | u32 val; | ||
| 93 | |||
| 94 | val = __raw_readl(REALVIEW_FLASHCTRL); | ||
| 95 | if (on) | ||
| 96 | val |= REALVIEW_FLASHPROG_FLVPPEN; | ||
| 97 | else | ||
| 98 | val &= ~REALVIEW_FLASHPROG_FLVPPEN; | ||
| 99 | __raw_writel(val, REALVIEW_FLASHCTRL); | ||
| 100 | } | ||
| 101 | |||
| 102 | static struct flash_platform_data realview_flash_data = { | ||
| 103 | .map_name = "cfi_probe", | ||
| 104 | .width = 4, | ||
| 105 | .init = realview_flash_init, | ||
| 106 | .exit = realview_flash_exit, | ||
| 107 | .set_vpp = realview_flash_set_vpp, | ||
| 108 | }; | ||
| 109 | |||
| 110 | static struct resource realview_flash_resource = { | ||
| 111 | .start = REALVIEW_FLASH_BASE, | ||
| 112 | .end = REALVIEW_FLASH_BASE + REALVIEW_FLASH_SIZE, | ||
| 113 | .flags = IORESOURCE_MEM, | ||
| 114 | }; | ||
| 115 | |||
| 116 | struct platform_device realview_flash_device = { | ||
| 117 | .name = "armflash", | ||
| 118 | .id = 0, | ||
| 119 | .dev = { | ||
| 120 | .platform_data = &realview_flash_data, | ||
| 121 | }, | ||
| 122 | .num_resources = 1, | ||
| 123 | .resource = &realview_flash_resource, | ||
| 124 | }; | ||
| 125 | |||
| 126 | static struct resource realview_smc91x_resources[] = { | ||
| 127 | [0] = { | ||
| 128 | .start = REALVIEW_ETH_BASE, | ||
| 129 | .end = REALVIEW_ETH_BASE + SZ_64K - 1, | ||
| 130 | .flags = IORESOURCE_MEM, | ||
| 131 | }, | ||
| 132 | [1] = { | ||
| 133 | .start = IRQ_ETH, | ||
| 134 | .end = IRQ_ETH, | ||
| 135 | .flags = IORESOURCE_IRQ, | ||
| 136 | }, | ||
| 137 | }; | ||
| 138 | |||
| 139 | struct platform_device realview_smc91x_device = { | ||
| 140 | .name = "smc91x", | ||
| 141 | .id = 0, | ||
| 142 | .num_resources = ARRAY_SIZE(realview_smc91x_resources), | ||
| 143 | .resource = realview_smc91x_resources, | ||
| 144 | }; | ||
| 145 | |||
| 146 | #define REALVIEW_SYSMCI (__io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_MCI_OFFSET) | ||
| 147 | |||
| 148 | static unsigned int realview_mmc_status(struct device *dev) | ||
| 149 | { | ||
| 150 | struct amba_device *adev = container_of(dev, struct amba_device, dev); | ||
| 151 | u32 mask; | ||
| 152 | |||
| 153 | if (adev->res.start == REALVIEW_MMCI0_BASE) | ||
| 154 | mask = 1; | ||
| 155 | else | ||
| 156 | mask = 2; | ||
| 157 | |||
| 158 | return readl(REALVIEW_SYSMCI) & mask; | ||
| 159 | } | ||
| 160 | |||
| 161 | struct mmc_platform_data realview_mmc0_plat_data = { | ||
| 162 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | ||
| 163 | .status = realview_mmc_status, | ||
| 164 | }; | ||
| 165 | |||
| 166 | struct mmc_platform_data realview_mmc1_plat_data = { | ||
| 167 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | ||
| 168 | .status = realview_mmc_status, | ||
| 169 | }; | ||
| 170 | |||
| 171 | /* | ||
| 172 | * Clock handling | ||
| 173 | */ | ||
| 174 | static const struct icst307_params realview_oscvco_params = { | ||
| 175 | .ref = 24000, | ||
| 176 | .vco_max = 200000, | ||
| 177 | .vd_min = 4 + 8, | ||
| 178 | .vd_max = 511 + 8, | ||
| 179 | .rd_min = 1 + 2, | ||
| 180 | .rd_max = 127 + 2, | ||
| 181 | }; | ||
| 182 | |||
| 183 | static void realview_oscvco_set(struct clk *clk, struct icst307_vco vco) | ||
| 184 | { | ||
| 185 | void __iomem *sys_lock = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_LOCK_OFFSET; | ||
| 186 | void __iomem *sys_osc = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_OSC1_OFFSET; | ||
| 187 | u32 val; | ||
| 188 | |||
| 189 | val = readl(sys_osc) & ~0x7ffff; | ||
| 190 | val |= vco.v | (vco.r << 9) | (vco.s << 16); | ||
| 191 | |||
| 192 | writel(0xa05f, sys_lock); | ||
| 193 | writel(val, sys_osc); | ||
| 194 | writel(0, sys_lock); | ||
| 195 | } | ||
| 196 | |||
| 197 | struct clk realview_clcd_clk = { | ||
| 198 | .name = "CLCDCLK", | ||
| 199 | .params = &realview_oscvco_params, | ||
| 200 | .setvco = realview_oscvco_set, | ||
| 201 | }; | ||
| 202 | |||
| 203 | /* | ||
| 204 | * CLCD support. | ||
| 205 | */ | ||
| 206 | #define SYS_CLCD_MODE_MASK (3 << 0) | ||
| 207 | #define SYS_CLCD_MODE_888 (0 << 0) | ||
| 208 | #define SYS_CLCD_MODE_5551 (1 << 0) | ||
| 209 | #define SYS_CLCD_MODE_565_RLSB (2 << 0) | ||
| 210 | #define SYS_CLCD_MODE_565_BLSB (3 << 0) | ||
| 211 | #define SYS_CLCD_NLCDIOON (1 << 2) | ||
| 212 | #define SYS_CLCD_VDDPOSSWITCH (1 << 3) | ||
| 213 | #define SYS_CLCD_PWR3V5SWITCH (1 << 4) | ||
| 214 | #define SYS_CLCD_ID_MASK (0x1f << 8) | ||
| 215 | #define SYS_CLCD_ID_SANYO_3_8 (0x00 << 8) | ||
| 216 | #define SYS_CLCD_ID_UNKNOWN_8_4 (0x01 << 8) | ||
| 217 | #define SYS_CLCD_ID_EPSON_2_2 (0x02 << 8) | ||
| 218 | #define SYS_CLCD_ID_SANYO_2_5 (0x07 << 8) | ||
| 219 | #define SYS_CLCD_ID_VGA (0x1f << 8) | ||
| 220 | |||
| 221 | static struct clcd_panel vga = { | ||
| 222 | .mode = { | ||
| 223 | .name = "VGA", | ||
| 224 | .refresh = 60, | ||
| 225 | .xres = 640, | ||
| 226 | .yres = 480, | ||
| 227 | .pixclock = 39721, | ||
| 228 | .left_margin = 40, | ||
| 229 | .right_margin = 24, | ||
| 230 | .upper_margin = 32, | ||
| 231 | .lower_margin = 11, | ||
| 232 | .hsync_len = 96, | ||
| 233 | .vsync_len = 2, | ||
| 234 | .sync = 0, | ||
| 235 | .vmode = FB_VMODE_NONINTERLACED, | ||
| 236 | }, | ||
| 237 | .width = -1, | ||
| 238 | .height = -1, | ||
| 239 | .tim2 = TIM2_BCD | TIM2_IPC, | ||
| 240 | .cntl = CNTL_LCDTFT | CNTL_LCDVCOMP(1), | ||
| 241 | .bpp = 16, | ||
| 242 | }; | ||
| 243 | |||
| 244 | static struct clcd_panel sanyo_3_8_in = { | ||
| 245 | .mode = { | ||
| 246 | .name = "Sanyo QVGA", | ||
| 247 | .refresh = 116, | ||
| 248 | .xres = 320, | ||
| 249 | .yres = 240, | ||
| 250 | .pixclock = 100000, | ||
| 251 | .left_margin = 6, | ||
| 252 | .right_margin = 6, | ||
| 253 | .upper_margin = 5, | ||
| 254 | .lower_margin = 5, | ||
| 255 | .hsync_len = 6, | ||
| 256 | .vsync_len = 6, | ||
| 257 | .sync = 0, | ||
| 258 | .vmode = FB_VMODE_NONINTERLACED, | ||
| 259 | }, | ||
| 260 | .width = -1, | ||
| 261 | .height = -1, | ||
| 262 | .tim2 = TIM2_BCD, | ||
| 263 | .cntl = CNTL_LCDTFT | CNTL_LCDVCOMP(1), | ||
| 264 | .bpp = 16, | ||
| 265 | }; | ||
| 266 | |||
| 267 | static struct clcd_panel sanyo_2_5_in = { | ||
| 268 | .mode = { | ||
| 269 | .name = "Sanyo QVGA Portrait", | ||
| 270 | .refresh = 116, | ||
| 271 | .xres = 240, | ||
| 272 | .yres = 320, | ||
| 273 | .pixclock = 100000, | ||
| 274 | .left_margin = 20, | ||
| 275 | .right_margin = 10, | ||
| 276 | .upper_margin = 2, | ||
| 277 | .lower_margin = 2, | ||
| 278 | .hsync_len = 10, | ||
| 279 | .vsync_len = 2, | ||
| 280 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, | ||
| 281 | .vmode = FB_VMODE_NONINTERLACED, | ||
| 282 | }, | ||
| 283 | .width = -1, | ||
| 284 | .height = -1, | ||
| 285 | .tim2 = TIM2_IVS | TIM2_IHS | TIM2_IPC, | ||
| 286 | .cntl = CNTL_LCDTFT | CNTL_LCDVCOMP(1), | ||
| 287 | .bpp = 16, | ||
| 288 | }; | ||
| 289 | |||
| 290 | static struct clcd_panel epson_2_2_in = { | ||
| 291 | .mode = { | ||
| 292 | .name = "Epson QCIF", | ||
| 293 | .refresh = 390, | ||
| 294 | .xres = 176, | ||
| 295 | .yres = 220, | ||
| 296 | .pixclock = 62500, | ||
| 297 | .left_margin = 3, | ||
| 298 | .right_margin = 2, | ||
| 299 | .upper_margin = 1, | ||
| 300 | .lower_margin = 0, | ||
| 301 | .hsync_len = 3, | ||
| 302 | .vsync_len = 2, | ||
| 303 | .sync = 0, | ||
| 304 | .vmode = FB_VMODE_NONINTERLACED, | ||
| 305 | }, | ||
| 306 | .width = -1, | ||
| 307 | .height = -1, | ||
| 308 | .tim2 = TIM2_BCD | TIM2_IPC, | ||
| 309 | .cntl = CNTL_LCDTFT | CNTL_LCDVCOMP(1), | ||
| 310 | .bpp = 16, | ||
| 311 | }; | ||
| 312 | |||
| 313 | /* | ||
| 314 | * Detect which LCD panel is connected, and return the appropriate | ||
| 315 | * clcd_panel structure. Note: we do not have any information on | ||
| 316 | * the required timings for the 8.4in panel, so we presently assume | ||
| 317 | * VGA timings. | ||
| 318 | */ | ||
| 319 | static struct clcd_panel *realview_clcd_panel(void) | ||
| 320 | { | ||
| 321 | void __iomem *sys_clcd = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_CLCD_OFFSET; | ||
| 322 | struct clcd_panel *panel = &vga; | ||
| 323 | u32 val; | ||
| 324 | |||
| 325 | val = readl(sys_clcd) & SYS_CLCD_ID_MASK; | ||
| 326 | if (val == SYS_CLCD_ID_SANYO_3_8) | ||
| 327 | panel = &sanyo_3_8_in; | ||
| 328 | else if (val == SYS_CLCD_ID_SANYO_2_5) | ||
| 329 | panel = &sanyo_2_5_in; | ||
| 330 | else if (val == SYS_CLCD_ID_EPSON_2_2) | ||
| 331 | panel = &epson_2_2_in; | ||
| 332 | else if (val == SYS_CLCD_ID_VGA) | ||
| 333 | panel = &vga; | ||
| 334 | else { | ||
| 335 | printk(KERN_ERR "CLCD: unknown LCD panel ID 0x%08x, using VGA\n", | ||
| 336 | val); | ||
| 337 | panel = &vga; | ||
| 338 | } | ||
| 339 | |||
| 340 | return panel; | ||
| 341 | } | ||
| 342 | |||
| 343 | /* | ||
| 344 | * Disable all display connectors on the interface module. | ||
| 345 | */ | ||
| 346 | static void realview_clcd_disable(struct clcd_fb *fb) | ||
| 347 | { | ||
| 348 | void __iomem *sys_clcd = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_CLCD_OFFSET; | ||
| 349 | u32 val; | ||
| 350 | |||
| 351 | val = readl(sys_clcd); | ||
| 352 | val &= ~SYS_CLCD_NLCDIOON | SYS_CLCD_PWR3V5SWITCH; | ||
| 353 | writel(val, sys_clcd); | ||
| 354 | } | ||
| 355 | |||
| 356 | /* | ||
| 357 | * Enable the relevant connector on the interface module. | ||
| 358 | */ | ||
| 359 | static void realview_clcd_enable(struct clcd_fb *fb) | ||
| 360 | { | ||
| 361 | void __iomem *sys_clcd = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_CLCD_OFFSET; | ||
| 362 | u32 val; | ||
| 363 | |||
| 364 | val = readl(sys_clcd); | ||
| 365 | val &= ~SYS_CLCD_MODE_MASK; | ||
| 366 | |||
| 367 | switch (fb->fb.var.green.length) { | ||
| 368 | case 5: | ||
| 369 | val |= SYS_CLCD_MODE_5551; | ||
| 370 | break; | ||
| 371 | case 6: | ||
| 372 | val |= SYS_CLCD_MODE_565_RLSB; | ||
| 373 | break; | ||
| 374 | case 8: | ||
| 375 | val |= SYS_CLCD_MODE_888; | ||
| 376 | break; | ||
| 377 | } | ||
| 378 | |||
| 379 | /* | ||
| 380 | * Set the MUX | ||
| 381 | */ | ||
| 382 | writel(val, sys_clcd); | ||
| 383 | |||
| 384 | /* | ||
| 385 | * And now enable the PSUs | ||
| 386 | */ | ||
| 387 | val |= SYS_CLCD_NLCDIOON | SYS_CLCD_PWR3V5SWITCH; | ||
| 388 | writel(val, sys_clcd); | ||
| 389 | } | ||
| 390 | |||
| 391 | static unsigned long framesize = SZ_1M; | ||
| 392 | |||
| 393 | static int realview_clcd_setup(struct clcd_fb *fb) | ||
| 394 | { | ||
| 395 | dma_addr_t dma; | ||
| 396 | |||
| 397 | fb->panel = realview_clcd_panel(); | ||
| 398 | |||
| 399 | fb->fb.screen_base = dma_alloc_writecombine(&fb->dev->dev, framesize, | ||
| 400 | &dma, GFP_KERNEL); | ||
| 401 | if (!fb->fb.screen_base) { | ||
| 402 | printk(KERN_ERR "CLCD: unable to map framebuffer\n"); | ||
| 403 | return -ENOMEM; | ||
| 404 | } | ||
| 405 | |||
| 406 | fb->fb.fix.smem_start = dma; | ||
| 407 | fb->fb.fix.smem_len = framesize; | ||
| 408 | |||
| 409 | return 0; | ||
| 410 | } | ||
| 411 | |||
| 412 | static int realview_clcd_mmap(struct clcd_fb *fb, struct vm_area_struct *vma) | ||
| 413 | { | ||
| 414 | return dma_mmap_writecombine(&fb->dev->dev, vma, | ||
| 415 | fb->fb.screen_base, | ||
| 416 | fb->fb.fix.smem_start, | ||
| 417 | fb->fb.fix.smem_len); | ||
| 418 | } | ||
| 419 | |||
| 420 | static void realview_clcd_remove(struct clcd_fb *fb) | ||
| 421 | { | ||
| 422 | dma_free_writecombine(&fb->dev->dev, fb->fb.fix.smem_len, | ||
| 423 | fb->fb.screen_base, fb->fb.fix.smem_start); | ||
| 424 | } | ||
| 425 | |||
| 426 | struct clcd_board clcd_plat_data = { | ||
| 427 | .name = "RealView", | ||
| 428 | .check = clcdfb_check, | ||
| 429 | .decode = clcdfb_decode, | ||
| 430 | .disable = realview_clcd_disable, | ||
| 431 | .enable = realview_clcd_enable, | ||
| 432 | .setup = realview_clcd_setup, | ||
| 433 | .mmap = realview_clcd_mmap, | ||
| 434 | .remove = realview_clcd_remove, | ||
| 435 | }; | ||
| 436 | |||
| 437 | #ifdef CONFIG_LEDS | ||
| 438 | #define VA_LEDS_BASE (__io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_LED_OFFSET) | ||
| 439 | |||
| 440 | void realview_leds_event(led_event_t ledevt) | ||
| 441 | { | ||
| 442 | unsigned long flags; | ||
| 443 | u32 val; | ||
| 444 | |||
| 445 | local_irq_save(flags); | ||
| 446 | val = readl(VA_LEDS_BASE); | ||
| 447 | |||
| 448 | switch (ledevt) { | ||
| 449 | case led_idle_start: | ||
| 450 | val = val & ~REALVIEW_SYS_LED0; | ||
| 451 | break; | ||
| 452 | |||
| 453 | case led_idle_end: | ||
| 454 | val = val | REALVIEW_SYS_LED0; | ||
| 455 | break; | ||
| 456 | |||
| 457 | case led_timer: | ||
| 458 | val = val ^ REALVIEW_SYS_LED1; | ||
| 459 | break; | ||
| 460 | |||
| 461 | case led_halted: | ||
| 462 | val = 0; | ||
| 463 | break; | ||
| 464 | |||
| 465 | default: | ||
| 466 | break; | ||
| 467 | } | ||
| 468 | |||
| 469 | writel(val, VA_LEDS_BASE); | ||
| 470 | local_irq_restore(flags); | ||
| 471 | } | ||
| 472 | #endif /* CONFIG_LEDS */ | ||
| 473 | |||
| 474 | /* | ||
| 475 | * Where is the timer (VA)? | ||
| 476 | */ | ||
| 477 | #define TIMER0_VA_BASE __io_address(REALVIEW_TIMER0_1_BASE) | ||
| 478 | #define TIMER1_VA_BASE (__io_address(REALVIEW_TIMER0_1_BASE) + 0x20) | ||
| 479 | #define TIMER2_VA_BASE __io_address(REALVIEW_TIMER2_3_BASE) | ||
| 480 | #define TIMER3_VA_BASE (__io_address(REALVIEW_TIMER2_3_BASE) + 0x20) | ||
| 481 | |||
| 482 | /* | ||
| 483 | * How long is the timer interval? | ||
| 484 | */ | ||
| 485 | #define TIMER_INTERVAL (TICKS_PER_uSEC * mSEC_10) | ||
| 486 | #if TIMER_INTERVAL >= 0x100000 | ||
| 487 | #define TIMER_RELOAD (TIMER_INTERVAL >> 8) | ||
| 488 | #define TIMER_DIVISOR (TIMER_CTRL_DIV256) | ||
| 489 | #define TICKS2USECS(x) (256 * (x) / TICKS_PER_uSEC) | ||
| 490 | #elif TIMER_INTERVAL >= 0x10000 | ||
| 491 | #define TIMER_RELOAD (TIMER_INTERVAL >> 4) /* Divide by 16 */ | ||
| 492 | #define TIMER_DIVISOR (TIMER_CTRL_DIV16) | ||
| 493 | #define TICKS2USECS(x) (16 * (x) / TICKS_PER_uSEC) | ||
| 494 | #else | ||
| 495 | #define TIMER_RELOAD (TIMER_INTERVAL) | ||
| 496 | #define TIMER_DIVISOR (TIMER_CTRL_DIV1) | ||
| 497 | #define TICKS2USECS(x) ((x) / TICKS_PER_uSEC) | ||
| 498 | #endif | ||
| 499 | |||
| 500 | /* | ||
| 501 | * Returns number of ms since last clock interrupt. Note that interrupts | ||
| 502 | * will have been disabled by do_gettimeoffset() | ||
| 503 | */ | ||
| 504 | static unsigned long realview_gettimeoffset(void) | ||
| 505 | { | ||
| 506 | unsigned long ticks1, ticks2, status; | ||
| 507 | |||
| 508 | /* | ||
| 509 | * Get the current number of ticks. Note that there is a race | ||
| 510 | * condition between us reading the timer and checking for | ||
| 511 | * an interrupt. We get around this by ensuring that the | ||
| 512 | * counter has not reloaded between our two reads. | ||
| 513 | */ | ||
| 514 | ticks2 = readl(TIMER0_VA_BASE + TIMER_VALUE) & 0xffff; | ||
| 515 | do { | ||
| 516 | ticks1 = ticks2; | ||
| 517 | status = __raw_readl(__io_address(REALVIEW_GIC_DIST_BASE + GIC_DIST_PENDING_SET) | ||
| 518 | + ((IRQ_TIMERINT0_1 >> 5) << 2)); | ||
| 519 | ticks2 = readl(TIMER0_VA_BASE + TIMER_VALUE) & 0xffff; | ||
| 520 | } while (ticks2 > ticks1); | ||
| 521 | |||
| 522 | /* | ||
| 523 | * Number of ticks since last interrupt. | ||
| 524 | */ | ||
| 525 | ticks1 = TIMER_RELOAD - ticks2; | ||
| 526 | |||
| 527 | /* | ||
| 528 | * Interrupt pending? If so, we've reloaded once already. | ||
| 529 | * | ||
| 530 | * FIXME: Need to check this is effectively timer 0 that expires | ||
| 531 | */ | ||
| 532 | if (status & IRQMASK_TIMERINT0_1) | ||
| 533 | ticks1 += TIMER_RELOAD; | ||
| 534 | |||
| 535 | /* | ||
| 536 | * Convert the ticks to usecs | ||
| 537 | */ | ||
| 538 | return TICKS2USECS(ticks1); | ||
| 539 | } | ||
| 540 | |||
| 541 | /* | ||
| 542 | * IRQ handler for the timer | ||
| 543 | */ | ||
| 544 | static irqreturn_t realview_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | ||
| 545 | { | ||
| 546 | write_seqlock(&xtime_lock); | ||
| 547 | |||
| 548 | // ...clear the interrupt | ||
| 549 | writel(1, TIMER0_VA_BASE + TIMER_INTCLR); | ||
| 550 | |||
| 551 | timer_tick(regs); | ||
| 552 | |||
| 553 | write_sequnlock(&xtime_lock); | ||
| 554 | |||
| 555 | return IRQ_HANDLED; | ||
| 556 | } | ||
| 557 | |||
| 558 | static struct irqaction realview_timer_irq = { | ||
| 559 | .name = "RealView Timer Tick", | ||
| 560 | .flags = SA_INTERRUPT | SA_TIMER, | ||
| 561 | .handler = realview_timer_interrupt, | ||
| 562 | }; | ||
| 563 | |||
| 564 | /* | ||
| 565 | * Set up timer interrupt, and return the current time in seconds. | ||
| 566 | */ | ||
| 567 | static void __init realview_timer_init(void) | ||
| 568 | { | ||
| 569 | u32 val; | ||
| 570 | |||
| 571 | /* | ||
| 572 | * set clock frequency: | ||
| 573 | * REALVIEW_REFCLK is 32KHz | ||
| 574 | * REALVIEW_TIMCLK is 1MHz | ||
| 575 | */ | ||
| 576 | val = readl(__io_address(REALVIEW_SCTL_BASE)); | ||
| 577 | writel((REALVIEW_TIMCLK << REALVIEW_TIMER1_EnSel) | | ||
| 578 | (REALVIEW_TIMCLK << REALVIEW_TIMER2_EnSel) | | ||
| 579 | (REALVIEW_TIMCLK << REALVIEW_TIMER3_EnSel) | | ||
| 580 | (REALVIEW_TIMCLK << REALVIEW_TIMER4_EnSel) | val, | ||
| 581 | __io_address(REALVIEW_SCTL_BASE)); | ||
| 582 | |||
| 583 | /* | ||
| 584 | * Initialise to a known state (all timers off) | ||
| 585 | */ | ||
| 586 | writel(0, TIMER0_VA_BASE + TIMER_CTRL); | ||
| 587 | writel(0, TIMER1_VA_BASE + TIMER_CTRL); | ||
| 588 | writel(0, TIMER2_VA_BASE + TIMER_CTRL); | ||
| 589 | writel(0, TIMER3_VA_BASE + TIMER_CTRL); | ||
| 590 | |||
| 591 | writel(TIMER_RELOAD, TIMER0_VA_BASE + TIMER_LOAD); | ||
| 592 | writel(TIMER_RELOAD, TIMER0_VA_BASE + TIMER_VALUE); | ||
| 593 | writel(TIMER_DIVISOR | TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC | | ||
| 594 | TIMER_CTRL_IE, TIMER0_VA_BASE + TIMER_CTRL); | ||
| 595 | |||
| 596 | /* | ||
| 597 | * Make irqs happen for the system timer | ||
| 598 | */ | ||
| 599 | setup_irq(IRQ_TIMERINT0_1, &realview_timer_irq); | ||
| 600 | } | ||
| 601 | |||
| 602 | struct sys_timer realview_timer = { | ||
| 603 | .init = realview_timer_init, | ||
| 604 | .offset = realview_gettimeoffset, | ||
| 605 | }; | ||
diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h new file mode 100644 index 000000000000..575599db74db --- /dev/null +++ b/arch/arm/mach-realview/core.h | |||
| @@ -0,0 +1,118 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mach-realview/core.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2004 ARM Limited | ||
| 5 | * Copyright (C) 2000 Deep Blue Solutions Ltd | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation; either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program; if not, write to the Free Software | ||
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 20 | */ | ||
| 21 | |||
| 22 | #ifndef __ASM_ARCH_REALVIEW_H | ||
| 23 | #define __ASM_ARCH_REALVIEW_H | ||
| 24 | |||
| 25 | #include <asm/hardware/amba.h> | ||
| 26 | #include <asm/io.h> | ||
| 27 | |||
| 28 | #define __io_address(n) __io(IO_ADDRESS(n)) | ||
| 29 | |||
| 30 | extern struct sys_timer realview_timer; | ||
| 31 | |||
| 32 | #define AMBA_DEVICE(name,busid,base,plat) \ | ||
| 33 | static struct amba_device name##_device = { \ | ||
| 34 | .dev = { \ | ||
| 35 | .coherent_dma_mask = ~0, \ | ||
| 36 | .bus_id = busid, \ | ||
| 37 | .platform_data = plat, \ | ||
| 38 | }, \ | ||
| 39 | .res = { \ | ||
| 40 | .start = REALVIEW_##base##_BASE, \ | ||
| 41 | .end = (REALVIEW_##base##_BASE) + SZ_4K - 1,\ | ||
| 42 | .flags = IORESOURCE_MEM, \ | ||
| 43 | }, \ | ||
| 44 | .dma_mask = ~0, \ | ||
| 45 | .irq = base##_IRQ, \ | ||
| 46 | /* .dma = base##_DMA,*/ \ | ||
| 47 | } | ||
| 48 | |||
| 49 | /* | ||
| 50 | * These devices are connected via the core APB bridge | ||
| 51 | */ | ||
| 52 | #define GPIO2_IRQ { IRQ_GPIOINT2, NO_IRQ } | ||
| 53 | #define GPIO2_DMA { 0, 0 } | ||
| 54 | #define GPIO3_IRQ { IRQ_GPIOINT3, NO_IRQ } | ||
| 55 | #define GPIO3_DMA { 0, 0 } | ||
| 56 | |||
| 57 | #define AACI_IRQ { IRQ_AACI, NO_IRQ } | ||
| 58 | #define AACI_DMA { 0x80, 0x81 } | ||
| 59 | #define MMCI0_IRQ { IRQ_MMCI0A,IRQ_MMCI0B } | ||
| 60 | #define MMCI0_DMA { 0x84, 0 } | ||
| 61 | #define KMI0_IRQ { IRQ_KMI0, NO_IRQ } | ||
| 62 | #define KMI0_DMA { 0, 0 } | ||
| 63 | #define KMI1_IRQ { IRQ_KMI1, NO_IRQ } | ||
| 64 | #define KMI1_DMA { 0, 0 } | ||
| 65 | |||
| 66 | /* | ||
| 67 | * These devices are connected directly to the multi-layer AHB switch | ||
| 68 | */ | ||
| 69 | #define SMC_IRQ { NO_IRQ, NO_IRQ } | ||
| 70 | #define SMC_DMA { 0, 0 } | ||
| 71 | #define MPMC_IRQ { NO_IRQ, NO_IRQ } | ||
| 72 | #define MPMC_DMA { 0, 0 } | ||
| 73 | #define CLCD_IRQ { IRQ_CLCDINT, NO_IRQ } | ||
| 74 | #define CLCD_DMA { 0, 0 } | ||
| 75 | #define DMAC_IRQ { IRQ_DMAINT, NO_IRQ } | ||
| 76 | #define DMAC_DMA { 0, 0 } | ||
| 77 | |||
| 78 | /* | ||
| 79 | * These devices are connected via the core APB bridge | ||
| 80 | */ | ||
| 81 | #define SCTL_IRQ { NO_IRQ, NO_IRQ } | ||
| 82 | #define SCTL_DMA { 0, 0 } | ||
| 83 | #define WATCHDOG_IRQ { IRQ_WDOGINT, NO_IRQ } | ||
| 84 | #define WATCHDOG_DMA { 0, 0 } | ||
| 85 | #define GPIO0_IRQ { IRQ_GPIOINT0, NO_IRQ } | ||
| 86 | #define GPIO0_DMA { 0, 0 } | ||
| 87 | #define GPIO1_IRQ { IRQ_GPIOINT1, NO_IRQ } | ||
| 88 | #define GPIO1_DMA { 0, 0 } | ||
| 89 | #define RTC_IRQ { IRQ_RTCINT, NO_IRQ } | ||
| 90 | #define RTC_DMA { 0, 0 } | ||
| 91 | |||
| 92 | /* | ||
| 93 | * These devices are connected via the DMA APB bridge | ||
| 94 | */ | ||
| 95 | #define SCI_IRQ { IRQ_SCIINT, NO_IRQ } | ||
| 96 | #define SCI_DMA { 7, 6 } | ||
| 97 | #define UART0_IRQ { IRQ_UARTINT0, NO_IRQ } | ||
| 98 | #define UART0_DMA { 15, 14 } | ||
| 99 | #define UART1_IRQ { IRQ_UARTINT1, NO_IRQ } | ||
| 100 | #define UART1_DMA { 13, 12 } | ||
| 101 | #define UART2_IRQ { IRQ_UARTINT2, NO_IRQ } | ||
| 102 | #define UART2_DMA { 11, 10 } | ||
| 103 | #define UART3_IRQ { IRQ_UART3, NO_IRQ } | ||
| 104 | #define UART3_DMA { 0x86, 0x87 } | ||
| 105 | #define SSP_IRQ { IRQ_SSPINT, NO_IRQ } | ||
| 106 | #define SSP_DMA { 9, 8 } | ||
| 107 | |||
| 108 | |||
| 109 | extern struct platform_device realview_flash_device; | ||
| 110 | extern struct platform_device realview_smc91x_device; | ||
| 111 | extern struct mmc_platform_data realview_mmc0_plat_data; | ||
| 112 | extern struct mmc_platform_data realview_mmc1_plat_data; | ||
| 113 | extern struct clk realview_clcd_clk; | ||
| 114 | extern struct clcd_board clcd_plat_data; | ||
| 115 | |||
| 116 | extern void realview_leds_event(led_event_t ledevt); | ||
| 117 | |||
| 118 | #endif | ||
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c new file mode 100644 index 000000000000..267bb07e39b7 --- /dev/null +++ b/arch/arm/mach-realview/realview_eb.c | |||
| @@ -0,0 +1,172 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mach-realview/realview_eb.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2004 ARM Limited | ||
| 5 | * Copyright (C) 2000 Deep Blue Solutions Ltd | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation; either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program; if not, write to the Free Software | ||
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 20 | */ | ||
| 21 | |||
| 22 | #include <linux/config.h> | ||
| 23 | #include <linux/init.h> | ||
| 24 | #include <linux/platform_device.h> | ||
| 25 | #include <linux/sysdev.h> | ||
| 26 | |||
| 27 | #include <asm/hardware.h> | ||
| 28 | #include <asm/io.h> | ||
| 29 | #include <asm/irq.h> | ||
| 30 | #include <asm/leds.h> | ||
| 31 | #include <asm/mach-types.h> | ||
| 32 | #include <asm/hardware/gic.h> | ||
| 33 | #include <asm/hardware/amba.h> | ||
| 34 | #include <asm/hardware/icst307.h> | ||
| 35 | |||
| 36 | #include <asm/mach/arch.h> | ||
| 37 | #include <asm/mach/map.h> | ||
| 38 | #include <asm/mach/mmc.h> | ||
| 39 | |||
| 40 | #include <asm/arch/irqs.h> | ||
| 41 | |||
| 42 | #include "core.h" | ||
| 43 | #include "clock.h" | ||
| 44 | |||
| 45 | static struct map_desc realview_eb_io_desc[] __initdata = { | ||
| 46 | { | ||
| 47 | .virtual = IO_ADDRESS(REALVIEW_SYS_BASE), | ||
| 48 | .pfn = __phys_to_pfn(REALVIEW_SYS_BASE), | ||
| 49 | .length = SZ_4K, | ||
| 50 | .type = MT_DEVICE, | ||
| 51 | }, { | ||
| 52 | .virtual = IO_ADDRESS(REALVIEW_GIC_CPU_BASE), | ||
| 53 | .pfn = __phys_to_pfn(REALVIEW_GIC_CPU_BASE), | ||
| 54 | .length = SZ_4K, | ||
| 55 | .type = MT_DEVICE, | ||
| 56 | }, { | ||
| 57 | .virtual = IO_ADDRESS(REALVIEW_GIC_DIST_BASE), | ||
| 58 | .pfn = __phys_to_pfn(REALVIEW_GIC_DIST_BASE), | ||
| 59 | .length = SZ_4K, | ||
| 60 | .type = MT_DEVICE, | ||
| 61 | }, { | ||
| 62 | .virtual = IO_ADDRESS(REALVIEW_SCTL_BASE), | ||
| 63 | .pfn = __phys_to_pfn(REALVIEW_SCTL_BASE), | ||
| 64 | .length = SZ_4K, | ||
| 65 | .type = MT_DEVICE, | ||
| 66 | }, { | ||
| 67 | .virtual = IO_ADDRESS(REALVIEW_TIMER0_1_BASE), | ||
| 68 | .pfn = __phys_to_pfn(REALVIEW_TIMER0_1_BASE), | ||
| 69 | .length = SZ_4K, | ||
| 70 | .type = MT_DEVICE, | ||
| 71 | }, { | ||
| 72 | .virtual = IO_ADDRESS(REALVIEW_TIMER2_3_BASE), | ||
| 73 | .pfn = __phys_to_pfn(REALVIEW_TIMER2_3_BASE), | ||
| 74 | .length = SZ_4K, | ||
| 75 | .type = MT_DEVICE, | ||
| 76 | }, | ||
| 77 | #ifdef CONFIG_DEBUG_LL | ||
| 78 | { | ||
| 79 | .virtual = IO_ADDRESS(REALVIEW_UART0_BASE), | ||
| 80 | .pfn = __phys_to_pfn(REALVIEW_UART0_BASE), | ||
| 81 | .length = SZ_4K, | ||
| 82 | .type = MT_DEVICE, | ||
| 83 | } | ||
| 84 | #endif | ||
| 85 | }; | ||
| 86 | |||
| 87 | static void __init realview_eb_map_io(void) | ||
| 88 | { | ||
| 89 | iotable_init(realview_eb_io_desc, ARRAY_SIZE(realview_eb_io_desc)); | ||
| 90 | } | ||
| 91 | |||
| 92 | /* FPGA Primecells */ | ||
| 93 | AMBA_DEVICE(aaci, "fpga:04", AACI, NULL); | ||
| 94 | AMBA_DEVICE(mmc0, "fpga:05", MMCI0, &realview_mmc0_plat_data); | ||
| 95 | AMBA_DEVICE(kmi0, "fpga:06", KMI0, NULL); | ||
| 96 | AMBA_DEVICE(kmi1, "fpga:07", KMI1, NULL); | ||
| 97 | AMBA_DEVICE(uart3, "fpga:09", UART3, NULL); | ||
| 98 | |||
| 99 | /* DevChip Primecells */ | ||
| 100 | AMBA_DEVICE(smc, "dev:00", SMC, NULL); | ||
| 101 | AMBA_DEVICE(clcd, "dev:20", CLCD, &clcd_plat_data); | ||
| 102 | AMBA_DEVICE(dmac, "dev:30", DMAC, NULL); | ||
| 103 | AMBA_DEVICE(sctl, "dev:e0", SCTL, NULL); | ||
| 104 | AMBA_DEVICE(wdog, "dev:e1", WATCHDOG, NULL); | ||
| 105 | AMBA_DEVICE(gpio0, "dev:e4", GPIO0, NULL); | ||
| 106 | AMBA_DEVICE(gpio1, "dev:e5", GPIO1, NULL); | ||
| 107 | AMBA_DEVICE(gpio2, "dev:e6", GPIO2, NULL); | ||
| 108 | AMBA_DEVICE(rtc, "dev:e8", RTC, NULL); | ||
| 109 | AMBA_DEVICE(sci0, "dev:f0", SCI, NULL); | ||
| 110 | AMBA_DEVICE(uart0, "dev:f1", UART0, NULL); | ||
| 111 | AMBA_DEVICE(uart1, "dev:f2", UART1, NULL); | ||
| 112 | AMBA_DEVICE(uart2, "dev:f3", UART2, NULL); | ||
| 113 | AMBA_DEVICE(ssp0, "dev:f4", SSP, NULL); | ||
| 114 | |||
| 115 | static struct amba_device *amba_devs[] __initdata = { | ||
| 116 | &dmac_device, | ||
| 117 | &uart0_device, | ||
| 118 | &uart1_device, | ||
| 119 | &uart2_device, | ||
| 120 | &uart3_device, | ||
| 121 | &smc_device, | ||
| 122 | &clcd_device, | ||
| 123 | &sctl_device, | ||
| 124 | &wdog_device, | ||
| 125 | &gpio0_device, | ||
| 126 | &gpio1_device, | ||
| 127 | &gpio2_device, | ||
| 128 | &rtc_device, | ||
| 129 | &sci0_device, | ||
| 130 | &ssp0_device, | ||
| 131 | &aaci_device, | ||
| 132 | &mmc0_device, | ||
| 133 | &kmi0_device, | ||
| 134 | &kmi1_device, | ||
| 135 | }; | ||
| 136 | |||
| 137 | static void __init gic_init_irq(void) | ||
| 138 | { | ||
| 139 | gic_dist_init(__io_address(REALVIEW_GIC_DIST_BASE)); | ||
| 140 | gic_cpu_init(__io_address(REALVIEW_GIC_CPU_BASE)); | ||
| 141 | } | ||
| 142 | |||
| 143 | static void __init realview_eb_init(void) | ||
| 144 | { | ||
| 145 | int i; | ||
| 146 | |||
| 147 | clk_register(&realview_clcd_clk); | ||
| 148 | |||
| 149 | platform_device_register(&realview_flash_device); | ||
| 150 | platform_device_register(&realview_smc91x_device); | ||
| 151 | |||
| 152 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | ||
| 153 | struct amba_device *d = amba_devs[i]; | ||
| 154 | amba_device_register(d, &iomem_resource); | ||
| 155 | } | ||
| 156 | |||
| 157 | #ifdef CONFIG_LEDS | ||
| 158 | leds_event = realview_leds_event; | ||
| 159 | #endif | ||
| 160 | } | ||
| 161 | |||
| 162 | MACHINE_START(REALVIEW_EB, "ARM-RealView EB") | ||
| 163 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ | ||
| 164 | .phys_ram = 0x00000000, | ||
| 165 | .phys_io = REALVIEW_UART0_BASE, | ||
| 166 | .io_pg_offst = (IO_ADDRESS(REALVIEW_UART0_BASE) >> 18) & 0xfffc, | ||
| 167 | .boot_params = 0x00000100, | ||
| 168 | .map_io = realview_eb_map_io, | ||
| 169 | .init_irq = gic_init_irq, | ||
| 170 | .timer = &realview_timer, | ||
| 171 | .init_machine = realview_eb_init, | ||
| 172 | MACHINE_END | ||
diff --git a/arch/arm/mach-s3c2410/clock.c b/arch/arm/mach-s3c2410/clock.c index 8b3d5dc35de5..82e8253b1fa0 100644 --- a/arch/arm/mach-s3c2410/clock.c +++ b/arch/arm/mach-s3c2410/clock.c | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | #include <linux/list.h> | 32 | #include <linux/list.h> |
| 33 | #include <linux/errno.h> | 33 | #include <linux/errno.h> |
| 34 | #include <linux/err.h> | 34 | #include <linux/err.h> |
| 35 | #include <linux/device.h> | 35 | #include <linux/platform_device.h> |
| 36 | #include <linux/sysdev.h> | 36 | #include <linux/sysdev.h> |
| 37 | 37 | ||
| 38 | #include <linux/interrupt.h> | 38 | #include <linux/interrupt.h> |
diff --git a/arch/arm/mach-s3c2410/cpu.c b/arch/arm/mach-s3c2410/cpu.c index ca366e9e264d..687fe371369d 100644 --- a/arch/arm/mach-s3c2410/cpu.c +++ b/arch/arm/mach-s3c2410/cpu.c | |||
| @@ -26,7 +26,7 @@ | |||
| 26 | #include <linux/module.h> | 26 | #include <linux/module.h> |
| 27 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
| 28 | #include <linux/ioport.h> | 28 | #include <linux/ioport.h> |
| 29 | #include <linux/device.h> | 29 | #include <linux/platform_device.h> |
| 30 | 30 | ||
| 31 | #include <asm/hardware.h> | 31 | #include <asm/hardware.h> |
| 32 | #include <asm/irq.h> | 32 | #include <asm/irq.h> |
diff --git a/arch/arm/mach-s3c2410/devs.c b/arch/arm/mach-s3c2410/devs.c index 08bc7d95a45d..f58406e6ef5a 100644 --- a/arch/arm/mach-s3c2410/devs.c +++ b/arch/arm/mach-s3c2410/devs.c | |||
| @@ -24,7 +24,7 @@ | |||
| 24 | #include <linux/list.h> | 24 | #include <linux/list.h> |
| 25 | #include <linux/timer.h> | 25 | #include <linux/timer.h> |
| 26 | #include <linux/init.h> | 26 | #include <linux/init.h> |
| 27 | #include <linux/device.h> | 27 | #include <linux/platform_device.h> |
| 28 | 28 | ||
| 29 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
| 30 | #include <asm/mach/map.h> | 30 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-s3c2410/devs.h b/arch/arm/mach-s3c2410/devs.h index d6328f96728b..52c4bab5c761 100644 --- a/arch/arm/mach-s3c2410/devs.h +++ b/arch/arm/mach-s3c2410/devs.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | * 10-Feb-2005 BJD Added camera from guillaume.gourat@nexvision.tv | 15 | * 10-Feb-2005 BJD Added camera from guillaume.gourat@nexvision.tv |
| 16 | */ | 16 | */ |
| 17 | #include <linux/config.h> | 17 | #include <linux/config.h> |
| 18 | #include <linux/platform_device.h> | ||
| 18 | 19 | ||
| 19 | extern struct platform_device *s3c24xx_uart_devs[]; | 20 | extern struct platform_device *s3c24xx_uart_devs[]; |
| 20 | 21 | ||
diff --git a/arch/arm/mach-s3c2410/mach-anubis.c b/arch/arm/mach-s3c2410/mach-anubis.c index 5ae80f4e3e67..8390b685c2b6 100644 --- a/arch/arm/mach-s3c2410/mach-anubis.c +++ b/arch/arm/mach-s3c2410/mach-anubis.c | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | #include <linux/list.h> | 21 | #include <linux/list.h> |
| 22 | #include <linux/timer.h> | 22 | #include <linux/timer.h> |
| 23 | #include <linux/init.h> | 23 | #include <linux/init.h> |
| 24 | #include <linux/device.h> | 24 | #include <linux/platform_device.h> |
| 25 | 25 | ||
| 26 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
| 27 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index c1b5c63ec24a..0b71c896bbd1 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | #include <linux/list.h> | 41 | #include <linux/list.h> |
| 42 | #include <linux/timer.h> | 42 | #include <linux/timer.h> |
| 43 | #include <linux/init.h> | 43 | #include <linux/init.h> |
| 44 | #include <linux/device.h> | 44 | #include <linux/platform_device.h> |
| 45 | #include <linux/dm9000.h> | 45 | #include <linux/dm9000.h> |
| 46 | 46 | ||
| 47 | #include <asm/mach/arch.h> | 47 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c index 7efeaaad2361..0aa8760598f7 100644 --- a/arch/arm/mach-s3c2410/mach-h1940.c +++ b/arch/arm/mach-s3c2410/mach-h1940.c | |||
| @@ -34,6 +34,7 @@ | |||
| 34 | #include <linux/list.h> | 34 | #include <linux/list.h> |
| 35 | #include <linux/timer.h> | 35 | #include <linux/timer.h> |
| 36 | #include <linux/init.h> | 36 | #include <linux/init.h> |
| 37 | #include <linux/platform_device.h> | ||
| 37 | 38 | ||
| 38 | #include <asm/mach/arch.h> | 39 | #include <asm/mach/arch.h> |
| 39 | #include <asm/mach/map.h> | 40 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-s3c2410/mach-n30.c b/arch/arm/mach-s3c2410/mach-n30.c index 5c0f2b091f95..378d640ab00b 100644 --- a/arch/arm/mach-s3c2410/mach-n30.c +++ b/arch/arm/mach-s3c2410/mach-n30.c | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #include <linux/timer.h> | 20 | #include <linux/timer.h> |
| 21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
| 22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
| 23 | #include <linux/device.h> | 23 | #include <linux/platform_device.h> |
| 24 | #include <linux/kthread.h> | 24 | #include <linux/kthread.h> |
| 25 | 25 | ||
| 26 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-s3c2410/mach-nexcoder.c b/arch/arm/mach-s3c2410/mach-nexcoder.c index c22f8216032d..42b0eeff2e0f 100644 --- a/arch/arm/mach-s3c2410/mach-nexcoder.c +++ b/arch/arm/mach-s3c2410/mach-nexcoder.c | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | #include <linux/timer.h> | 19 | #include <linux/timer.h> |
| 20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
| 21 | #include <linux/string.h> | 21 | #include <linux/string.h> |
| 22 | #include <linux/device.h> | 22 | #include <linux/platform_device.h> |
| 23 | 23 | ||
| 24 | #include <linux/mtd/map.h> | 24 | #include <linux/mtd/map.h> |
| 25 | 25 | ||
diff --git a/arch/arm/mach-s3c2410/mach-otom.c b/arch/arm/mach-s3c2410/mach-otom.c index ad1459e402e2..a2eb9ed48fcd 100644 --- a/arch/arm/mach-s3c2410/mach-otom.c +++ b/arch/arm/mach-s3c2410/mach-otom.c | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | #include <linux/list.h> | 15 | #include <linux/list.h> |
| 16 | #include <linux/timer.h> | 16 | #include <linux/timer.h> |
| 17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
| 18 | #include <linux/device.h> | 18 | #include <linux/platform_device.h> |
| 19 | 19 | ||
| 20 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
| 21 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-s3c2410/mach-rx3715.c b/arch/arm/mach-s3c2410/mach-rx3715.c index 22d9e070fd68..24d69019a843 100644 --- a/arch/arm/mach-s3c2410/mach-rx3715.c +++ b/arch/arm/mach-s3c2410/mach-rx3715.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA | 17 | * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA |
| 18 | * 14-Mar-2005 BJD Fixed __iomem warnings | 18 | * 14-Mar-2005 BJD Fixed __iomem warnings |
| 19 | * 20-Sep-2005 BJD Added static to non-exported items | 19 | * 20-Sep-2005 BJD Added static to non-exported items |
| 20 | * 31-Oct-2005 BJD Added LCD setup for framebuffer | ||
| 20 | */ | 21 | */ |
| 21 | 22 | ||
| 22 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
| @@ -27,6 +28,7 @@ | |||
| 27 | #include <linux/init.h> | 28 | #include <linux/init.h> |
| 28 | #include <linux/tty.h> | 29 | #include <linux/tty.h> |
| 29 | #include <linux/console.h> | 30 | #include <linux/console.h> |
| 31 | #include <linux/platform_device.h> | ||
| 30 | #include <linux/serial_core.h> | 32 | #include <linux/serial_core.h> |
| 31 | #include <linux/serial.h> | 33 | #include <linux/serial.h> |
| 32 | 34 | ||
| @@ -42,6 +44,9 @@ | |||
| 42 | 44 | ||
| 43 | #include <asm/arch/regs-serial.h> | 45 | #include <asm/arch/regs-serial.h> |
| 44 | #include <asm/arch/regs-gpio.h> | 46 | #include <asm/arch/regs-gpio.h> |
| 47 | #include <asm/arch/regs-lcd.h> | ||
| 48 | |||
| 49 | #include <asm/arch/fb.h> | ||
| 45 | 50 | ||
| 46 | #include "clock.h" | 51 | #include "clock.h" |
| 47 | #include "devs.h" | 52 | #include "devs.h" |
| @@ -96,6 +101,66 @@ static struct s3c2410_uartcfg rx3715_uartcfgs[] = { | |||
| 96 | } | 101 | } |
| 97 | }; | 102 | }; |
| 98 | 103 | ||
| 104 | /* framebuffer lcd controller information */ | ||
| 105 | |||
| 106 | static struct s3c2410fb_mach_info rx3715_lcdcfg __initdata = { | ||
| 107 | .regs = { | ||
| 108 | .lcdcon1 = S3C2410_LCDCON1_TFT16BPP | \ | ||
| 109 | S3C2410_LCDCON1_TFT | \ | ||
| 110 | S3C2410_LCDCON1_CLKVAL(0x0C), | ||
| 111 | |||
| 112 | .lcdcon2 = S3C2410_LCDCON2_VBPD(5) | \ | ||
| 113 | S3C2410_LCDCON2_LINEVAL(319) | \ | ||
| 114 | S3C2410_LCDCON2_VFPD(6) | \ | ||
| 115 | S3C2410_LCDCON2_VSPW(2), | ||
| 116 | |||
| 117 | .lcdcon3 = S3C2410_LCDCON3_HBPD(35) | \ | ||
| 118 | S3C2410_LCDCON3_HOZVAL(239) | \ | ||
| 119 | S3C2410_LCDCON3_HFPD(35), | ||
| 120 | |||
| 121 | .lcdcon4 = S3C2410_LCDCON4_MVAL(0) | \ | ||
| 122 | S3C2410_LCDCON4_HSPW(7), | ||
| 123 | |||
| 124 | .lcdcon5 = S3C2410_LCDCON5_INVVLINE | | ||
| 125 | S3C2410_LCDCON5_FRM565 | | ||
| 126 | S3C2410_LCDCON5_HWSWP, | ||
| 127 | }, | ||
| 128 | |||
| 129 | .lpcsel = 0xf82, | ||
| 130 | |||
| 131 | .gpccon = 0xaa955699, | ||
| 132 | .gpccon_mask = 0xffc003cc, | ||
| 133 | .gpcup = 0x0000ffff, | ||
| 134 | .gpcup_mask = 0xffffffff, | ||
| 135 | |||
| 136 | .gpdcon = 0xaa95aaa1, | ||
| 137 | .gpdcon_mask = 0xffc0fff0, | ||
| 138 | .gpdup = 0x0000faff, | ||
| 139 | .gpdup_mask = 0xffffffff, | ||
| 140 | |||
| 141 | .fixed_syncs = 1, | ||
| 142 | .width = 240, | ||
| 143 | .height = 320, | ||
| 144 | |||
| 145 | .xres = { | ||
| 146 | .min = 240, | ||
| 147 | .max = 240, | ||
| 148 | .defval = 240, | ||
| 149 | }, | ||
| 150 | |||
| 151 | .yres = { | ||
| 152 | .max = 320, | ||
| 153 | .min = 320, | ||
| 154 | .defval = 320, | ||
| 155 | }, | ||
| 156 | |||
| 157 | .bpp = { | ||
| 158 | .min = 16, | ||
| 159 | .max = 16, | ||
| 160 | .defval = 16, | ||
| 161 | }, | ||
| 162 | }; | ||
| 163 | |||
| 99 | static struct platform_device *rx3715_devices[] __initdata = { | 164 | static struct platform_device *rx3715_devices[] __initdata = { |
| 100 | &s3c_device_usb, | 165 | &s3c_device_usb, |
| 101 | &s3c_device_lcd, | 166 | &s3c_device_lcd, |
| @@ -122,14 +187,12 @@ static void __init rx3715_init_irq(void) | |||
| 122 | s3c24xx_init_irq(); | 187 | s3c24xx_init_irq(); |
| 123 | } | 188 | } |
| 124 | 189 | ||
| 125 | #ifdef CONFIG_PM | ||
| 126 | static void __init rx3715_init_machine(void) | 190 | static void __init rx3715_init_machine(void) |
| 127 | { | 191 | { |
| 128 | s3c2410_pm_init(); | 192 | s3c2410_pm_init(); |
| 193 | s3c24xx_fb_set_platdata(&rx3715_lcdcfg); | ||
| 129 | } | 194 | } |
| 130 | #else | 195 | |
| 131 | #define rx3715_init_machine NULL | ||
| 132 | #endif | ||
| 133 | 196 | ||
| 134 | MACHINE_START(RX3715, "IPAQ-RX3715") | 197 | MACHINE_START(RX3715, "IPAQ-RX3715") |
| 135 | /* Maintainer: Ben Dooks <ben@fluff.org> */ | 198 | /* Maintainer: Ben Dooks <ben@fluff.org> */ |
diff --git a/arch/arm/mach-s3c2410/mach-smdk2410.c b/arch/arm/mach-s3c2410/mach-smdk2410.c index 2eda55a6b678..2c91965ee1c8 100644 --- a/arch/arm/mach-s3c2410/mach-smdk2410.c +++ b/arch/arm/mach-s3c2410/mach-smdk2410.c | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | #include <linux/list.h> | 38 | #include <linux/list.h> |
| 39 | #include <linux/timer.h> | 39 | #include <linux/timer.h> |
| 40 | #include <linux/init.h> | 40 | #include <linux/init.h> |
| 41 | #include <linux/platform_device.h> | ||
| 41 | 42 | ||
| 42 | #include <asm/mach/arch.h> | 43 | #include <asm/mach/arch.h> |
| 43 | #include <asm/mach/map.h> | 44 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-s3c2410/mach-smdk2440.c b/arch/arm/mach-s3c2410/mach-smdk2440.c index 6950e61b7914..d666c621ad06 100644 --- a/arch/arm/mach-s3c2410/mach-smdk2440.c +++ b/arch/arm/mach-s3c2410/mach-smdk2440.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | #include <linux/list.h> | 28 | #include <linux/list.h> |
| 29 | #include <linux/timer.h> | 29 | #include <linux/timer.h> |
| 30 | #include <linux/init.h> | 30 | #include <linux/init.h> |
| 31 | #include <linux/platform_device.h> | ||
| 31 | 32 | ||
| 32 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
| 33 | #include <asm/mach/map.h> | 34 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-s3c2410/s3c2410.c b/arch/arm/mach-s3c2410/s3c2410.c index a8bf5ec82602..0a2013a76549 100644 --- a/arch/arm/mach-s3c2410/s3c2410.c +++ b/arch/arm/mach-s3c2410/s3c2410.c | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | #include <linux/list.h> | 27 | #include <linux/list.h> |
| 28 | #include <linux/timer.h> | 28 | #include <linux/timer.h> |
| 29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
| 30 | #include <linux/device.h> | 30 | #include <linux/platform_device.h> |
| 31 | 31 | ||
| 32 | #include <asm/mach/arch.h> | 32 | #include <asm/mach/arch.h> |
| 33 | #include <asm/mach/map.h> | 33 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-s3c2410/s3c2440.c b/arch/arm/mach-s3c2410/s3c2440.c index 833fa36bce05..4d63e7133b48 100644 --- a/arch/arm/mach-s3c2410/s3c2440.c +++ b/arch/arm/mach-s3c2410/s3c2440.c | |||
| @@ -26,7 +26,7 @@ | |||
| 26 | #include <linux/list.h> | 26 | #include <linux/list.h> |
| 27 | #include <linux/timer.h> | 27 | #include <linux/timer.h> |
| 28 | #include <linux/init.h> | 28 | #include <linux/init.h> |
| 29 | #include <linux/device.h> | 29 | #include <linux/platform_device.h> |
| 30 | #include <linux/sysdev.h> | 30 | #include <linux/sysdev.h> |
| 31 | 31 | ||
| 32 | #include <asm/mach/arch.h> | 32 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c index c92cebff7f8e..edccd5eb06be 100644 --- a/arch/arm/mach-sa1100/badge4.c +++ b/arch/arm/mach-sa1100/badge4.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
| 17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
| 18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
| 19 | #include <linux/device.h> | 19 | #include <linux/platform_device.h> |
| 20 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
| 21 | #include <linux/tty.h> | 21 | #include <linux/tty.h> |
| 22 | #include <linux/mtd/mtd.h> | 22 | #include <linux/mtd/mtd.h> |
diff --git a/arch/arm/mach-sa1100/cerf.c b/arch/arm/mach-sa1100/cerf.c index 23cb74885275..508593722bc7 100644 --- a/arch/arm/mach-sa1100/cerf.c +++ b/arch/arm/mach-sa1100/cerf.c | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
| 15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
| 16 | #include <linux/tty.h> | 16 | #include <linux/tty.h> |
| 17 | #include <linux/device.h> | 17 | #include <linux/platform_device.h> |
| 18 | #include <linux/mtd/mtd.h> | 18 | #include <linux/mtd/mtd.h> |
| 19 | #include <linux/mtd/partitions.h> | 19 | #include <linux/mtd/partitions.h> |
| 20 | 20 | ||
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c index 7fd6e29c36b7..522abc036d3a 100644 --- a/arch/arm/mach-sa1100/collie.c +++ b/arch/arm/mach-sa1100/collie.c | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
| 22 | #include <linux/tty.h> | 22 | #include <linux/tty.h> |
| 23 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
| 24 | #include <linux/device.h> | 24 | #include <linux/platform_device.h> |
| 25 | #include <linux/mtd/mtd.h> | 25 | #include <linux/mtd/mtd.h> |
| 26 | #include <linux/mtd/partitions.h> | 26 | #include <linux/mtd/partitions.h> |
| 27 | #include <linux/timer.h> | 27 | #include <linux/timer.h> |
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c index 83eba8b54816..2abdc419e984 100644 --- a/arch/arm/mach-sa1100/generic.c +++ b/arch/arm/mach-sa1100/generic.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <linux/cpufreq.h> | 18 | #include <linux/cpufreq.h> |
| 19 | #include <linux/ioport.h> | 19 | #include <linux/ioport.h> |
| 20 | #include <linux/sched.h> /* just for sched_clock() - funny that */ | 20 | #include <linux/sched.h> /* just for sched_clock() - funny that */ |
| 21 | #include <linux/platform_device.h> | ||
| 21 | 22 | ||
| 22 | #include <asm/div64.h> | 23 | #include <asm/div64.h> |
| 23 | #include <asm/hardware.h> | 24 | #include <asm/hardware.h> |
diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c index 89af0c831e8f..2f671cc3cb99 100644 --- a/arch/arm/mach-sa1100/jornada720.c +++ b/arch/arm/mach-sa1100/jornada720.c | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | #include <linux/kernel.h> | 6 | #include <linux/kernel.h> |
| 7 | #include <linux/tty.h> | 7 | #include <linux/tty.h> |
| 8 | #include <linux/delay.h> | 8 | #include <linux/delay.h> |
| 9 | #include <linux/device.h> | 9 | #include <linux/platform_device.h> |
| 10 | #include <linux/ioport.h> | 10 | #include <linux/ioport.h> |
| 11 | #include <linux/mtd/mtd.h> | 11 | #include <linux/mtd/mtd.h> |
| 12 | #include <linux/mtd/partitions.h> | 12 | #include <linux/mtd/partitions.h> |
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c index 052e4caedb89..69f1970646c6 100644 --- a/arch/arm/mach-sa1100/neponset.c +++ b/arch/arm/mach-sa1100/neponset.c | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | #include <linux/tty.h> | 8 | #include <linux/tty.h> |
| 9 | #include <linux/ioport.h> | 9 | #include <linux/ioport.h> |
| 10 | #include <linux/serial_core.h> | 10 | #include <linux/serial_core.h> |
| 11 | #include <linux/device.h> | 11 | #include <linux/platform_device.h> |
| 12 | #include <linux/slab.h> | 12 | #include <linux/slab.h> |
| 13 | 13 | ||
| 14 | #include <asm/hardware.h> | 14 | #include <asm/hardware.h> |
diff --git a/arch/arm/mach-sa1100/pleb.c b/arch/arm/mach-sa1100/pleb.c index e17b58fb9c9c..58c18f9e9b7b 100644 --- a/arch/arm/mach-sa1100/pleb.c +++ b/arch/arm/mach-sa1100/pleb.c | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | #include <linux/kernel.h> | 6 | #include <linux/kernel.h> |
| 7 | #include <linux/tty.h> | 7 | #include <linux/tty.h> |
| 8 | #include <linux/ioport.h> | 8 | #include <linux/ioport.h> |
| 9 | #include <linux/device.h> | 9 | #include <linux/platform_device.h> |
| 10 | 10 | ||
| 11 | #include <linux/mtd/partitions.h> | 11 | #include <linux/mtd/partitions.h> |
| 12 | 12 | ||
diff --git a/arch/arm/mach-sa1100/simpad.c b/arch/arm/mach-sa1100/simpad.c index cfb6658e5cdf..439ddc9b06d6 100644 --- a/arch/arm/mach-sa1100/simpad.c +++ b/arch/arm/mach-sa1100/simpad.c | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | #include <linux/proc_fs.h> | 10 | #include <linux/proc_fs.h> |
| 11 | #include <linux/string.h> | 11 | #include <linux/string.h> |
| 12 | #include <linux/pm.h> | 12 | #include <linux/pm.h> |
| 13 | #include <linux/device.h> | 13 | #include <linux/platform_device.h> |
| 14 | #include <linux/mtd/mtd.h> | 14 | #include <linux/mtd/mtd.h> |
| 15 | #include <linux/mtd/partitions.h> | 15 | #include <linux/mtd/partitions.h> |
| 16 | 16 | ||
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 7e4bdd07f4af..a1ca46630dda 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
| 23 | #include <linux/device.h> | 23 | #include <linux/device.h> |
| 24 | #include <linux/dma-mapping.h> | 24 | #include <linux/dma-mapping.h> |
| 25 | #include <linux/platform_device.h> | ||
| 25 | #include <linux/sysdev.h> | 26 | #include <linux/sysdev.h> |
| 26 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
| 27 | 28 | ||
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index c54e04c995ee..e3c14d6b4328 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
| @@ -120,8 +120,8 @@ config CPU_ARM925T | |||
| 120 | 120 | ||
| 121 | # ARM926T | 121 | # ARM926T |
| 122 | config CPU_ARM926T | 122 | config CPU_ARM926T |
| 123 | bool "Support ARM926T processor" if ARCH_INTEGRATOR | 123 | bool "Support ARM926T processor" |
| 124 | depends on ARCH_INTEGRATOR || ARCH_VERSATILE_PB || MACH_VERSATILE_AB || ARCH_OMAP730 || ARCH_OMAP16XX | 124 | depends on ARCH_INTEGRATOR || ARCH_VERSATILE_PB || MACH_VERSATILE_AB || ARCH_OMAP730 || ARCH_OMAP16XX || MACH_REALVIEW_EB |
| 125 | default y if ARCH_VERSATILE_PB || MACH_VERSATILE_AB || ARCH_OMAP730 || ARCH_OMAP16XX | 125 | default y if ARCH_VERSATILE_PB || MACH_VERSATILE_AB || ARCH_OMAP730 || ARCH_OMAP16XX |
| 126 | select CPU_32v5 | 126 | select CPU_32v5 |
| 127 | select CPU_ABRT_EV5TJ | 127 | select CPU_ABRT_EV5TJ |
| @@ -242,7 +242,7 @@ config CPU_XSCALE | |||
| 242 | # ARMv6 | 242 | # ARMv6 |
| 243 | config CPU_V6 | 243 | config CPU_V6 |
| 244 | bool "Support ARM V6 processor" | 244 | bool "Support ARM V6 processor" |
| 245 | depends on ARCH_INTEGRATOR | 245 | depends on ARCH_INTEGRATOR || MACH_REALVIEW_EB |
| 246 | select CPU_32v6 | 246 | select CPU_32v6 |
| 247 | select CPU_ABRT_EV6 | 247 | select CPU_ABRT_EV6 |
| 248 | select CPU_CACHE_V6 | 248 | select CPU_CACHE_V6 |
| @@ -250,6 +250,18 @@ config CPU_V6 | |||
| 250 | select CPU_COPY_V6 | 250 | select CPU_COPY_V6 |
| 251 | select CPU_TLB_V6 | 251 | select CPU_TLB_V6 |
| 252 | 252 | ||
| 253 | # ARMv6k | ||
| 254 | config CPU_32v6K | ||
| 255 | bool "Support ARM V6K processor extensions" if !SMP | ||
| 256 | depends on CPU_V6 | ||
| 257 | default y if SMP | ||
| 258 | help | ||
| 259 | Say Y here if your ARMv6 processor supports the 'K' extension. | ||
| 260 | This enables the kernel to use some instructions not present | ||
| 261 | on previous processors, and as such a kernel build with this | ||
| 262 | enabled will not boot on processors with do not support these | ||
| 263 | instructions. | ||
| 264 | |||
| 253 | # Figure out what processor architecture version we should be using. | 265 | # Figure out what processor architecture version we should be using. |
| 254 | # This defines the compiler instruction set which depends on the machine type. | 266 | # This defines the compiler instruction set which depends on the machine type. |
| 255 | config CPU_32v3 | 267 | config CPU_32v3 |
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index fd079ff1fc53..c168f322ef8c 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
| @@ -486,10 +486,17 @@ static void __init devicemaps_init(struct machine_desc *mdesc) | |||
| 486 | 486 | ||
| 487 | /* | 487 | /* |
| 488 | * Ask the machine support to map in the statically mapped devices. | 488 | * Ask the machine support to map in the statically mapped devices. |
| 489 | * After this point, we can start to touch devices again. | ||
| 490 | */ | 489 | */ |
| 491 | if (mdesc->map_io) | 490 | if (mdesc->map_io) |
| 492 | mdesc->map_io(); | 491 | mdesc->map_io(); |
| 492 | |||
| 493 | /* | ||
| 494 | * Finally flush the tlb again - this ensures that we're in a | ||
| 495 | * consistent state wrt the writebuffer if the writebuffer needs | ||
| 496 | * draining. After this point, we can start to touch devices | ||
| 497 | * again. | ||
| 498 | */ | ||
| 499 | local_flush_tlb_all(); | ||
| 493 | } | 500 | } |
| 494 | 501 | ||
| 495 | /* | 502 | /* |
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c index 1221fdde1769..fb5b40289de2 100644 --- a/arch/arm/mm/mm-armv.c +++ b/arch/arm/mm/mm-armv.c | |||
| @@ -469,14 +469,14 @@ void __init create_mapping(struct map_desc *md) | |||
| 469 | 469 | ||
| 470 | if (md->virtual != vectors_base() && md->virtual < TASK_SIZE) { | 470 | if (md->virtual != vectors_base() && md->virtual < TASK_SIZE) { |
| 471 | printk(KERN_WARNING "BUG: not creating mapping for " | 471 | printk(KERN_WARNING "BUG: not creating mapping for " |
| 472 | "0x%016llx at 0x%08lx in user region\n", | 472 | "0x%08llx at 0x%08lx in user region\n", |
| 473 | __pfn_to_phys((u64)md->pfn), md->virtual); | 473 | __pfn_to_phys((u64)md->pfn), md->virtual); |
| 474 | return; | 474 | return; |
| 475 | } | 475 | } |
| 476 | 476 | ||
| 477 | if ((md->type == MT_DEVICE || md->type == MT_ROM) && | 477 | if ((md->type == MT_DEVICE || md->type == MT_ROM) && |
| 478 | md->virtual >= PAGE_OFFSET && md->virtual < VMALLOC_END) { | 478 | md->virtual >= PAGE_OFFSET && md->virtual < VMALLOC_END) { |
| 479 | printk(KERN_WARNING "BUG: mapping for 0x%016llx at 0x%08lx " | 479 | printk(KERN_WARNING "BUG: mapping for 0x%08llx at 0x%08lx " |
| 480 | "overlaps vmalloc space\n", | 480 | "overlaps vmalloc space\n", |
| 481 | __pfn_to_phys((u64)md->pfn), md->virtual); | 481 | __pfn_to_phys((u64)md->pfn), md->virtual); |
| 482 | } | 482 | } |
| @@ -492,14 +492,14 @@ void __init create_mapping(struct map_desc *md) | |||
| 492 | if(md->pfn >= 0x100000) { | 492 | if(md->pfn >= 0x100000) { |
| 493 | if(domain) { | 493 | if(domain) { |
| 494 | printk(KERN_ERR "MM: invalid domain in supersection " | 494 | printk(KERN_ERR "MM: invalid domain in supersection " |
| 495 | "mapping for 0x%016llx at 0x%08lx\n", | 495 | "mapping for 0x%08llx at 0x%08lx\n", |
| 496 | __pfn_to_phys((u64)md->pfn), md->virtual); | 496 | __pfn_to_phys((u64)md->pfn), md->virtual); |
| 497 | return; | 497 | return; |
| 498 | } | 498 | } |
| 499 | if((md->virtual | md->length | __pfn_to_phys(md->pfn)) | 499 | if((md->virtual | md->length | __pfn_to_phys(md->pfn)) |
| 500 | & ~SUPERSECTION_MASK) { | 500 | & ~SUPERSECTION_MASK) { |
| 501 | printk(KERN_ERR "MM: cannot create mapping for " | 501 | printk(KERN_ERR "MM: cannot create mapping for " |
| 502 | "0x%016llx at 0x%08lx invalid alignment\n", | 502 | "0x%08llx at 0x%08lx invalid alignment\n", |
| 503 | __pfn_to_phys((u64)md->pfn), md->virtual); | 503 | __pfn_to_phys((u64)md->pfn), md->virtual); |
| 504 | return; | 504 | return; |
| 505 | } | 505 | } |
diff --git a/arch/arm/plat-omap/usb.c b/arch/arm/plat-omap/usb.c index 14a836d7ac25..205e2d0b826d 100644 --- a/arch/arm/plat-omap/usb.c +++ b/arch/arm/plat-omap/usb.c | |||
| @@ -26,7 +26,7 @@ | |||
| 26 | #include <linux/types.h> | 26 | #include <linux/types.h> |
| 27 | #include <linux/errno.h> | 27 | #include <linux/errno.h> |
| 28 | #include <linux/init.h> | 28 | #include <linux/init.h> |
| 29 | #include <linux/device.h> | 29 | #include <linux/platform_device.h> |
| 30 | #include <linux/usb_otg.h> | 30 | #include <linux/usb_otg.h> |
| 31 | 31 | ||
| 32 | #include <asm/io.h> | 32 | #include <asm/io.h> |
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index 5383e5e2d9b7..bac0da731ee3 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig | |||
| @@ -1042,8 +1042,3 @@ config X86_TRAMPOLINE | |||
| 1042 | bool | 1042 | bool |
| 1043 | depends on X86_SMP || (X86_VOYAGER && SMP) | 1043 | depends on X86_SMP || (X86_VOYAGER && SMP) |
| 1044 | default y | 1044 | default y |
| 1045 | |||
| 1046 | config PC | ||
| 1047 | bool | ||
| 1048 | depends on X86 && !EMBEDDED | ||
| 1049 | default y | ||
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 9204be6eedb3..7c724ffa08bb 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
| @@ -803,7 +803,6 @@ no_apic: | |||
| 803 | 803 | ||
| 804 | void __init init_apic_mappings(void) | 804 | void __init init_apic_mappings(void) |
| 805 | { | 805 | { |
| 806 | unsigned int orig_apicid; | ||
| 807 | unsigned long apic_phys; | 806 | unsigned long apic_phys; |
| 808 | 807 | ||
| 809 | /* | 808 | /* |
| @@ -825,11 +824,8 @@ void __init init_apic_mappings(void) | |||
| 825 | * Fetch the APIC ID of the BSP in case we have a | 824 | * Fetch the APIC ID of the BSP in case we have a |
| 826 | * default configuration (or the MP table is broken). | 825 | * default configuration (or the MP table is broken). |
| 827 | */ | 826 | */ |
| 828 | orig_apicid = boot_cpu_physical_apicid; | 827 | if (boot_cpu_physical_apicid == -1U) |
| 829 | boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); | 828 | boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); |
| 830 | if ((orig_apicid != -1U) && (orig_apicid != boot_cpu_physical_apicid)) | ||
| 831 | printk(KERN_WARNING "Boot APIC ID in local APIC unexpected (%d vs %d)", | ||
| 832 | orig_apicid, boot_cpu_physical_apicid); | ||
| 833 | 829 | ||
| 834 | #ifdef CONFIG_X86_IO_APIC | 830 | #ifdef CONFIG_X86_IO_APIC |
| 835 | { | 831 | { |
| @@ -1259,81 +1255,40 @@ fastcall void smp_error_interrupt(struct pt_regs *regs) | |||
| 1259 | } | 1255 | } |
| 1260 | 1256 | ||
| 1261 | /* | 1257 | /* |
| 1262 | * This initializes the IO-APIC and APIC hardware. | 1258 | * This initializes the IO-APIC and APIC hardware if this is |
| 1259 | * a UP kernel. | ||
| 1263 | */ | 1260 | */ |
| 1264 | int __init APIC_init(void) | 1261 | int __init APIC_init_uniprocessor (void) |
| 1265 | { | 1262 | { |
| 1266 | if (enable_local_apic < 0) { | 1263 | if (enable_local_apic < 0) |
| 1267 | printk(KERN_INFO "APIC disabled\n"); | 1264 | clear_bit(X86_FEATURE_APIC, boot_cpu_data.x86_capability); |
| 1268 | return -1; | ||
| 1269 | } | ||
| 1270 | 1265 | ||
| 1271 | /* See if we have a SMP configuration or have forced enabled | 1266 | if (!smp_found_config && !cpu_has_apic) |
| 1272 | * the local apic. | ||
| 1273 | */ | ||
| 1274 | if (!smp_found_config && !acpi_lapic && !cpu_has_apic) { | ||
| 1275 | enable_local_apic = -1; | ||
| 1276 | return -1; | 1267 | return -1; |
| 1277 | } | ||
| 1278 | 1268 | ||
| 1279 | /* | 1269 | /* |
| 1280 | * Complain if the BIOS pretends there is an apic. | 1270 | * Complain if the BIOS pretends there is one. |
| 1281 | * Then get out because we don't have an a local apic. | ||
| 1282 | */ | 1271 | */ |
| 1283 | if (!cpu_has_apic && APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) { | 1272 | if (!cpu_has_apic && APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) { |
| 1284 | printk(KERN_ERR "BIOS bug, local APIC #%d not detected!...\n", | 1273 | printk(KERN_ERR "BIOS bug, local APIC #%d not detected!...\n", |
| 1285 | boot_cpu_physical_apicid); | 1274 | boot_cpu_physical_apicid); |
| 1286 | printk(KERN_ERR "... forcing use of dummy APIC emulation. (tell your hw vendor)\n"); | ||
| 1287 | enable_local_apic = -1; | ||
| 1288 | return -1; | 1275 | return -1; |
| 1289 | } | 1276 | } |
| 1290 | 1277 | ||
| 1291 | verify_local_APIC(); | 1278 | verify_local_APIC(); |
| 1292 | 1279 | ||
| 1293 | /* | ||
| 1294 | * Should not be necessary because the MP table should list the boot | ||
| 1295 | * CPU too, but we do it for the sake of robustness anyway. | ||
| 1296 | * Makes no sense to do this check in clustered apic mode, so skip it | ||
| 1297 | */ | ||
| 1298 | if (!check_phys_apicid_present(boot_cpu_physical_apicid)) { | ||
| 1299 | printk("weird, boot CPU (#%d) not listed by the BIOS.\n", | ||
| 1300 | boot_cpu_physical_apicid); | ||
| 1301 | physid_set(boot_cpu_physical_apicid, phys_cpu_present_map); | ||
| 1302 | } | ||
| 1303 | |||
| 1304 | /* | ||
| 1305 | * Switch from PIC to APIC mode. | ||
| 1306 | */ | ||
| 1307 | connect_bsp_APIC(); | 1280 | connect_bsp_APIC(); |
| 1308 | setup_local_APIC(); | ||
| 1309 | 1281 | ||
| 1310 | #ifdef CONFIG_X86_IO_APIC | 1282 | phys_cpu_present_map = physid_mask_of_physid(boot_cpu_physical_apicid); |
| 1311 | /* | ||
| 1312 | * Now start the IO-APICs | ||
| 1313 | */ | ||
| 1314 | if (smp_found_config && !skip_ioapic_setup && nr_ioapics) | ||
| 1315 | setup_IO_APIC(); | ||
| 1316 | #endif | ||
| 1317 | return 0; | ||
| 1318 | } | ||
| 1319 | 1283 | ||
| 1320 | void __init APIC_late_time_init(void) | 1284 | setup_local_APIC(); |
| 1321 | { | ||
| 1322 | /* Improve our loops per jiffy estimate */ | ||
| 1323 | loops_per_jiffy = ((1000 + HZ - 1)/HZ)*cpu_khz; | ||
| 1324 | boot_cpu_data.loops_per_jiffy = loops_per_jiffy; | ||
| 1325 | cpu_data[0].loops_per_jiffy = loops_per_jiffy; | ||
| 1326 | |||
| 1327 | /* setup_apic_nmi_watchdog doesn't work properly before cpu_khz is | ||
| 1328 | * initialized. So redo it here to ensure the boot cpu is setup | ||
| 1329 | * properly. | ||
| 1330 | */ | ||
| 1331 | if (nmi_watchdog == NMI_LOCAL_APIC) | ||
| 1332 | setup_apic_nmi_watchdog(); | ||
| 1333 | 1285 | ||
| 1334 | #ifdef CONFIG_X86_IO_APIC | 1286 | #ifdef CONFIG_X86_IO_APIC |
| 1335 | if (smp_found_config && !skip_ioapic_setup && nr_ioapics) | 1287 | if (smp_found_config) |
| 1336 | IO_APIC_late_time_init(); | 1288 | if (!skip_ioapic_setup && nr_ioapics) |
| 1289 | setup_IO_APIC(); | ||
| 1337 | #endif | 1290 | #endif |
| 1338 | setup_boot_APIC_clock(); | 1291 | setup_boot_APIC_clock(); |
| 1292 | |||
| 1293 | return 0; | ||
| 1339 | } | 1294 | } |
diff --git a/arch/i386/kernel/i8259.c b/arch/i386/kernel/i8259.c index d86f24909284..323ef8ab3244 100644 --- a/arch/i386/kernel/i8259.c +++ b/arch/i386/kernel/i8259.c | |||
| @@ -435,8 +435,4 @@ void __init init_IRQ(void) | |||
| 435 | setup_irq(FPU_IRQ, &fpu_irq); | 435 | setup_irq(FPU_IRQ, &fpu_irq); |
| 436 | 436 | ||
| 437 | irq_ctx_init(smp_processor_id()); | 437 | irq_ctx_init(smp_processor_id()); |
| 438 | |||
| 439 | #ifdef CONFIG_X86_LOCAL_APIC | ||
| 440 | APIC_init(); | ||
| 441 | #endif | ||
| 442 | } | 438 | } |
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c index 5a77c52b20a9..cc5d7ac5b2e7 100644 --- a/arch/i386/kernel/io_apic.c +++ b/arch/i386/kernel/io_apic.c | |||
| @@ -2387,15 +2387,11 @@ void __init setup_IO_APIC(void) | |||
| 2387 | sync_Arb_IDs(); | 2387 | sync_Arb_IDs(); |
| 2388 | setup_IO_APIC_irqs(); | 2388 | setup_IO_APIC_irqs(); |
| 2389 | init_IO_APIC_traps(); | 2389 | init_IO_APIC_traps(); |
| 2390 | check_timer(); | ||
| 2390 | if (!acpi_ioapic) | 2391 | if (!acpi_ioapic) |
| 2391 | print_IO_APIC(); | 2392 | print_IO_APIC(); |
| 2392 | } | 2393 | } |
| 2393 | 2394 | ||
| 2394 | void __init IO_APIC_late_time_init(void) | ||
| 2395 | { | ||
| 2396 | check_timer(); | ||
| 2397 | } | ||
| 2398 | |||
| 2399 | /* | 2395 | /* |
| 2400 | * Called after all the initialization is done. If we didnt find any | 2396 | * Called after all the initialization is done. If we didnt find any |
| 2401 | * APIC bugs then we can allow the modify fast path | 2397 | * APIC bugs then we can allow the modify fast path |
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c index 5a2bbe0c4fff..01b618e73ecd 100644 --- a/arch/i386/kernel/smpboot.c +++ b/arch/i386/kernel/smpboot.c | |||
| @@ -1078,16 +1078,6 @@ void *xquad_portio; | |||
| 1078 | EXPORT_SYMBOL(xquad_portio); | 1078 | EXPORT_SYMBOL(xquad_portio); |
| 1079 | #endif | 1079 | #endif |
| 1080 | 1080 | ||
| 1081 | /* | ||
| 1082 | * Fall back to non SMP mode after errors. | ||
| 1083 | * | ||
| 1084 | */ | ||
| 1085 | static __init void disable_smp(void) | ||
| 1086 | { | ||
| 1087 | cpu_set(0, cpu_sibling_map[0]); | ||
| 1088 | cpu_set(0, cpu_core_map[0]); | ||
| 1089 | } | ||
| 1090 | |||
| 1091 | static void __init smp_boot_cpus(unsigned int max_cpus) | 1081 | static void __init smp_boot_cpus(unsigned int max_cpus) |
| 1092 | { | 1082 | { |
| 1093 | int apicid, cpu, bit, kicked; | 1083 | int apicid, cpu, bit, kicked; |
| @@ -1100,6 +1090,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus) | |||
| 1100 | printk("CPU%d: ", 0); | 1090 | printk("CPU%d: ", 0); |
| 1101 | print_cpu_info(&cpu_data[0]); | 1091 | print_cpu_info(&cpu_data[0]); |
| 1102 | 1092 | ||
| 1093 | boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); | ||
| 1103 | boot_cpu_logical_apicid = logical_smp_processor_id(); | 1094 | boot_cpu_logical_apicid = logical_smp_processor_id(); |
| 1104 | x86_cpu_to_apicid[0] = boot_cpu_physical_apicid; | 1095 | x86_cpu_to_apicid[0] = boot_cpu_physical_apicid; |
| 1105 | 1096 | ||
| @@ -1111,27 +1102,68 @@ static void __init smp_boot_cpus(unsigned int max_cpus) | |||
| 1111 | cpus_clear(cpu_core_map[0]); | 1102 | cpus_clear(cpu_core_map[0]); |
| 1112 | cpu_set(0, cpu_core_map[0]); | 1103 | cpu_set(0, cpu_core_map[0]); |
| 1113 | 1104 | ||
| 1114 | map_cpu_to_logical_apicid(); | ||
| 1115 | |||
| 1116 | /* | 1105 | /* |
| 1117 | * If we couldn't find an SMP configuration at boot time, | 1106 | * If we couldn't find an SMP configuration at boot time, |
| 1118 | * get out of here now! | 1107 | * get out of here now! |
| 1119 | */ | 1108 | */ |
| 1120 | if (!smp_found_config && !acpi_lapic) { | 1109 | if (!smp_found_config && !acpi_lapic) { |
| 1121 | printk(KERN_NOTICE "SMP motherboard not detected.\n"); | 1110 | printk(KERN_NOTICE "SMP motherboard not detected.\n"); |
| 1122 | disable_smp(); | 1111 | smpboot_clear_io_apic_irqs(); |
| 1112 | phys_cpu_present_map = physid_mask_of_physid(0); | ||
| 1113 | if (APIC_init_uniprocessor()) | ||
| 1114 | printk(KERN_NOTICE "Local APIC not detected." | ||
| 1115 | " Using dummy APIC emulation.\n"); | ||
| 1116 | map_cpu_to_logical_apicid(); | ||
| 1117 | cpu_set(0, cpu_sibling_map[0]); | ||
| 1118 | cpu_set(0, cpu_core_map[0]); | ||
| 1119 | return; | ||
| 1120 | } | ||
| 1121 | |||
| 1122 | /* | ||
| 1123 | * Should not be necessary because the MP table should list the boot | ||
| 1124 | * CPU too, but we do it for the sake of robustness anyway. | ||
| 1125 | * Makes no sense to do this check in clustered apic mode, so skip it | ||
| 1126 | */ | ||
| 1127 | if (!check_phys_apicid_present(boot_cpu_physical_apicid)) { | ||
| 1128 | printk("weird, boot CPU (#%d) not listed by the BIOS.\n", | ||
| 1129 | boot_cpu_physical_apicid); | ||
| 1130 | physid_set(hard_smp_processor_id(), phys_cpu_present_map); | ||
| 1131 | } | ||
| 1132 | |||
| 1133 | /* | ||
| 1134 | * If we couldn't find a local APIC, then get out of here now! | ||
| 1135 | */ | ||
| 1136 | if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid]) && !cpu_has_apic) { | ||
| 1137 | printk(KERN_ERR "BIOS bug, local APIC #%d not detected!...\n", | ||
| 1138 | boot_cpu_physical_apicid); | ||
| 1139 | printk(KERN_ERR "... forcing use of dummy APIC emulation. (tell your hw vendor)\n"); | ||
| 1140 | smpboot_clear_io_apic_irqs(); | ||
| 1141 | phys_cpu_present_map = physid_mask_of_physid(0); | ||
| 1142 | cpu_set(0, cpu_sibling_map[0]); | ||
| 1143 | cpu_set(0, cpu_core_map[0]); | ||
| 1123 | return; | 1144 | return; |
| 1124 | } | 1145 | } |
| 1125 | 1146 | ||
| 1147 | verify_local_APIC(); | ||
| 1148 | |||
| 1126 | /* | 1149 | /* |
| 1127 | * If SMP should be disabled, then really disable it! | 1150 | * If SMP should be disabled, then really disable it! |
| 1128 | */ | 1151 | */ |
| 1129 | if (!max_cpus || (enable_local_apic < 0)) { | 1152 | if (!max_cpus) { |
| 1130 | printk(KERN_INFO "SMP mode deactivated.\n"); | 1153 | smp_found_config = 0; |
| 1131 | disable_smp(); | 1154 | printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n"); |
| 1155 | smpboot_clear_io_apic_irqs(); | ||
| 1156 | phys_cpu_present_map = physid_mask_of_physid(0); | ||
| 1157 | cpu_set(0, cpu_sibling_map[0]); | ||
| 1158 | cpu_set(0, cpu_core_map[0]); | ||
| 1132 | return; | 1159 | return; |
| 1133 | } | 1160 | } |
| 1134 | 1161 | ||
| 1162 | connect_bsp_APIC(); | ||
| 1163 | setup_local_APIC(); | ||
| 1164 | map_cpu_to_logical_apicid(); | ||
| 1165 | |||
| 1166 | |||
| 1135 | setup_portio_remap(); | 1167 | setup_portio_remap(); |
| 1136 | 1168 | ||
| 1137 | /* | 1169 | /* |
| @@ -1212,6 +1244,10 @@ static void __init smp_boot_cpus(unsigned int max_cpus) | |||
| 1212 | cpu_set(0, cpu_sibling_map[0]); | 1244 | cpu_set(0, cpu_sibling_map[0]); |
| 1213 | cpu_set(0, cpu_core_map[0]); | 1245 | cpu_set(0, cpu_core_map[0]); |
| 1214 | 1246 | ||
| 1247 | smpboot_setup_io_apic(); | ||
| 1248 | |||
| 1249 | setup_boot_APIC_clock(); | ||
| 1250 | |||
| 1215 | /* | 1251 | /* |
| 1216 | * Synchronize the TSC with the AP | 1252 | * Synchronize the TSC with the AP |
| 1217 | */ | 1253 | */ |
diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c index 07471bba2dc6..41c5b2dc6200 100644 --- a/arch/i386/kernel/time.c +++ b/arch/i386/kernel/time.c | |||
| @@ -440,8 +440,8 @@ static int time_init_device(void) | |||
| 440 | 440 | ||
| 441 | device_initcall(time_init_device); | 441 | device_initcall(time_init_device); |
| 442 | 442 | ||
| 443 | extern void (*late_time_init)(void); | ||
| 444 | #ifdef CONFIG_HPET_TIMER | 443 | #ifdef CONFIG_HPET_TIMER |
| 444 | extern void (*late_time_init)(void); | ||
| 445 | /* Duplicate of time_init() below, with hpet_enable part added */ | 445 | /* Duplicate of time_init() below, with hpet_enable part added */ |
| 446 | static void __init hpet_time_init(void) | 446 | static void __init hpet_time_init(void) |
| 447 | { | 447 | { |
| @@ -458,11 +458,6 @@ static void __init hpet_time_init(void) | |||
| 458 | printk(KERN_INFO "Using %s for high-res timesource\n",cur_timer->name); | 458 | printk(KERN_INFO "Using %s for high-res timesource\n",cur_timer->name); |
| 459 | 459 | ||
| 460 | time_init_hook(); | 460 | time_init_hook(); |
| 461 | |||
| 462 | #ifdef CONFIG_X86_LOCAL_APIC | ||
| 463 | if (enable_local_apic >= 0) | ||
| 464 | APIC_late_time_init(); | ||
| 465 | #endif | ||
| 466 | } | 461 | } |
| 467 | #endif | 462 | #endif |
| 468 | 463 | ||
| @@ -487,9 +482,4 @@ void __init time_init(void) | |||
| 487 | printk(KERN_INFO "Using %s for high-res timesource\n",cur_timer->name); | 482 | printk(KERN_INFO "Using %s for high-res timesource\n",cur_timer->name); |
| 488 | 483 | ||
| 489 | time_init_hook(); | 484 | time_init_hook(); |
| 490 | |||
| 491 | #ifdef CONFIG_X86_LOCAL_APIC | ||
| 492 | if (enable_local_apic >= 0) | ||
| 493 | late_time_init = APIC_late_time_init; | ||
| 494 | #endif | ||
| 495 | } | 485 | } |
diff --git a/arch/i386/pci/fixup.c b/arch/i386/pci/fixup.c index 330fd2b68075..3984226a8b98 100644 --- a/arch/i386/pci/fixup.c +++ b/arch/i386/pci/fixup.c | |||
| @@ -398,7 +398,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video); | |||
| 398 | */ | 398 | */ |
| 399 | static u16 toshiba_line_size; | 399 | static u16 toshiba_line_size; |
| 400 | 400 | ||
| 401 | static struct dmi_system_id __devinit toshiba_ohci1394_dmi_table[] = { | 401 | static struct dmi_system_id __devinitdata toshiba_ohci1394_dmi_table[] = { |
| 402 | { | 402 | { |
| 403 | .ident = "Toshiba PS5 based laptop", | 403 | .ident = "Toshiba PS5 based laptop", |
| 404 | .matches = { | 404 | .matches = { |
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 1642375fb14e..3b4248cff9a7 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
| @@ -26,6 +26,10 @@ config MMU | |||
| 26 | bool | 26 | bool |
| 27 | default y | 27 | default y |
| 28 | 28 | ||
| 29 | config SWIOTLB | ||
| 30 | bool | ||
| 31 | default y | ||
| 32 | |||
| 29 | config RWSEM_XCHGADD_ALGORITHM | 33 | config RWSEM_XCHGADD_ALGORITHM |
| 30 | bool | 34 | bool |
| 31 | default y | 35 | default y |
diff --git a/arch/ia64/lib/Makefile b/arch/ia64/lib/Makefile index cb1af597370b..ac64664a1807 100644 --- a/arch/ia64/lib/Makefile +++ b/arch/ia64/lib/Makefile | |||
| @@ -9,7 +9,7 @@ lib-y := __divsi3.o __udivsi3.o __modsi3.o __umodsi3.o \ | |||
| 9 | bitop.o checksum.o clear_page.o csum_partial_copy.o \ | 9 | bitop.o checksum.o clear_page.o csum_partial_copy.o \ |
| 10 | clear_user.o strncpy_from_user.o strlen_user.o strnlen_user.o \ | 10 | clear_user.o strncpy_from_user.o strlen_user.o strnlen_user.o \ |
| 11 | flush.o ip_fast_csum.o do_csum.o \ | 11 | flush.o ip_fast_csum.o do_csum.o \ |
| 12 | memset.o strlen.o swiotlb.o | 12 | memset.o strlen.o |
| 13 | 13 | ||
| 14 | lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o | 14 | lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o |
| 15 | lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o | 15 | lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o |
diff --git a/arch/ia64/lib/swiotlb.c b/arch/ia64/lib/swiotlb.c deleted file mode 100644 index 96edcc0fdcd9..000000000000 --- a/arch/ia64/lib/swiotlb.c +++ /dev/null | |||
| @@ -1,759 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Dynamic DMA mapping support. | ||
| 3 | * | ||
| 4 | * This implementation is for IA-64 platforms that do not support | ||
| 5 | * I/O TLBs (aka DMA address translation hardware). | ||
| 6 | * Copyright (C) 2000 Asit Mallick <Asit.K.Mallick@intel.com> | ||
| 7 | * Copyright (C) 2000 Goutham Rao <goutham.rao@intel.com> | ||
| 8 | * Copyright (C) 2000, 2003 Hewlett-Packard Co | ||
| 9 | * David Mosberger-Tang <davidm@hpl.hp.com> | ||
| 10 | * | ||
| 11 | * 03/05/07 davidm Switch from PCI-DMA to generic device DMA API. | ||
| 12 | * 00/12/13 davidm Rename to swiotlb.c and add mark_clean() to avoid | ||
| 13 | * unnecessary i-cache flushing. | ||
| 14 | * 04/07/.. ak Better overflow handling. Assorted fixes. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include <linux/cache.h> | ||
| 18 | #include <linux/mm.h> | ||
| 19 | #include <linux/module.h> | ||
| 20 | #include <linux/pci.h> | ||
| 21 | #include <linux/spinlock.h> | ||
| 22 | #include <linux/string.h> | ||
| 23 | #include <linux/types.h> | ||
| 24 | #include <linux/ctype.h> | ||
| 25 | |||
| 26 | #include <asm/io.h> | ||
| 27 | #include <asm/pci.h> | ||
| 28 | #include <asm/dma.h> | ||
| 29 | |||
| 30 | #include <linux/init.h> | ||
| 31 | #include <linux/bootmem.h> | ||
| 32 | |||
| 33 | #define OFFSET(val,align) ((unsigned long) \ | ||
| 34 | ( (val) & ( (align) - 1))) | ||
| 35 | |||
| 36 | #define SG_ENT_VIRT_ADDRESS(sg) (page_address((sg)->page) + (sg)->offset) | ||
| 37 | #define SG_ENT_PHYS_ADDRESS(SG) virt_to_phys(SG_ENT_VIRT_ADDRESS(SG)) | ||
| 38 | |||
| 39 | /* | ||
| 40 | * Maximum allowable number of contiguous slabs to map, | ||
| 41 | * must be a power of 2. What is the appropriate value ? | ||
| 42 | * The complexity of {map,unmap}_single is linearly dependent on this value. | ||
| 43 | */ | ||
| 44 | #define IO_TLB_SEGSIZE 128 | ||
| 45 | |||
| 46 | /* | ||
| 47 | * log of the size of each IO TLB slab. The number of slabs is command line | ||
| 48 | * controllable. | ||
| 49 | */ | ||
| 50 | #define IO_TLB_SHIFT 11 | ||
| 51 | |||
| 52 | #define SLABS_PER_PAGE (1 << (PAGE_SHIFT - IO_TLB_SHIFT)) | ||
| 53 | |||
| 54 | /* | ||
| 55 | * Minimum IO TLB size to bother booting with. Systems with mainly | ||
| 56 | * 64bit capable cards will only lightly use the swiotlb. If we can't | ||
| 57 | * allocate a contiguous 1MB, we're probably in trouble anyway. | ||
| 58 | */ | ||
| 59 | #define IO_TLB_MIN_SLABS ((1<<20) >> IO_TLB_SHIFT) | ||
| 60 | |||
| 61 | int swiotlb_force; | ||
| 62 | |||
| 63 | /* | ||
| 64 | * Used to do a quick range check in swiotlb_unmap_single and | ||
| 65 | * swiotlb_sync_single_*, to see if the memory was in fact allocated by this | ||
| 66 | * API. | ||
| 67 | */ | ||
| 68 | static char *io_tlb_start, *io_tlb_end; | ||
| 69 | |||
| 70 | /* | ||
| 71 | * The number of IO TLB blocks (in groups of 64) betweeen io_tlb_start and | ||
| 72 | * io_tlb_end. This is command line adjustable via setup_io_tlb_npages. | ||
| 73 | */ | ||
| 74 | static unsigned long io_tlb_nslabs; | ||
| 75 | |||
| 76 | /* | ||
| 77 | * When the IOMMU overflows we return a fallback buffer. This sets the size. | ||
| 78 | */ | ||
| 79 | static unsigned long io_tlb_overflow = 32*1024; | ||
| 80 | |||
| 81 | void *io_tlb_overflow_buffer; | ||
| 82 | |||
| 83 | /* | ||
| 84 | * This is a free list describing the number of free entries available from | ||
| 85 | * each index | ||
| 86 | */ | ||
| 87 | static unsigned int *io_tlb_list; | ||
| 88 | static unsigned int io_tlb_index; | ||
| 89 | |||
| 90 | /* | ||
| 91 | * We need to save away the original address corresponding to a mapped entry | ||
| 92 | * for the sync operations. | ||
| 93 | */ | ||
| 94 | static unsigned char **io_tlb_orig_addr; | ||
| 95 | |||
| 96 | /* | ||
| 97 | * Protect the above data structures in the map and unmap calls | ||
| 98 | */ | ||
| 99 | static DEFINE_SPINLOCK(io_tlb_lock); | ||
| 100 | |||
| 101 | static int __init | ||
| 102 | setup_io_tlb_npages(char *str) | ||
| 103 | { | ||
| 104 | if (isdigit(*str)) { | ||
| 105 | io_tlb_nslabs = simple_strtoul(str, &str, 0); | ||
| 106 | /* avoid tail segment of size < IO_TLB_SEGSIZE */ | ||
| 107 | io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE); | ||
| 108 | } | ||
| 109 | if (*str == ',') | ||
| 110 | ++str; | ||
| 111 | if (!strcmp(str, "force")) | ||
| 112 | swiotlb_force = 1; | ||
| 113 | return 1; | ||
| 114 | } | ||
| 115 | __setup("swiotlb=", setup_io_tlb_npages); | ||
| 116 | /* make io_tlb_overflow tunable too? */ | ||
| 117 | |||
| 118 | /* | ||
| 119 | * Statically reserve bounce buffer space and initialize bounce buffer data | ||
| 120 | * structures for the software IO TLB used to implement the PCI DMA API. | ||
| 121 | */ | ||
| 122 | void | ||
| 123 | swiotlb_init_with_default_size (size_t default_size) | ||
| 124 | { | ||
| 125 | unsigned long i; | ||
| 126 | |||
| 127 | if (!io_tlb_nslabs) { | ||
| 128 | io_tlb_nslabs = (default_size >> IO_TLB_SHIFT); | ||
| 129 | io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE); | ||
| 130 | } | ||
| 131 | |||
| 132 | /* | ||
| 133 | * Get IO TLB memory from the low pages | ||
| 134 | */ | ||
| 135 | io_tlb_start = alloc_bootmem_low_pages_limit(io_tlb_nslabs * | ||
| 136 | (1 << IO_TLB_SHIFT), 0x100000000); | ||
| 137 | if (!io_tlb_start) | ||
| 138 | panic("Cannot allocate SWIOTLB buffer"); | ||
| 139 | io_tlb_end = io_tlb_start + io_tlb_nslabs * (1 << IO_TLB_SHIFT); | ||
| 140 | |||
| 141 | /* | ||
| 142 | * Allocate and initialize the free list array. This array is used | ||
| 143 | * to find contiguous free memory regions of size up to IO_TLB_SEGSIZE | ||
| 144 | * between io_tlb_start and io_tlb_end. | ||
| 145 | */ | ||
| 146 | io_tlb_list = alloc_bootmem(io_tlb_nslabs * sizeof(int)); | ||
| 147 | for (i = 0; i < io_tlb_nslabs; i++) | ||
| 148 | io_tlb_list[i] = IO_TLB_SEGSIZE - OFFSET(i, IO_TLB_SEGSIZE); | ||
| 149 | io_tlb_index = 0; | ||
| 150 | io_tlb_orig_addr = alloc_bootmem(io_tlb_nslabs * sizeof(char *)); | ||
| 151 | |||
| 152 | /* | ||
| 153 | * Get the overflow emergency buffer | ||
| 154 | */ | ||
| 155 | io_tlb_overflow_buffer = alloc_bootmem_low(io_tlb_overflow); | ||
| 156 | printk(KERN_INFO "Placing software IO TLB between 0x%lx - 0x%lx\n", | ||
| 157 | virt_to_phys(io_tlb_start), virt_to_phys(io_tlb_end)); | ||
| 158 | } | ||
| 159 | |||
| 160 | void | ||
| 161 | swiotlb_init (void) | ||
| 162 | { | ||
| 163 | swiotlb_init_with_default_size(64 * (1<<20)); /* default to 64MB */ | ||
| 164 | } | ||
| 165 | |||
| 166 | /* | ||
| 167 | * Systems with larger DMA zones (those that don't support ISA) can | ||
| 168 | * initialize the swiotlb later using the slab allocator if needed. | ||
| 169 | * This should be just like above, but with some error catching. | ||
| 170 | */ | ||
| 171 | int | ||
| 172 | swiotlb_late_init_with_default_size (size_t default_size) | ||
| 173 | { | ||
| 174 | unsigned long i, req_nslabs = io_tlb_nslabs; | ||
| 175 | unsigned int order; | ||
| 176 | |||
| 177 | if (!io_tlb_nslabs) { | ||
| 178 | io_tlb_nslabs = (default_size >> IO_TLB_SHIFT); | ||
| 179 | io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE); | ||
| 180 | } | ||
| 181 | |||
| 182 | /* | ||
| 183 | * Get IO TLB memory from the low pages | ||
| 184 | */ | ||
| 185 | order = get_order(io_tlb_nslabs * (1 << IO_TLB_SHIFT)); | ||
| 186 | io_tlb_nslabs = SLABS_PER_PAGE << order; | ||
| 187 | |||
| 188 | while ((SLABS_PER_PAGE << order) > IO_TLB_MIN_SLABS) { | ||
| 189 | io_tlb_start = (char *)__get_free_pages(GFP_DMA | __GFP_NOWARN, | ||
| 190 | order); | ||
| 191 | if (io_tlb_start) | ||
| 192 | break; | ||
| 193 | order--; | ||
| 194 | } | ||
| 195 | |||
| 196 | if (!io_tlb_start) | ||
| 197 | goto cleanup1; | ||
| 198 | |||
| 199 | if (order != get_order(io_tlb_nslabs * (1 << IO_TLB_SHIFT))) { | ||
| 200 | printk(KERN_WARNING "Warning: only able to allocate %ld MB " | ||
| 201 | "for software IO TLB\n", (PAGE_SIZE << order) >> 20); | ||
| 202 | io_tlb_nslabs = SLABS_PER_PAGE << order; | ||
| 203 | } | ||
| 204 | io_tlb_end = io_tlb_start + io_tlb_nslabs * (1 << IO_TLB_SHIFT); | ||
| 205 | memset(io_tlb_start, 0, io_tlb_nslabs * (1 << IO_TLB_SHIFT)); | ||
| 206 | |||
| 207 | /* | ||
| 208 | * Allocate and initialize the free list array. This array is used | ||
| 209 | * to find contiguous free memory regions of size up to IO_TLB_SEGSIZE | ||
| 210 | * between io_tlb_start and io_tlb_end. | ||
| 211 | */ | ||
| 212 | io_tlb_list = (unsigned int *)__get_free_pages(GFP_KERNEL, | ||
| 213 | get_order(io_tlb_nslabs * sizeof(int))); | ||
| 214 | if (!io_tlb_list) | ||
| 215 | goto cleanup2; | ||
| 216 | |||
| 217 | for (i = 0; i < io_tlb_nslabs; i++) | ||
| 218 | io_tlb_list[i] = IO_TLB_SEGSIZE - OFFSET(i, IO_TLB_SEGSIZE); | ||
| 219 | io_tlb_index = 0; | ||
| 220 | |||
| 221 | io_tlb_orig_addr = (unsigned char **)__get_free_pages(GFP_KERNEL, | ||
| 222 | get_order(io_tlb_nslabs * sizeof(char *))); | ||
| 223 | if (!io_tlb_orig_addr) | ||
| 224 | goto cleanup3; | ||
| 225 | |||
| 226 | memset(io_tlb_orig_addr, 0, io_tlb_nslabs * sizeof(char *)); | ||
| 227 | |||
| 228 | /* | ||
| 229 | * Get the overflow emergency buffer | ||
| 230 | */ | ||
| 231 | io_tlb_overflow_buffer = (void *)__get_free_pages(GFP_DMA, | ||
| 232 | get_order(io_tlb_overflow)); | ||
| 233 | if (!io_tlb_overflow_buffer) | ||
| 234 | goto cleanup4; | ||
| 235 | |||
| 236 | printk(KERN_INFO "Placing %ldMB software IO TLB between 0x%lx - " | ||
| 237 | "0x%lx\n", (io_tlb_nslabs * (1 << IO_TLB_SHIFT)) >> 20, | ||
| 238 | virt_to_phys(io_tlb_start), virt_to_phys(io_tlb_end)); | ||
| 239 | |||
| 240 | return 0; | ||
| 241 | |||
| 242 | cleanup4: | ||
| 243 | free_pages((unsigned long)io_tlb_orig_addr, get_order(io_tlb_nslabs * | ||
| 244 | sizeof(char *))); | ||
| 245 | io_tlb_orig_addr = NULL; | ||
| 246 | cleanup3: | ||
| 247 | free_pages((unsigned long)io_tlb_list, get_order(io_tlb_nslabs * | ||
| 248 | sizeof(int))); | ||
| 249 | io_tlb_list = NULL; | ||
| 250 | io_tlb_end = NULL; | ||
| 251 | cleanup2: | ||
| 252 | free_pages((unsigned long)io_tlb_start, order); | ||
| 253 | io_tlb_start = NULL; | ||
| 254 | cleanup1: | ||
| 255 | io_tlb_nslabs = req_nslabs; | ||
| 256 | return -ENOMEM; | ||
| 257 | } | ||
| 258 | |||
| 259 | static inline int | ||
| 260 | address_needs_mapping(struct device *hwdev, dma_addr_t addr) | ||
| 261 | { | ||
| 262 | dma_addr_t mask = 0xffffffff; | ||
| 263 | /* If the device has a mask, use it, otherwise default to 32 bits */ | ||
| 264 | if (hwdev && hwdev->dma_mask) | ||
| 265 | mask = *hwdev->dma_mask; | ||
| 266 | return (addr & ~mask) != 0; | ||
| 267 | } | ||
| 268 | |||
| 269 | /* | ||
| 270 | * Allocates bounce buffer and returns its kernel virtual address. | ||
| 271 | */ | ||
| 272 | static void * | ||
| 273 | map_single(struct device *hwdev, char *buffer, size_t size, int dir) | ||
| 274 | { | ||
| 275 | unsigned long flags; | ||
| 276 | char *dma_addr; | ||
| 277 | unsigned int nslots, stride, index, wrap; | ||
| 278 | int i; | ||
| 279 | |||
| 280 | /* | ||
| 281 | * For mappings greater than a page, we limit the stride (and | ||
| 282 | * hence alignment) to a page size. | ||
| 283 | */ | ||
| 284 | nslots = ALIGN(size, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT; | ||
| 285 | if (size > PAGE_SIZE) | ||
| 286 | stride = (1 << (PAGE_SHIFT - IO_TLB_SHIFT)); | ||
| 287 | else | ||
| 288 | stride = 1; | ||
| 289 | |||
| 290 | if (!nslots) | ||
| 291 | BUG(); | ||
| 292 | |||
| 293 | /* | ||
| 294 | * Find suitable number of IO TLB entries size that will fit this | ||
| 295 | * request and allocate a buffer from that IO TLB pool. | ||
| 296 | */ | ||
| 297 | spin_lock_irqsave(&io_tlb_lock, flags); | ||
| 298 | { | ||
| 299 | wrap = index = ALIGN(io_tlb_index, stride); | ||
| 300 | |||
| 301 | if (index >= io_tlb_nslabs) | ||
| 302 | wrap = index = 0; | ||
| 303 | |||
| 304 | do { | ||
| 305 | /* | ||
| 306 | * If we find a slot that indicates we have 'nslots' | ||
| 307 | * number of contiguous buffers, we allocate the | ||
| 308 | * buffers from that slot and mark the entries as '0' | ||
| 309 | * indicating unavailable. | ||
| 310 | */ | ||
| 311 | if (io_tlb_list[index] >= nslots) { | ||
| 312 | int count = 0; | ||
| 313 | |||
| 314 | for (i = index; i < (int) (index + nslots); i++) | ||
| 315 | io_tlb_list[i] = 0; | ||
| 316 | for (i = index - 1; (OFFSET(i, IO_TLB_SEGSIZE) != IO_TLB_SEGSIZE -1) && io_tlb_list[i]; i--) | ||
| 317 | io_tlb_list[i] = ++count; | ||
| 318 | dma_addr = io_tlb_start + (index << IO_TLB_SHIFT); | ||
| 319 | |||
| 320 | /* | ||
| 321 | * Update the indices to avoid searching in | ||
| 322 | * the next round. | ||
| 323 | */ | ||
| 324 | io_tlb_index = ((index + nslots) < io_tlb_nslabs | ||
| 325 | ? (index + nslots) : 0); | ||
| 326 | |||
| 327 | goto found; | ||
| 328 | } | ||
| 329 | index += stride; | ||
| 330 | if (index >= io_tlb_nslabs) | ||
| 331 | index = 0; | ||
| 332 | } while (index != wrap); | ||
| 333 | |||
| 334 | spin_unlock_irqrestore(&io_tlb_lock, flags); | ||
| 335 | return NULL; | ||
| 336 | } | ||
| 337 | found: | ||
| 338 | spin_unlock_irqrestore(&io_tlb_lock, flags); | ||
| 339 | |||
| 340 | /* | ||
| 341 | * Save away the mapping from the original address to the DMA address. | ||
| 342 | * This is needed when we sync the memory. Then we sync the buffer if | ||
| 343 | * needed. | ||
| 344 | */ | ||
| 345 | io_tlb_orig_addr[index] = buffer; | ||
| 346 | if (dir == DMA_TO_DEVICE || dir == DMA_BIDIRECTIONAL) | ||
| 347 | memcpy(dma_addr, buffer, size); | ||
| 348 | |||
| 349 | return dma_addr; | ||
| 350 | } | ||
| 351 | |||
| 352 | /* | ||
| 353 | * dma_addr is the kernel virtual address of the bounce buffer to unmap. | ||
| 354 | */ | ||
| 355 | static void | ||
| 356 | unmap_single(struct device *hwdev, char *dma_addr, size_t size, int dir) | ||
| 357 | { | ||
| 358 | unsigned long flags; | ||
| 359 | int i, count, nslots = ALIGN(size, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT; | ||
| 360 | int index = (dma_addr - io_tlb_start) >> IO_TLB_SHIFT; | ||
| 361 | char *buffer = io_tlb_orig_addr[index]; | ||
| 362 | |||
| 363 | /* | ||
| 364 | * First, sync the memory before unmapping the entry | ||
| 365 | */ | ||
| 366 | if (buffer && ((dir == DMA_FROM_DEVICE) || (dir == DMA_BIDIRECTIONAL))) | ||
| 367 | /* | ||
| 368 | * bounce... copy the data back into the original buffer * and | ||
| 369 | * delete the bounce buffer. | ||
| 370 | */ | ||
| 371 | memcpy(buffer, dma_addr, size); | ||
| 372 | |||
| 373 | /* | ||
| 374 | * Return the buffer to the free list by setting the corresponding | ||
| 375 | * entries to indicate the number of contigous entries available. | ||
| 376 | * While returning the entries to the free list, we merge the entries | ||
| 377 | * with slots below and above the pool being returned. | ||
| 378 | */ | ||
| 379 | spin_lock_irqsave(&io_tlb_lock, flags); | ||
| 380 | { | ||
| 381 | count = ((index + nslots) < ALIGN(index + 1, IO_TLB_SEGSIZE) ? | ||
| 382 | io_tlb_list[index + nslots] : 0); | ||
| 383 | /* | ||
| 384 | * Step 1: return the slots to the free list, merging the | ||
| 385 | * slots with superceeding slots | ||
| 386 | */ | ||
| 387 | for (i = index + nslots - 1; i >= index; i--) | ||
| 388 | io_tlb_list[i] = ++count; | ||
| 389 | /* | ||
| 390 | * Step 2: merge the returned slots with the preceding slots, | ||
| 391 | * if available (non zero) | ||
| 392 | */ | ||
| 393 | for (i = index - 1; (OFFSET(i, IO_TLB_SEGSIZE) != IO_TLB_SEGSIZE -1) && io_tlb_list[i]; i--) | ||
| 394 | io_tlb_list[i] = ++count; | ||
| 395 | } | ||
| 396 | spin_unlock_irqrestore(&io_tlb_lock, flags); | ||
| 397 | } | ||
| 398 | |||
| 399 | static void | ||
| 400 | sync_single(struct device *hwdev, char *dma_addr, size_t size, int dir) | ||
| 401 | { | ||
| 402 | int index = (dma_addr - io_tlb_start) >> IO_TLB_SHIFT; | ||
| 403 | char *buffer = io_tlb_orig_addr[index]; | ||
| 404 | |||
| 405 | /* | ||
| 406 | * bounce... copy the data back into/from the original buffer | ||
| 407 | * XXX How do you handle DMA_BIDIRECTIONAL here ? | ||
| 408 | */ | ||
| 409 | if (dir == DMA_FROM_DEVICE) | ||
| 410 | memcpy(buffer, dma_addr, size); | ||
| 411 | else if (dir == DMA_TO_DEVICE) | ||
| 412 | memcpy(dma_addr, buffer, size); | ||
| 413 | else | ||
| 414 | BUG(); | ||
| 415 | } | ||
| 416 | |||
| 417 | void * | ||
| 418 | swiotlb_alloc_coherent(struct device *hwdev, size_t size, | ||
| 419 | dma_addr_t *dma_handle, gfp_t flags) | ||
| 420 | { | ||
| 421 | unsigned long dev_addr; | ||
| 422 | void *ret; | ||
| 423 | int order = get_order(size); | ||
| 424 | |||
| 425 | /* | ||
| 426 | * XXX fix me: the DMA API should pass us an explicit DMA mask | ||
| 427 | * instead, or use ZONE_DMA32 (ia64 overloads ZONE_DMA to be a ~32 | ||
| 428 | * bit range instead of a 16MB one). | ||
| 429 | */ | ||
| 430 | flags |= GFP_DMA; | ||
| 431 | |||
| 432 | ret = (void *)__get_free_pages(flags, order); | ||
| 433 | if (ret && address_needs_mapping(hwdev, virt_to_phys(ret))) { | ||
| 434 | /* | ||
| 435 | * The allocated memory isn't reachable by the device. | ||
| 436 | * Fall back on swiotlb_map_single(). | ||
| 437 | */ | ||
| 438 | free_pages((unsigned long) ret, order); | ||
| 439 | ret = NULL; | ||
| 440 | } | ||
| 441 | if (!ret) { | ||
| 442 | /* | ||
| 443 | * We are either out of memory or the device can't DMA | ||
| 444 | * to GFP_DMA memory; fall back on | ||
| 445 | * swiotlb_map_single(), which will grab memory from | ||
| 446 | * the lowest available address range. | ||
| 447 | */ | ||
| 448 | dma_addr_t handle; | ||
| 449 | handle = swiotlb_map_single(NULL, NULL, size, DMA_FROM_DEVICE); | ||
| 450 | if (dma_mapping_error(handle)) | ||
| 451 | return NULL; | ||
| 452 | |||
| 453 | ret = phys_to_virt(handle); | ||
| 454 | } | ||
| 455 | |||
| 456 | memset(ret, 0, size); | ||
| 457 | dev_addr = virt_to_phys(ret); | ||
| 458 | |||
| 459 | /* Confirm address can be DMA'd by device */ | ||
| 460 | if (address_needs_mapping(hwdev, dev_addr)) { | ||
| 461 | printk("hwdev DMA mask = 0x%016Lx, dev_addr = 0x%016lx\n", | ||
| 462 | (unsigned long long)*hwdev->dma_mask, dev_addr); | ||
| 463 | panic("swiotlb_alloc_coherent: allocated memory is out of " | ||
| 464 | "range for device"); | ||
| 465 | } | ||
| 466 | *dma_handle = dev_addr; | ||
| 467 | return ret; | ||
| 468 | } | ||
| 469 | |||
| 470 | void | ||
| 471 | swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr, | ||
| 472 | dma_addr_t dma_handle) | ||
| 473 | { | ||
| 474 | if (!(vaddr >= (void *)io_tlb_start | ||
| 475 | && vaddr < (void *)io_tlb_end)) | ||
| 476 | free_pages((unsigned long) vaddr, get_order(size)); | ||
| 477 | else | ||
| 478 | /* DMA_TO_DEVICE to avoid memcpy in unmap_single */ | ||
| 479 | swiotlb_unmap_single (hwdev, dma_handle, size, DMA_TO_DEVICE); | ||
| 480 | } | ||
| 481 | |||
| 482 | static void | ||
| 483 | swiotlb_full(struct device *dev, size_t size, int dir, int do_panic) | ||
| 484 | { | ||
| 485 | /* | ||
| 486 | * Ran out of IOMMU space for this operation. This is very bad. | ||
| 487 | * Unfortunately the drivers cannot handle this operation properly. | ||
| 488 | * unless they check for pci_dma_mapping_error (most don't) | ||
| 489 | * When the mapping is small enough return a static buffer to limit | ||
| 490 | * the damage, or panic when the transfer is too big. | ||
| 491 | */ | ||
| 492 | printk(KERN_ERR "PCI-DMA: Out of SW-IOMMU space for %lu bytes at " | ||
| 493 | "device %s\n", size, dev ? dev->bus_id : "?"); | ||
| 494 | |||
| 495 | if (size > io_tlb_overflow && do_panic) { | ||
| 496 | if (dir == PCI_DMA_FROMDEVICE || dir == PCI_DMA_BIDIRECTIONAL) | ||
| 497 | panic("PCI-DMA: Memory would be corrupted\n"); | ||
| 498 | if (dir == PCI_DMA_TODEVICE || dir == PCI_DMA_BIDIRECTIONAL) | ||
| 499 | panic("PCI-DMA: Random memory would be DMAed\n"); | ||
| 500 | } | ||
| 501 | } | ||
| 502 | |||
| 503 | /* | ||
| 504 | * Map a single buffer of the indicated size for DMA in streaming mode. The | ||
| 505 | * PCI address to use is returned. | ||
| 506 | * | ||
| 507 | * Once the device is given the dma address, the device owns this memory until | ||
| 508 | * either swiotlb_unmap_single or swiotlb_dma_sync_single is performed. | ||
| 509 | */ | ||
| 510 | dma_addr_t | ||
| 511 | swiotlb_map_single(struct device *hwdev, void *ptr, size_t size, int dir) | ||
| 512 | { | ||
| 513 | unsigned long dev_addr = virt_to_phys(ptr); | ||
| 514 | void *map; | ||
| 515 | |||
| 516 | if (dir == DMA_NONE) | ||
| 517 | BUG(); | ||
| 518 | /* | ||
| 519 | * If the pointer passed in happens to be in the device's DMA window, | ||
| 520 | * we can safely return the device addr and not worry about bounce | ||
| 521 | * buffering it. | ||
| 522 | */ | ||
| 523 | if (!address_needs_mapping(hwdev, dev_addr) && !swiotlb_force) | ||
| 524 | return dev_addr; | ||
| 525 | |||
| 526 | /* | ||
| 527 | * Oh well, have to allocate and map a bounce buffer. | ||
| 528 | */ | ||
| 529 | map = map_single(hwdev, ptr, size, dir); | ||
| 530 | if (!map) { | ||
| 531 | swiotlb_full(hwdev, size, dir, 1); | ||
| 532 | map = io_tlb_overflow_buffer; | ||
| 533 | } | ||
| 534 | |||
| 535 | dev_addr = virt_to_phys(map); | ||
| 536 | |||
| 537 | /* | ||
| 538 | * Ensure that the address returned is DMA'ble | ||
| 539 | */ | ||
| 540 | if (address_needs_mapping(hwdev, dev_addr)) | ||
| 541 | panic("map_single: bounce buffer is not DMA'ble"); | ||
| 542 | |||
| 543 | return dev_addr; | ||
| 544 | } | ||
| 545 | |||
| 546 | /* | ||
| 547 | * Since DMA is i-cache coherent, any (complete) pages that were written via | ||
| 548 | * DMA can be marked as "clean" so that lazy_mmu_prot_update() doesn't have to | ||
| 549 | * flush them when they get mapped into an executable vm-area. | ||
| 550 | */ | ||
| 551 | static void | ||
| 552 | mark_clean(void *addr, size_t size) | ||
| 553 | { | ||
| 554 | unsigned long pg_addr, end; | ||
| 555 | |||
| 556 | pg_addr = PAGE_ALIGN((unsigned long) addr); | ||
| 557 | end = (unsigned long) addr + size; | ||
| 558 | while (pg_addr + PAGE_SIZE <= end) { | ||
| 559 | struct page *page = virt_to_page(pg_addr); | ||
| 560 | set_bit(PG_arch_1, &page->flags); | ||
| 561 | pg_addr += PAGE_SIZE; | ||
| 562 | } | ||
| 563 | } | ||
| 564 | |||
| 565 | /* | ||
| 566 | * Unmap a single streaming mode DMA translation. The dma_addr and size must | ||
| 567 | * match what was provided for in a previous swiotlb_map_single call. All | ||
| 568 | * other usages are undefined. | ||
| 569 | * | ||
| 570 | * After this call, reads by the cpu to the buffer are guaranteed to see | ||
| 571 | * whatever the device wrote there. | ||
| 572 | */ | ||
| 573 | void | ||
| 574 | swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr, size_t size, | ||
| 575 | int dir) | ||
| 576 | { | ||
| 577 | char *dma_addr = phys_to_virt(dev_addr); | ||
| 578 | |||
| 579 | if (dir == DMA_NONE) | ||
| 580 | BUG(); | ||
| 581 | if (dma_addr >= io_tlb_start && dma_addr < io_tlb_end) | ||
| 582 | unmap_single(hwdev, dma_addr, size, dir); | ||
| 583 | else if (dir == DMA_FROM_DEVICE) | ||
| 584 | mark_clean(dma_addr, size); | ||
| 585 | } | ||
| 586 | |||
| 587 | /* | ||
| 588 | * Make physical memory consistent for a single streaming mode DMA translation | ||
| 589 | * after a transfer. | ||
| 590 | * | ||
| 591 | * If you perform a swiotlb_map_single() but wish to interrogate the buffer | ||
| 592 | * using the cpu, yet do not wish to teardown the PCI dma mapping, you must | ||
| 593 | * call this function before doing so. At the next point you give the PCI dma | ||
| 594 | * address back to the card, you must first perform a | ||
| 595 | * swiotlb_dma_sync_for_device, and then the device again owns the buffer | ||
| 596 | */ | ||
| 597 | void | ||
| 598 | swiotlb_sync_single_for_cpu(struct device *hwdev, dma_addr_t dev_addr, | ||
| 599 | size_t size, int dir) | ||
| 600 | { | ||
| 601 | char *dma_addr = phys_to_virt(dev_addr); | ||
| 602 | |||
| 603 | if (dir == DMA_NONE) | ||
| 604 | BUG(); | ||
| 605 | if (dma_addr >= io_tlb_start && dma_addr < io_tlb_end) | ||
| 606 | sync_single(hwdev, dma_addr, size, dir); | ||
| 607 | else if (dir == DMA_FROM_DEVICE) | ||
| 608 | mark_clean(dma_addr, size); | ||
| 609 | } | ||
| 610 | |||
| 611 | void | ||
| 612 | swiotlb_sync_single_for_device(struct device *hwdev, dma_addr_t dev_addr, | ||
| 613 | size_t size, int dir) | ||
| 614 | { | ||
| 615 | char *dma_addr = phys_to_virt(dev_addr); | ||
| 616 | |||
| 617 | if (dir == DMA_NONE) | ||
| 618 | BUG(); | ||
| 619 | if (dma_addr >= io_tlb_start && dma_addr < io_tlb_end) | ||
| 620 | sync_single(hwdev, dma_addr, size, dir); | ||
| 621 | else if (dir == DMA_FROM_DEVICE) | ||
| 622 | mark_clean(dma_addr, size); | ||
| 623 | } | ||
| 624 | |||
| 625 | /* | ||
| 626 | * Map a set of buffers described by scatterlist in streaming mode for DMA. | ||
| 627 | * This is the scatter-gather version of the above swiotlb_map_single | ||
| 628 | * interface. Here the scatter gather list elements are each tagged with the | ||
| 629 | * appropriate dma address and length. They are obtained via | ||
| 630 | * sg_dma_{address,length}(SG). | ||
| 631 | * | ||
| 632 | * NOTE: An implementation may be able to use a smaller number of | ||
| 633 | * DMA address/length pairs than there are SG table elements. | ||
| 634 | * (for example via virtual mapping capabilities) | ||
| 635 | * The routine returns the number of addr/length pairs actually | ||
| 636 | * used, at most nents. | ||
| 637 | * | ||
| 638 | * Device ownership issues as mentioned above for swiotlb_map_single are the | ||
| 639 | * same here. | ||
| 640 | */ | ||
| 641 | int | ||
| 642 | swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, int nelems, | ||
| 643 | int dir) | ||
| 644 | { | ||
| 645 | void *addr; | ||
| 646 | unsigned long dev_addr; | ||
| 647 | int i; | ||
| 648 | |||
| 649 | if (dir == DMA_NONE) | ||
| 650 | BUG(); | ||
| 651 | |||
| 652 | for (i = 0; i < nelems; i++, sg++) { | ||
| 653 | addr = SG_ENT_VIRT_ADDRESS(sg); | ||
| 654 | dev_addr = virt_to_phys(addr); | ||
| 655 | if (swiotlb_force || address_needs_mapping(hwdev, dev_addr)) { | ||
| 656 | sg->dma_address = (dma_addr_t) virt_to_phys(map_single(hwdev, addr, sg->length, dir)); | ||
| 657 | if (!sg->dma_address) { | ||
| 658 | /* Don't panic here, we expect map_sg users | ||
| 659 | to do proper error handling. */ | ||
| 660 | swiotlb_full(hwdev, sg->length, dir, 0); | ||
| 661 | swiotlb_unmap_sg(hwdev, sg - i, i, dir); | ||
| 662 | sg[0].dma_length = 0; | ||
| 663 | return 0; | ||
| 664 | } | ||
| 665 | } else | ||
| 666 | sg->dma_address = dev_addr; | ||
| 667 | sg->dma_length = sg->length; | ||
| 668 | } | ||
| 669 | return nelems; | ||
| 670 | } | ||
| 671 | |||
| 672 | /* | ||
| 673 | * Unmap a set of streaming mode DMA translations. Again, cpu read rules | ||
| 674 | * concerning calls here are the same as for swiotlb_unmap_single() above. | ||
| 675 | */ | ||
| 676 | void | ||
| 677 | swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nelems, | ||
| 678 | int dir) | ||
| 679 | { | ||
| 680 | int i; | ||
| 681 | |||
| 682 | if (dir == DMA_NONE) | ||
| 683 | BUG(); | ||
| 684 | |||
| 685 | for (i = 0; i < nelems; i++, sg++) | ||
| 686 | if (sg->dma_address != SG_ENT_PHYS_ADDRESS(sg)) | ||
| 687 | unmap_single(hwdev, (void *) phys_to_virt(sg->dma_address), sg->dma_length, dir); | ||
| 688 | else if (dir == DMA_FROM_DEVICE) | ||
| 689 | mark_clean(SG_ENT_VIRT_ADDRESS(sg), sg->dma_length); | ||
| 690 | } | ||
| 691 | |||
| 692 | /* | ||
| 693 | * Make physical memory consistent for a set of streaming mode DMA translations | ||
| 694 | * after a transfer. | ||
| 695 | * | ||
| 696 | * The same as swiotlb_sync_single_* but for a scatter-gather list, same rules | ||
| 697 | * and usage. | ||
| 698 | */ | ||
| 699 | void | ||
| 700 | swiotlb_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, | ||
| 701 | int nelems, int dir) | ||
| 702 | { | ||
| 703 | int i; | ||
| 704 | |||
| 705 | if (dir == DMA_NONE) | ||
| 706 | BUG(); | ||
| 707 | |||
| 708 | for (i = 0; i < nelems; i++, sg++) | ||
| 709 | if (sg->dma_address != SG_ENT_PHYS_ADDRESS(sg)) | ||
| 710 | sync_single(hwdev, (void *) sg->dma_address, | ||
| 711 | sg->dma_length, dir); | ||
| 712 | } | ||
| 713 | |||
| 714 | void | ||
| 715 | swiotlb_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, | ||
| 716 | int nelems, int dir) | ||
| 717 | { | ||
| 718 | int i; | ||
| 719 | |||
| 720 | if (dir == DMA_NONE) | ||
| 721 | BUG(); | ||
| 722 | |||
| 723 | for (i = 0; i < nelems; i++, sg++) | ||
| 724 | if (sg->dma_address != SG_ENT_PHYS_ADDRESS(sg)) | ||
| 725 | sync_single(hwdev, (void *) sg->dma_address, | ||
| 726 | sg->dma_length, dir); | ||
| 727 | } | ||
| 728 | |||
| 729 | int | ||
| 730 | swiotlb_dma_mapping_error(dma_addr_t dma_addr) | ||
| 731 | { | ||
| 732 | return (dma_addr == virt_to_phys(io_tlb_overflow_buffer)); | ||
| 733 | } | ||
| 734 | |||
| 735 | /* | ||
| 736 | * Return whether the given PCI device DMA address mask can be supported | ||
| 737 | * properly. For example, if your device can only drive the low 24-bits | ||
| 738 | * during PCI bus mastering, then you would pass 0x00ffffff as the mask to | ||
| 739 | * this function. | ||
| 740 | */ | ||
| 741 | int | ||
| 742 | swiotlb_dma_supported (struct device *hwdev, u64 mask) | ||
| 743 | { | ||
| 744 | return (virt_to_phys (io_tlb_end) - 1) <= mask; | ||
| 745 | } | ||
| 746 | |||
| 747 | EXPORT_SYMBOL(swiotlb_init); | ||
| 748 | EXPORT_SYMBOL(swiotlb_map_single); | ||
| 749 | EXPORT_SYMBOL(swiotlb_unmap_single); | ||
| 750 | EXPORT_SYMBOL(swiotlb_map_sg); | ||
| 751 | EXPORT_SYMBOL(swiotlb_unmap_sg); | ||
| 752 | EXPORT_SYMBOL(swiotlb_sync_single_for_cpu); | ||
| 753 | EXPORT_SYMBOL(swiotlb_sync_single_for_device); | ||
| 754 | EXPORT_SYMBOL(swiotlb_sync_sg_for_cpu); | ||
| 755 | EXPORT_SYMBOL(swiotlb_sync_sg_for_device); | ||
| 756 | EXPORT_SYMBOL(swiotlb_dma_mapping_error); | ||
| 757 | EXPORT_SYMBOL(swiotlb_alloc_coherent); | ||
| 758 | EXPORT_SYMBOL(swiotlb_free_coherent); | ||
| 759 | EXPORT_SYMBOL(swiotlb_dma_supported); | ||
diff --git a/arch/m32r/kernel/setup_m32700ut.c b/arch/m32r/kernel/setup_m32700ut.c index 708634b685e4..cb76916b014d 100644 --- a/arch/m32r/kernel/setup_m32700ut.c +++ b/arch/m32r/kernel/setup_m32700ut.c | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | #include <linux/irq.h> | 15 | #include <linux/irq.h> |
| 16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
| 17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
| 18 | #include <linux/device.h> | 18 | #include <linux/platform_device.h> |
| 19 | 19 | ||
| 20 | #include <asm/system.h> | 20 | #include <asm/system.h> |
| 21 | #include <asm/m32r.h> | 21 | #include <asm/m32r.h> |
diff --git a/arch/m32r/kernel/setup_mappi.c b/arch/m32r/kernel/setup_mappi.c index 4e709809efc5..501d798cf050 100644 --- a/arch/m32r/kernel/setup_mappi.c +++ b/arch/m32r/kernel/setup_mappi.c | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #include <linux/irq.h> | 11 | #include <linux/irq.h> |
| 12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
| 13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| 14 | #include <linux/device.h> | 14 | #include <linux/platform_device.h> |
| 15 | 15 | ||
| 16 | #include <asm/system.h> | 16 | #include <asm/system.h> |
| 17 | #include <asm/m32r.h> | 17 | #include <asm/m32r.h> |
diff --git a/arch/m32r/kernel/setup_mappi2.c b/arch/m32r/kernel/setup_mappi2.c index a1d801598aa4..7f2db5bfd626 100644 --- a/arch/m32r/kernel/setup_mappi2.c +++ b/arch/m32r/kernel/setup_mappi2.c | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #include <linux/irq.h> | 11 | #include <linux/irq.h> |
| 12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
| 13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| 14 | #include <linux/device.h> | 14 | #include <linux/platform_device.h> |
| 15 | 15 | ||
| 16 | #include <asm/system.h> | 16 | #include <asm/system.h> |
| 17 | #include <asm/m32r.h> | 17 | #include <asm/m32r.h> |
diff --git a/arch/m32r/kernel/setup_mappi3.c b/arch/m32r/kernel/setup_mappi3.c index a76412e883e8..9c79341a7b45 100644 --- a/arch/m32r/kernel/setup_mappi3.c +++ b/arch/m32r/kernel/setup_mappi3.c | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #include <linux/irq.h> | 11 | #include <linux/irq.h> |
| 12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
| 13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| 14 | #include <linux/device.h> | 14 | #include <linux/platform_device.h> |
| 15 | 15 | ||
| 16 | #include <asm/system.h> | 16 | #include <asm/system.h> |
| 17 | #include <asm/m32r.h> | 17 | #include <asm/m32r.h> |
diff --git a/arch/m32r/kernel/setup_opsput.c b/arch/m32r/kernel/setup_opsput.c index d7b7ec6d30f8..1fbb140854e7 100644 --- a/arch/m32r/kernel/setup_opsput.c +++ b/arch/m32r/kernel/setup_opsput.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
| 17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
| 18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
| 19 | #include <linux/device.h> | 19 | #include <linux/platform_device.h> |
| 20 | 20 | ||
| 21 | #include <asm/system.h> | 21 | #include <asm/system.h> |
| 22 | #include <asm/m32r.h> | 22 | #include <asm/m32r.h> |
diff --git a/arch/m68knommu/defconfig b/arch/m68knommu/defconfig index 87f2d6587c56..2d59ba1a79ba 100644 --- a/arch/m68knommu/defconfig +++ b/arch/m68knommu/defconfig | |||
| @@ -99,7 +99,7 @@ CONFIG_M5272C3=y | |||
| 99 | # CONFIG_NETtel is not set | 99 | # CONFIG_NETtel is not set |
| 100 | # CONFIG_CPU16B is not set | 100 | # CONFIG_CPU16B is not set |
| 101 | # CONFIG_MOD5272 is not set | 101 | # CONFIG_MOD5272 is not set |
| 102 | CONFIG_MOTOROLA=y | 102 | CONFIG_FREESCALE=y |
| 103 | # CONFIG_LARGE_ALLOCS is not set | 103 | # CONFIG_LARGE_ALLOCS is not set |
| 104 | CONFIG_4KSTACKS=y | 104 | CONFIG_4KSTACKS=y |
| 105 | CONFIG_RAMAUTO=y | 105 | CONFIG_RAMAUTO=y |
| @@ -554,7 +554,6 @@ CONFIG_EXT2_FS=y | |||
| 554 | # CONFIG_XFS_FS is not set | 554 | # CONFIG_XFS_FS is not set |
| 555 | # CONFIG_MINIX_FS is not set | 555 | # CONFIG_MINIX_FS is not set |
| 556 | CONFIG_ROMFS_FS=y | 556 | CONFIG_ROMFS_FS=y |
| 557 | CONFIG_MAGIC_ROM_PTR=y | ||
| 558 | # CONFIG_INOTIFY is not set | 557 | # CONFIG_INOTIFY is not set |
| 559 | # CONFIG_QUOTA is not set | 558 | # CONFIG_QUOTA is not set |
| 560 | # CONFIG_DNOTIFY is not set | 559 | # CONFIG_DNOTIFY is not set |
diff --git a/arch/mips/au1000/common/platform.c b/arch/mips/au1000/common/platform.c index 1f7b465c8038..48d3f54f88f8 100644 --- a/arch/mips/au1000/common/platform.c +++ b/arch/mips/au1000/common/platform.c | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | */ | 9 | */ |
| 10 | #include <linux/config.h> | 10 | #include <linux/config.h> |
| 11 | #include <linux/device.h> | 11 | #include <linux/device.h> |
| 12 | #include <linux/platform_device.h> | ||
| 12 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
| 13 | #include <linux/init.h> | 14 | #include <linux/init.h> |
| 14 | #include <linux/resource.h> | 15 | #include <linux/resource.h> |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 967ecf92d6a7..f4e25c648fbb 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
| @@ -300,6 +300,7 @@ config PPC_PMAC64 | |||
| 300 | bool | 300 | bool |
| 301 | depends on PPC_PMAC && POWER4 | 301 | depends on PPC_PMAC && POWER4 |
| 302 | select U3_DART | 302 | select U3_DART |
| 303 | select GENERIC_TBSYNC | ||
| 303 | default y | 304 | default y |
| 304 | 305 | ||
| 305 | config PPC_PREP | 306 | config PPC_PREP |
| @@ -314,15 +315,17 @@ config PPC_MAPLE | |||
| 314 | bool " Maple 970FX Evaluation Board" | 315 | bool " Maple 970FX Evaluation Board" |
| 315 | select U3_DART | 316 | select U3_DART |
| 316 | select MPIC_BROKEN_U3 | 317 | select MPIC_BROKEN_U3 |
| 318 | select GENERIC_TBSYNC | ||
| 317 | default n | 319 | default n |
| 318 | help | 320 | help |
| 319 | This option enables support for the Maple 970FX Evaluation Board. | 321 | This option enables support for the Maple 970FX Evaluation Board. |
| 320 | For more informations, refer to <http://www.970eval.com> | 322 | For more informations, refer to <http://www.970eval.com> |
| 321 | 323 | ||
| 322 | config PPC_BPA | 324 | config PPC_CELL |
| 323 | bool " Broadband Processor Architecture" | 325 | bool " Cell Broadband Processor Architecture" |
| 324 | depends on PPC_MULTIPLATFORM && PPC64 | 326 | depends on PPC_MULTIPLATFORM && PPC64 |
| 325 | select PPC_RTAS | 327 | select PPC_RTAS |
| 328 | select MMIO_NVRAM | ||
| 326 | 329 | ||
| 327 | config PPC_OF | 330 | config PPC_OF |
| 328 | bool | 331 | bool |
| @@ -353,13 +356,26 @@ config RTAS_ERROR_LOGGING | |||
| 353 | depends on PPC_RTAS | 356 | depends on PPC_RTAS |
| 354 | default n | 357 | default n |
| 355 | 358 | ||
| 359 | config RTAS_PROC | ||
| 360 | bool "Proc interface to RTAS" | ||
| 361 | depends on PPC_RTAS | ||
| 362 | default y | ||
| 363 | |||
| 364 | config RTAS_FLASH | ||
| 365 | tristate "Firmware flash interface" | ||
| 366 | depends on PPC64 && RTAS_PROC | ||
| 367 | |||
| 368 | config MMIO_NVRAM | ||
| 369 | bool | ||
| 370 | default n | ||
| 371 | |||
| 356 | config MPIC_BROKEN_U3 | 372 | config MPIC_BROKEN_U3 |
| 357 | bool | 373 | bool |
| 358 | depends on PPC_MAPLE | 374 | depends on PPC_MAPLE |
| 359 | default y | 375 | default y |
| 360 | 376 | ||
| 361 | config BPA_IIC | 377 | config CELL_IIC |
| 362 | depends on PPC_BPA | 378 | depends on PPC_CELL |
| 363 | bool | 379 | bool |
| 364 | default y | 380 | default y |
| 365 | 381 | ||
| @@ -372,6 +388,11 @@ config PPC_MPC106 | |||
| 372 | bool | 388 | bool |
| 373 | default n | 389 | default n |
| 374 | 390 | ||
| 391 | config GENERIC_TBSYNC | ||
| 392 | bool | ||
| 393 | default y if CONFIG_PPC32 && CONFIG_SMP | ||
| 394 | default n | ||
| 395 | |||
| 375 | source "drivers/cpufreq/Kconfig" | 396 | source "drivers/cpufreq/Kconfig" |
| 376 | 397 | ||
| 377 | config CPU_FREQ_PMAC | 398 | config CPU_FREQ_PMAC |
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 2f4cce06a7e5..5bc11bd36c1f 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile | |||
| @@ -12,9 +12,6 @@ | |||
| 12 | # Rewritten by Cort Dougan and Paul Mackerras | 12 | # Rewritten by Cort Dougan and Paul Mackerras |
| 13 | # | 13 | # |
| 14 | 14 | ||
| 15 | # This must match PAGE_OFFSET in include/asm-powerpc/page.h. | ||
| 16 | KERNELLOAD := $(CONFIG_KERNEL_START) | ||
| 17 | |||
| 18 | HAS_BIARCH := $(call cc-option-yn, -m32) | 15 | HAS_BIARCH := $(call cc-option-yn, -m32) |
| 19 | 16 | ||
| 20 | ifeq ($(CONFIG_PPC64),y) | 17 | ifeq ($(CONFIG_PPC64),y) |
| @@ -59,7 +56,7 @@ override LD += -m elf$(SZ)ppc | |||
| 59 | override CC += -m$(SZ) | 56 | override CC += -m$(SZ) |
| 60 | endif | 57 | endif |
| 61 | 58 | ||
| 62 | LDFLAGS_vmlinux := -Ttext $(KERNELLOAD) -Bstatic -e $(KERNELLOAD) | 59 | LDFLAGS_vmlinux := -Bstatic |
| 63 | 60 | ||
| 64 | # The -Iarch/$(ARCH)/include is temporary while we are merging | 61 | # The -Iarch/$(ARCH)/include is temporary while we are merging |
| 65 | CPPFLAGS += -Iarch/$(ARCH) -Iarch/$(ARCH)/include | 62 | CPPFLAGS += -Iarch/$(ARCH) -Iarch/$(ARCH)/include |
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig new file mode 100644 index 000000000000..67ffecbc05cb --- /dev/null +++ b/arch/powerpc/configs/cell_defconfig | |||
| @@ -0,0 +1,1024 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.14-rc4 | ||
| 4 | # Thu Oct 20 08:29:10 2005 | ||
| 5 | # | ||
| 6 | CONFIG_64BIT=y | ||
| 7 | CONFIG_MMU=y | ||
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 10 | CONFIG_GENERIC_ISA_DMA=y | ||
| 11 | CONFIG_EARLY_PRINTK=y | ||
| 12 | CONFIG_COMPAT=y | ||
| 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
| 16 | |||
| 17 | # | ||
| 18 | # Code maturity level options | ||
| 19 | # | ||
| 20 | CONFIG_EXPERIMENTAL=y | ||
| 21 | CONFIG_CLEAN_COMPILE=y | ||
| 22 | CONFIG_LOCK_KERNEL=y | ||
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 24 | |||
| 25 | # | ||
| 26 | # General setup | ||
| 27 | # | ||
| 28 | CONFIG_LOCALVERSION="" | ||
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 30 | CONFIG_SWAP=y | ||
| 31 | CONFIG_SYSVIPC=y | ||
| 32 | # CONFIG_POSIX_MQUEUE is not set | ||
| 33 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
| 34 | CONFIG_SYSCTL=y | ||
| 35 | # CONFIG_AUDIT is not set | ||
| 36 | CONFIG_HOTPLUG=y | ||
| 37 | CONFIG_KOBJECT_UEVENT=y | ||
| 38 | # CONFIG_IKCONFIG is not set | ||
| 39 | # CONFIG_CPUSETS is not set | ||
| 40 | CONFIG_INITRAMFS_SOURCE="" | ||
| 41 | # CONFIG_EMBEDDED is not set | ||
| 42 | CONFIG_KALLSYMS=y | ||
| 43 | # CONFIG_KALLSYMS_ALL is not set | ||
| 44 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 45 | CONFIG_PRINTK=y | ||
| 46 | CONFIG_BUG=y | ||
| 47 | CONFIG_BASE_FULL=y | ||
| 48 | CONFIG_FUTEX=y | ||
| 49 | CONFIG_EPOLL=y | ||
| 50 | CONFIG_SHMEM=y | ||
| 51 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
| 52 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 53 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 54 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 55 | # CONFIG_TINY_SHMEM is not set | ||
| 56 | CONFIG_BASE_SMALL=0 | ||
| 57 | |||
| 58 | # | ||
| 59 | # Loadable module support | ||
| 60 | # | ||
| 61 | CONFIG_MODULES=y | ||
| 62 | CONFIG_MODULE_UNLOAD=y | ||
| 63 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
| 64 | CONFIG_OBSOLETE_MODPARM=y | ||
| 65 | # CONFIG_MODVERSIONS is not set | ||
| 66 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
| 67 | # CONFIG_KMOD is not set | ||
| 68 | CONFIG_STOP_MACHINE=y | ||
| 69 | CONFIG_SYSVIPC_COMPAT=y | ||
| 70 | |||
| 71 | # | ||
| 72 | # Platform support | ||
| 73 | # | ||
| 74 | # CONFIG_PPC_ISERIES is not set | ||
| 75 | CONFIG_PPC_MULTIPLATFORM=y | ||
| 76 | # CONFIG_PPC_PSERIES is not set | ||
| 77 | CONFIG_PPC_BPA=y | ||
| 78 | # CONFIG_PPC_PMAC is not set | ||
| 79 | # CONFIG_PPC_MAPLE is not set | ||
| 80 | CONFIG_PPC=y | ||
| 81 | CONFIG_PPC64=y | ||
| 82 | CONFIG_PPC_OF=y | ||
| 83 | CONFIG_BPA_IIC=y | ||
| 84 | CONFIG_ALTIVEC=y | ||
| 85 | CONFIG_KEXEC=y | ||
| 86 | # CONFIG_U3_DART is not set | ||
| 87 | # CONFIG_BOOTX_TEXT is not set | ||
| 88 | # CONFIG_POWER4_ONLY is not set | ||
| 89 | # CONFIG_IOMMU_VMERGE is not set | ||
| 90 | CONFIG_SMP=y | ||
| 91 | CONFIG_NR_CPUS=4 | ||
| 92 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
| 93 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 94 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 95 | CONFIG_FLATMEM_MANUAL=y | ||
| 96 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 97 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 98 | CONFIG_FLATMEM=y | ||
| 99 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 100 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 101 | # CONFIG_NUMA is not set | ||
| 102 | CONFIG_SCHED_SMT=y | ||
| 103 | CONFIG_PREEMPT_NONE=y | ||
| 104 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 105 | # CONFIG_PREEMPT is not set | ||
| 106 | CONFIG_PREEMPT_BKL=y | ||
| 107 | # CONFIG_HZ_100 is not set | ||
| 108 | CONFIG_HZ_250=y | ||
| 109 | # CONFIG_HZ_1000 is not set | ||
| 110 | CONFIG_HZ=250 | ||
| 111 | CONFIG_GENERIC_HARDIRQS=y | ||
| 112 | CONFIG_PPC_RTAS=y | ||
| 113 | CONFIG_RTAS_PROC=y | ||
| 114 | CONFIG_RTAS_FLASH=y | ||
| 115 | CONFIG_SECCOMP=y | ||
| 116 | CONFIG_BINFMT_ELF=y | ||
| 117 | # CONFIG_BINFMT_MISC is not set | ||
| 118 | CONFIG_PROC_DEVICETREE=y | ||
| 119 | # CONFIG_CMDLINE_BOOL is not set | ||
| 120 | CONFIG_ISA_DMA_API=y | ||
| 121 | |||
| 122 | # | ||
| 123 | # Bus Options | ||
| 124 | # | ||
| 125 | CONFIG_PCI=y | ||
| 126 | CONFIG_PCI_DOMAINS=y | ||
| 127 | CONFIG_PCI_LEGACY_PROC=y | ||
| 128 | # CONFIG_PCI_DEBUG is not set | ||
| 129 | |||
| 130 | # | ||
| 131 | # PCCARD (PCMCIA/CardBus) support | ||
| 132 | # | ||
| 133 | # CONFIG_PCCARD is not set | ||
| 134 | |||
| 135 | # | ||
| 136 | # PCI Hotplug Support | ||
| 137 | # | ||
| 138 | # CONFIG_HOTPLUG_PCI is not set | ||
| 139 | |||
| 140 | # | ||
| 141 | # Networking | ||
| 142 | # | ||
| 143 | CONFIG_NET=y | ||
| 144 | |||
| 145 | # | ||
| 146 | # Networking options | ||
| 147 | # | ||
| 148 | CONFIG_PACKET=y | ||
| 149 | # CONFIG_PACKET_MMAP is not set | ||
| 150 | CONFIG_UNIX=y | ||
| 151 | CONFIG_XFRM=y | ||
| 152 | # CONFIG_XFRM_USER is not set | ||
| 153 | # CONFIG_NET_KEY is not set | ||
| 154 | CONFIG_INET=y | ||
| 155 | CONFIG_IP_MULTICAST=y | ||
| 156 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 157 | CONFIG_IP_FIB_HASH=y | ||
| 158 | # CONFIG_IP_PNP is not set | ||
| 159 | CONFIG_NET_IPIP=y | ||
| 160 | # CONFIG_NET_IPGRE is not set | ||
| 161 | # CONFIG_IP_MROUTE is not set | ||
| 162 | # CONFIG_ARPD is not set | ||
| 163 | CONFIG_SYN_COOKIES=y | ||
| 164 | # CONFIG_INET_AH is not set | ||
| 165 | # CONFIG_INET_ESP is not set | ||
| 166 | # CONFIG_INET_IPCOMP is not set | ||
| 167 | CONFIG_INET_TUNNEL=y | ||
| 168 | CONFIG_INET_DIAG=y | ||
| 169 | CONFIG_INET_TCP_DIAG=y | ||
| 170 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 171 | CONFIG_TCP_CONG_BIC=y | ||
| 172 | |||
| 173 | # | ||
| 174 | # IP: Virtual Server Configuration | ||
| 175 | # | ||
| 176 | # CONFIG_IP_VS is not set | ||
| 177 | CONFIG_IPV6=y | ||
| 178 | # CONFIG_IPV6_PRIVACY is not set | ||
| 179 | CONFIG_INET6_AH=m | ||
| 180 | CONFIG_INET6_ESP=m | ||
| 181 | CONFIG_INET6_IPCOMP=m | ||
| 182 | CONFIG_INET6_TUNNEL=m | ||
| 183 | CONFIG_IPV6_TUNNEL=m | ||
| 184 | CONFIG_NETFILTER=y | ||
| 185 | # CONFIG_NETFILTER_DEBUG is not set | ||
| 186 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 187 | |||
| 188 | # | ||
| 189 | # IP: Netfilter Configuration | ||
| 190 | # | ||
| 191 | CONFIG_IP_NF_CONNTRACK=y | ||
| 192 | # CONFIG_IP_NF_CT_ACCT is not set | ||
| 193 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | ||
| 194 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
| 195 | CONFIG_IP_NF_CT_PROTO_SCTP=y | ||
| 196 | CONFIG_IP_NF_FTP=m | ||
| 197 | CONFIG_IP_NF_IRC=m | ||
| 198 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 199 | CONFIG_IP_NF_TFTP=m | ||
| 200 | CONFIG_IP_NF_AMANDA=m | ||
| 201 | # CONFIG_IP_NF_PPTP is not set | ||
| 202 | CONFIG_IP_NF_QUEUE=m | ||
| 203 | CONFIG_IP_NF_IPTABLES=m | ||
| 204 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
| 205 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
| 206 | CONFIG_IP_NF_MATCH_MAC=m | ||
| 207 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
| 208 | CONFIG_IP_NF_MATCH_MARK=m | ||
| 209 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
| 210 | CONFIG_IP_NF_MATCH_TOS=m | ||
| 211 | CONFIG_IP_NF_MATCH_RECENT=m | ||
| 212 | CONFIG_IP_NF_MATCH_ECN=m | ||
| 213 | CONFIG_IP_NF_MATCH_DSCP=m | ||
| 214 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
| 215 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
| 216 | CONFIG_IP_NF_MATCH_TTL=m | ||
| 217 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
| 218 | CONFIG_IP_NF_MATCH_HELPER=m | ||
| 219 | CONFIG_IP_NF_MATCH_STATE=m | ||
| 220 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
| 221 | CONFIG_IP_NF_MATCH_OWNER=m | ||
| 222 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
| 223 | CONFIG_IP_NF_MATCH_REALM=m | ||
| 224 | CONFIG_IP_NF_MATCH_SCTP=m | ||
| 225 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 226 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
| 227 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
| 228 | CONFIG_IP_NF_MATCH_STRING=m | ||
| 229 | CONFIG_IP_NF_FILTER=m | ||
| 230 | CONFIG_IP_NF_TARGET_REJECT=m | ||
| 231 | CONFIG_IP_NF_TARGET_LOG=m | ||
| 232 | CONFIG_IP_NF_TARGET_ULOG=m | ||
| 233 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
| 234 | CONFIG_IP_NF_TARGET_NFQUEUE=m | ||
| 235 | CONFIG_IP_NF_NAT=m | ||
| 236 | CONFIG_IP_NF_NAT_NEEDED=y | ||
| 237 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
| 238 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
| 239 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
| 240 | CONFIG_IP_NF_TARGET_SAME=m | ||
| 241 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
| 242 | CONFIG_IP_NF_NAT_IRC=m | ||
| 243 | CONFIG_IP_NF_NAT_FTP=m | ||
| 244 | CONFIG_IP_NF_NAT_TFTP=m | ||
| 245 | CONFIG_IP_NF_NAT_AMANDA=m | ||
| 246 | CONFIG_IP_NF_MANGLE=m | ||
| 247 | CONFIG_IP_NF_TARGET_TOS=m | ||
| 248 | CONFIG_IP_NF_TARGET_ECN=m | ||
| 249 | CONFIG_IP_NF_TARGET_DSCP=m | ||
| 250 | CONFIG_IP_NF_TARGET_MARK=m | ||
| 251 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
| 252 | CONFIG_IP_NF_TARGET_TTL=m | ||
| 253 | CONFIG_IP_NF_RAW=m | ||
| 254 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
| 255 | CONFIG_IP_NF_ARPTABLES=m | ||
| 256 | CONFIG_IP_NF_ARPFILTER=m | ||
| 257 | CONFIG_IP_NF_ARP_MANGLE=m | ||
| 258 | |||
| 259 | # | ||
| 260 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
| 261 | # | ||
| 262 | # CONFIG_IP6_NF_QUEUE is not set | ||
| 263 | # CONFIG_IP6_NF_IPTABLES is not set | ||
| 264 | # CONFIG_IP6_NF_TARGET_NFQUEUE is not set | ||
| 265 | |||
| 266 | # | ||
| 267 | # DCCP Configuration (EXPERIMENTAL) | ||
| 268 | # | ||
| 269 | # CONFIG_IP_DCCP is not set | ||
| 270 | |||
| 271 | # | ||
| 272 | # SCTP Configuration (EXPERIMENTAL) | ||
| 273 | # | ||
| 274 | # CONFIG_IP_SCTP is not set | ||
| 275 | # CONFIG_ATM is not set | ||
| 276 | # CONFIG_BRIDGE is not set | ||
| 277 | # CONFIG_VLAN_8021Q is not set | ||
| 278 | # CONFIG_DECNET is not set | ||
| 279 | # CONFIG_LLC2 is not set | ||
| 280 | # CONFIG_IPX is not set | ||
| 281 | # CONFIG_ATALK is not set | ||
| 282 | # CONFIG_X25 is not set | ||
| 283 | # CONFIG_LAPB is not set | ||
| 284 | # CONFIG_NET_DIVERT is not set | ||
| 285 | # CONFIG_ECONET is not set | ||
| 286 | # CONFIG_WAN_ROUTER is not set | ||
| 287 | # CONFIG_NET_SCHED is not set | ||
| 288 | CONFIG_NET_CLS_ROUTE=y | ||
| 289 | |||
| 290 | # | ||
| 291 | # Network testing | ||
| 292 | # | ||
| 293 | # CONFIG_NET_PKTGEN is not set | ||
| 294 | # CONFIG_HAMRADIO is not set | ||
| 295 | # CONFIG_IRDA is not set | ||
| 296 | # CONFIG_BT is not set | ||
| 297 | # CONFIG_IEEE80211 is not set | ||
| 298 | |||
| 299 | # | ||
| 300 | # Device Drivers | ||
| 301 | # | ||
| 302 | |||
| 303 | # | ||
| 304 | # Generic Driver Options | ||
| 305 | # | ||
| 306 | CONFIG_STANDALONE=y | ||
| 307 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 308 | CONFIG_FW_LOADER=y | ||
| 309 | # CONFIG_DEBUG_DRIVER is not set | ||
| 310 | |||
| 311 | # | ||
| 312 | # Connector - unified userspace <-> kernelspace linker | ||
| 313 | # | ||
| 314 | # CONFIG_CONNECTOR is not set | ||
| 315 | |||
| 316 | # | ||
| 317 | # Memory Technology Devices (MTD) | ||
| 318 | # | ||
| 319 | # CONFIG_MTD is not set | ||
| 320 | |||
| 321 | # | ||
| 322 | # Parallel port support | ||
| 323 | # | ||
| 324 | # CONFIG_PARPORT is not set | ||
| 325 | |||
| 326 | # | ||
| 327 | # Plug and Play support | ||
| 328 | # | ||
| 329 | |||
| 330 | # | ||
| 331 | # Block devices | ||
| 332 | # | ||
| 333 | # CONFIG_BLK_DEV_FD is not set | ||
| 334 | # CONFIG_BLK_CPQ_DA is not set | ||
| 335 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 336 | # CONFIG_BLK_DEV_DAC960 is not set | ||
| 337 | # CONFIG_BLK_DEV_UMEM is not set | ||
| 338 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 339 | CONFIG_BLK_DEV_LOOP=y | ||
| 340 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 341 | CONFIG_BLK_DEV_NBD=y | ||
| 342 | # CONFIG_BLK_DEV_SX8 is not set | ||
| 343 | CONFIG_BLK_DEV_RAM=y | ||
| 344 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 345 | CONFIG_BLK_DEV_RAM_SIZE=131072 | ||
| 346 | CONFIG_BLK_DEV_INITRD=y | ||
| 347 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 348 | |||
| 349 | # | ||
| 350 | # IO Schedulers | ||
| 351 | # | ||
| 352 | CONFIG_IOSCHED_NOOP=y | ||
| 353 | CONFIG_IOSCHED_AS=y | ||
| 354 | CONFIG_IOSCHED_DEADLINE=y | ||
| 355 | CONFIG_IOSCHED_CFQ=y | ||
| 356 | # CONFIG_ATA_OVER_ETH is not set | ||
| 357 | |||
| 358 | # | ||
| 359 | # ATA/ATAPI/MFM/RLL support | ||
| 360 | # | ||
| 361 | CONFIG_IDE=y | ||
| 362 | CONFIG_BLK_DEV_IDE=y | ||
| 363 | |||
| 364 | # | ||
| 365 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
| 366 | # | ||
| 367 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
| 368 | CONFIG_BLK_DEV_IDEDISK=y | ||
| 369 | CONFIG_IDEDISK_MULTI_MODE=y | ||
| 370 | # CONFIG_BLK_DEV_IDECD is not set | ||
| 371 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
| 372 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
| 373 | # CONFIG_IDE_TASK_IOCTL is not set | ||
| 374 | |||
| 375 | # | ||
| 376 | # IDE chipset support/bugfixes | ||
| 377 | # | ||
| 378 | CONFIG_IDE_GENERIC=y | ||
| 379 | CONFIG_BLK_DEV_IDEPCI=y | ||
| 380 | CONFIG_IDEPCI_SHARE_IRQ=y | ||
| 381 | # CONFIG_BLK_DEV_OFFBOARD is not set | ||
| 382 | CONFIG_BLK_DEV_GENERIC=y | ||
| 383 | # CONFIG_BLK_DEV_OPTI621 is not set | ||
| 384 | # CONFIG_BLK_DEV_SL82C105 is not set | ||
| 385 | CONFIG_BLK_DEV_IDEDMA_PCI=y | ||
| 386 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | ||
| 387 | CONFIG_IDEDMA_PCI_AUTO=y | ||
| 388 | # CONFIG_IDEDMA_ONLYDISK is not set | ||
| 389 | CONFIG_BLK_DEV_AEC62XX=y | ||
| 390 | # CONFIG_BLK_DEV_ALI15X3 is not set | ||
| 391 | # CONFIG_BLK_DEV_AMD74XX is not set | ||
| 392 | # CONFIG_BLK_DEV_CMD64X is not set | ||
| 393 | # CONFIG_BLK_DEV_TRIFLEX is not set | ||
| 394 | # CONFIG_BLK_DEV_CY82C693 is not set | ||
| 395 | # CONFIG_BLK_DEV_CS5520 is not set | ||
| 396 | # CONFIG_BLK_DEV_CS5530 is not set | ||
| 397 | # CONFIG_BLK_DEV_HPT34X is not set | ||
| 398 | # CONFIG_BLK_DEV_HPT366 is not set | ||
| 399 | # CONFIG_BLK_DEV_SC1200 is not set | ||
| 400 | # CONFIG_BLK_DEV_PIIX is not set | ||
| 401 | # CONFIG_BLK_DEV_IT821X is not set | ||
| 402 | # CONFIG_BLK_DEV_NS87415 is not set | ||
| 403 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | ||
| 404 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | ||
| 405 | # CONFIG_BLK_DEV_SVWKS is not set | ||
| 406 | CONFIG_BLK_DEV_SIIMAGE=y | ||
| 407 | # CONFIG_BLK_DEV_SLC90E66 is not set | ||
| 408 | # CONFIG_BLK_DEV_TRM290 is not set | ||
| 409 | # CONFIG_BLK_DEV_VIA82CXXX is not set | ||
| 410 | # CONFIG_IDE_ARM is not set | ||
| 411 | CONFIG_BLK_DEV_IDEDMA=y | ||
| 412 | # CONFIG_IDEDMA_IVB is not set | ||
| 413 | CONFIG_IDEDMA_AUTO=y | ||
| 414 | # CONFIG_BLK_DEV_HD is not set | ||
| 415 | |||
| 416 | # | ||
| 417 | # SCSI device support | ||
| 418 | # | ||
| 419 | # CONFIG_RAID_ATTRS is not set | ||
| 420 | # CONFIG_SCSI is not set | ||
| 421 | |||
| 422 | # | ||
| 423 | # Multi-device support (RAID and LVM) | ||
| 424 | # | ||
| 425 | # CONFIG_MD is not set | ||
| 426 | |||
| 427 | # | ||
| 428 | # Fusion MPT device support | ||
| 429 | # | ||
| 430 | # CONFIG_FUSION is not set | ||
| 431 | |||
| 432 | # | ||
| 433 | # IEEE 1394 (FireWire) support | ||
| 434 | # | ||
| 435 | # CONFIG_IEEE1394 is not set | ||
| 436 | |||
| 437 | # | ||
| 438 | # I2O device support | ||
| 439 | # | ||
| 440 | # CONFIG_I2O is not set | ||
| 441 | |||
| 442 | # | ||
| 443 | # Macintosh device drivers | ||
| 444 | # | ||
| 445 | |||
| 446 | # | ||
| 447 | # Network device support | ||
| 448 | # | ||
| 449 | CONFIG_NETDEVICES=y | ||
| 450 | # CONFIG_DUMMY is not set | ||
| 451 | # CONFIG_BONDING is not set | ||
| 452 | # CONFIG_EQUALIZER is not set | ||
| 453 | # CONFIG_TUN is not set | ||
| 454 | |||
| 455 | # | ||
| 456 | # ARCnet devices | ||
| 457 | # | ||
| 458 | # CONFIG_ARCNET is not set | ||
| 459 | |||
| 460 | # | ||
| 461 | # PHY device support | ||
| 462 | # | ||
| 463 | # CONFIG_PHYLIB is not set | ||
| 464 | |||
| 465 | # | ||
| 466 | # Ethernet (10 or 100Mbit) | ||
| 467 | # | ||
| 468 | CONFIG_NET_ETHERNET=y | ||
| 469 | CONFIG_MII=y | ||
| 470 | # CONFIG_HAPPYMEAL is not set | ||
| 471 | # CONFIG_SUNGEM is not set | ||
| 472 | # CONFIG_CASSINI is not set | ||
| 473 | # CONFIG_NET_VENDOR_3COM is not set | ||
| 474 | |||
| 475 | # | ||
| 476 | # Tulip family network device support | ||
| 477 | # | ||
| 478 | # CONFIG_NET_TULIP is not set | ||
| 479 | # CONFIG_HP100 is not set | ||
| 480 | # CONFIG_NET_PCI is not set | ||
| 481 | |||
| 482 | # | ||
| 483 | # Ethernet (1000 Mbit) | ||
| 484 | # | ||
| 485 | # CONFIG_ACENIC is not set | ||
| 486 | # CONFIG_DL2K is not set | ||
| 487 | CONFIG_E1000=m | ||
| 488 | # CONFIG_E1000_NAPI is not set | ||
| 489 | # CONFIG_NS83820 is not set | ||
| 490 | # CONFIG_HAMACHI is not set | ||
| 491 | # CONFIG_YELLOWFIN is not set | ||
| 492 | # CONFIG_R8169 is not set | ||
| 493 | # CONFIG_SIS190 is not set | ||
| 494 | CONFIG_SKGE=m | ||
| 495 | # CONFIG_SK98LIN is not set | ||
| 496 | # CONFIG_TIGON3 is not set | ||
| 497 | # CONFIG_BNX2 is not set | ||
| 498 | # CONFIG_SPIDER_NET is not set | ||
| 499 | # CONFIG_MV643XX_ETH is not set | ||
| 500 | |||
| 501 | # | ||
| 502 | # Ethernet (10000 Mbit) | ||
| 503 | # | ||
| 504 | # CONFIG_CHELSIO_T1 is not set | ||
| 505 | # CONFIG_IXGB is not set | ||
| 506 | # CONFIG_S2IO is not set | ||
| 507 | |||
| 508 | # | ||
| 509 | # Token Ring devices | ||
| 510 | # | ||
| 511 | # CONFIG_TR is not set | ||
| 512 | |||
| 513 | # | ||
| 514 | # Wireless LAN (non-hamradio) | ||
| 515 | # | ||
| 516 | # CONFIG_NET_RADIO is not set | ||
| 517 | |||
| 518 | # | ||
| 519 | # Wan interfaces | ||
| 520 | # | ||
| 521 | # CONFIG_WAN is not set | ||
| 522 | # CONFIG_FDDI is not set | ||
| 523 | # CONFIG_HIPPI is not set | ||
| 524 | # CONFIG_PPP is not set | ||
| 525 | # CONFIG_SLIP is not set | ||
| 526 | # CONFIG_SHAPER is not set | ||
| 527 | # CONFIG_NETCONSOLE is not set | ||
| 528 | # CONFIG_NETPOLL is not set | ||
| 529 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 530 | |||
| 531 | # | ||
| 532 | # ISDN subsystem | ||
| 533 | # | ||
| 534 | # CONFIG_ISDN is not set | ||
| 535 | |||
| 536 | # | ||
| 537 | # Telephony Support | ||
| 538 | # | ||
| 539 | # CONFIG_PHONE is not set | ||
| 540 | |||
| 541 | # | ||
| 542 | # Input device support | ||
| 543 | # | ||
| 544 | CONFIG_INPUT=y | ||
| 545 | |||
| 546 | # | ||
| 547 | # Userland interfaces | ||
| 548 | # | ||
| 549 | CONFIG_INPUT_MOUSEDEV=y | ||
| 550 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
| 551 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 552 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 553 | # CONFIG_INPUT_JOYDEV is not set | ||
| 554 | # CONFIG_INPUT_TSDEV is not set | ||
| 555 | # CONFIG_INPUT_EVDEV is not set | ||
| 556 | # CONFIG_INPUT_EVBUG is not set | ||
| 557 | |||
| 558 | # | ||
| 559 | # Input Device Drivers | ||
| 560 | # | ||
| 561 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 562 | # CONFIG_INPUT_MOUSE is not set | ||
| 563 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 564 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 565 | # CONFIG_INPUT_MISC is not set | ||
| 566 | |||
| 567 | # | ||
| 568 | # Hardware I/O ports | ||
| 569 | # | ||
| 570 | CONFIG_SERIO=y | ||
| 571 | # CONFIG_SERIO_I8042 is not set | ||
| 572 | CONFIG_SERIO_SERPORT=y | ||
| 573 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 574 | # CONFIG_SERIO_RAW is not set | ||
| 575 | # CONFIG_GAMEPORT is not set | ||
| 576 | |||
| 577 | # | ||
| 578 | # Character devices | ||
| 579 | # | ||
| 580 | CONFIG_VT=y | ||
| 581 | CONFIG_VT_CONSOLE=y | ||
| 582 | CONFIG_HW_CONSOLE=y | ||
| 583 | CONFIG_SERIAL_NONSTANDARD=y | ||
| 584 | # CONFIG_ROCKETPORT is not set | ||
| 585 | # CONFIG_CYCLADES is not set | ||
| 586 | # CONFIG_DIGIEPCA is not set | ||
| 587 | # CONFIG_MOXA_SMARTIO is not set | ||
| 588 | # CONFIG_ISI is not set | ||
| 589 | # CONFIG_SYNCLINK is not set | ||
| 590 | # CONFIG_SYNCLINKMP is not set | ||
| 591 | # CONFIG_N_HDLC is not set | ||
| 592 | # CONFIG_SPECIALIX is not set | ||
| 593 | # CONFIG_SX is not set | ||
| 594 | # CONFIG_STALDRV is not set | ||
| 595 | |||
| 596 | # | ||
| 597 | # Serial drivers | ||
| 598 | # | ||
| 599 | CONFIG_SERIAL_8250=y | ||
| 600 | CONFIG_SERIAL_8250_CONSOLE=y | ||
| 601 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
| 602 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
| 603 | |||
| 604 | # | ||
| 605 | # Non-8250 serial port support | ||
| 606 | # | ||
| 607 | CONFIG_SERIAL_CORE=y | ||
| 608 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 609 | # CONFIG_SERIAL_JSM is not set | ||
| 610 | CONFIG_UNIX98_PTYS=y | ||
| 611 | # CONFIG_LEGACY_PTYS is not set | ||
| 612 | |||
| 613 | # | ||
| 614 | # IPMI | ||
| 615 | # | ||
| 616 | # CONFIG_IPMI_HANDLER is not set | ||
| 617 | |||
| 618 | # | ||
| 619 | # Watchdog Cards | ||
| 620 | # | ||
| 621 | CONFIG_WATCHDOG=y | ||
| 622 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
| 623 | |||
| 624 | # | ||
| 625 | # Watchdog Device Drivers | ||
| 626 | # | ||
| 627 | # CONFIG_SOFT_WATCHDOG is not set | ||
| 628 | CONFIG_WATCHDOG_RTAS=y | ||
| 629 | |||
| 630 | # | ||
| 631 | # PCI-based Watchdog Cards | ||
| 632 | # | ||
| 633 | # CONFIG_PCIPCWATCHDOG is not set | ||
| 634 | # CONFIG_WDTPCI is not set | ||
| 635 | # CONFIG_RTC is not set | ||
| 636 | # CONFIG_DTLK is not set | ||
| 637 | # CONFIG_R3964 is not set | ||
| 638 | # CONFIG_APPLICOM is not set | ||
| 639 | |||
| 640 | # | ||
| 641 | # Ftape, the floppy tape device driver | ||
| 642 | # | ||
| 643 | # CONFIG_AGP is not set | ||
| 644 | # CONFIG_DRM is not set | ||
| 645 | # CONFIG_RAW_DRIVER is not set | ||
| 646 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 647 | |||
| 648 | # | ||
| 649 | # TPM devices | ||
| 650 | # | ||
| 651 | # CONFIG_TCG_TPM is not set | ||
| 652 | |||
| 653 | # | ||
| 654 | # I2C support | ||
| 655 | # | ||
| 656 | CONFIG_I2C=y | ||
| 657 | # CONFIG_I2C_CHARDEV is not set | ||
| 658 | |||
| 659 | # | ||
| 660 | # I2C Algorithms | ||
| 661 | # | ||
| 662 | CONFIG_I2C_ALGOBIT=y | ||
| 663 | # CONFIG_I2C_ALGOPCF is not set | ||
| 664 | # CONFIG_I2C_ALGOPCA is not set | ||
| 665 | |||
| 666 | # | ||
| 667 | # I2C Hardware Bus support | ||
| 668 | # | ||
| 669 | # CONFIG_I2C_ALI1535 is not set | ||
| 670 | # CONFIG_I2C_ALI1563 is not set | ||
| 671 | # CONFIG_I2C_ALI15X3 is not set | ||
| 672 | # CONFIG_I2C_AMD756 is not set | ||
| 673 | # CONFIG_I2C_AMD8111 is not set | ||
| 674 | # CONFIG_I2C_I801 is not set | ||
| 675 | # CONFIG_I2C_I810 is not set | ||
| 676 | # CONFIG_I2C_PIIX4 is not set | ||
| 677 | # CONFIG_I2C_NFORCE2 is not set | ||
| 678 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 679 | # CONFIG_I2C_PROSAVAGE is not set | ||
| 680 | # CONFIG_I2C_SAVAGE4 is not set | ||
| 681 | # CONFIG_SCx200_ACB is not set | ||
| 682 | # CONFIG_I2C_SIS5595 is not set | ||
| 683 | # CONFIG_I2C_SIS630 is not set | ||
| 684 | # CONFIG_I2C_SIS96X is not set | ||
| 685 | # CONFIG_I2C_STUB is not set | ||
| 686 | # CONFIG_I2C_VIA is not set | ||
| 687 | # CONFIG_I2C_VIAPRO is not set | ||
| 688 | # CONFIG_I2C_VOODOO3 is not set | ||
| 689 | # CONFIG_I2C_PCA_ISA is not set | ||
| 690 | |||
| 691 | # | ||
| 692 | # Miscellaneous I2C Chip support | ||
| 693 | # | ||
| 694 | # CONFIG_SENSORS_DS1337 is not set | ||
| 695 | # CONFIG_SENSORS_DS1374 is not set | ||
| 696 | # CONFIG_SENSORS_EEPROM is not set | ||
| 697 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 698 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 699 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 700 | # CONFIG_SENSORS_RTC8564 is not set | ||
| 701 | # CONFIG_SENSORS_MAX6875 is not set | ||
| 702 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 703 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 704 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 705 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 706 | |||
| 707 | # | ||
| 708 | # Dallas's 1-wire bus | ||
| 709 | # | ||
| 710 | # CONFIG_W1 is not set | ||
| 711 | |||
| 712 | # | ||
| 713 | # Hardware Monitoring support | ||
| 714 | # | ||
| 715 | # CONFIG_HWMON is not set | ||
| 716 | # CONFIG_HWMON_VID is not set | ||
| 717 | |||
| 718 | # | ||
| 719 | # Misc devices | ||
| 720 | # | ||
| 721 | |||
| 722 | # | ||
| 723 | # Multimedia Capabilities Port drivers | ||
| 724 | # | ||
| 725 | |||
| 726 | # | ||
| 727 | # Multimedia devices | ||
| 728 | # | ||
| 729 | # CONFIG_VIDEO_DEV is not set | ||
| 730 | |||
| 731 | # | ||
| 732 | # Digital Video Broadcasting Devices | ||
| 733 | # | ||
| 734 | # CONFIG_DVB is not set | ||
| 735 | |||
| 736 | # | ||
| 737 | # Graphics support | ||
| 738 | # | ||
| 739 | # CONFIG_FB is not set | ||
| 740 | |||
| 741 | # | ||
| 742 | # Console display driver support | ||
| 743 | # | ||
| 744 | # CONFIG_VGA_CONSOLE is not set | ||
| 745 | CONFIG_DUMMY_CONSOLE=y | ||
| 746 | |||
| 747 | # | ||
| 748 | # Sound | ||
| 749 | # | ||
| 750 | # CONFIG_SOUND is not set | ||
| 751 | |||
| 752 | # | ||
| 753 | # USB support | ||
| 754 | # | ||
| 755 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 756 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 757 | # CONFIG_USB is not set | ||
| 758 | |||
| 759 | # | ||
| 760 | # USB Gadget Support | ||
| 761 | # | ||
| 762 | # CONFIG_USB_GADGET is not set | ||
| 763 | |||
| 764 | # | ||
| 765 | # MMC/SD Card support | ||
| 766 | # | ||
| 767 | # CONFIG_MMC is not set | ||
| 768 | |||
| 769 | # | ||
| 770 | # InfiniBand support | ||
| 771 | # | ||
| 772 | # CONFIG_INFINIBAND is not set | ||
| 773 | |||
| 774 | # | ||
| 775 | # SN Devices | ||
| 776 | # | ||
| 777 | |||
| 778 | # | ||
| 779 | # File systems | ||
| 780 | # | ||
| 781 | CONFIG_EXT2_FS=y | ||
| 782 | # CONFIG_EXT2_FS_XATTR is not set | ||
| 783 | # CONFIG_EXT2_FS_XIP is not set | ||
| 784 | CONFIG_EXT3_FS=y | ||
| 785 | CONFIG_EXT3_FS_XATTR=y | ||
| 786 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
| 787 | # CONFIG_EXT3_FS_SECURITY is not set | ||
| 788 | CONFIG_JBD=y | ||
| 789 | # CONFIG_JBD_DEBUG is not set | ||
| 790 | CONFIG_FS_MBCACHE=y | ||
| 791 | # CONFIG_REISERFS_FS is not set | ||
| 792 | # CONFIG_JFS_FS is not set | ||
| 793 | CONFIG_FS_POSIX_ACL=y | ||
| 794 | # CONFIG_XFS_FS is not set | ||
| 795 | # CONFIG_MINIX_FS is not set | ||
| 796 | # CONFIG_ROMFS_FS is not set | ||
| 797 | CONFIG_INOTIFY=y | ||
| 798 | # CONFIG_QUOTA is not set | ||
| 799 | CONFIG_DNOTIFY=y | ||
| 800 | # CONFIG_AUTOFS_FS is not set | ||
| 801 | # CONFIG_AUTOFS4_FS is not set | ||
| 802 | # CONFIG_FUSE_FS is not set | ||
| 803 | |||
| 804 | # | ||
| 805 | # CD-ROM/DVD Filesystems | ||
| 806 | # | ||
| 807 | CONFIG_ISO9660_FS=m | ||
| 808 | CONFIG_JOLIET=y | ||
| 809 | # CONFIG_ZISOFS is not set | ||
| 810 | CONFIG_UDF_FS=m | ||
| 811 | CONFIG_UDF_NLS=y | ||
| 812 | |||
| 813 | # | ||
| 814 | # DOS/FAT/NT Filesystems | ||
| 815 | # | ||
| 816 | CONFIG_FAT_FS=m | ||
| 817 | CONFIG_MSDOS_FS=m | ||
| 818 | CONFIG_VFAT_FS=m | ||
| 819 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 820 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 821 | # CONFIG_NTFS_FS is not set | ||
| 822 | |||
| 823 | # | ||
| 824 | # Pseudo filesystems | ||
| 825 | # | ||
| 826 | CONFIG_PROC_FS=y | ||
| 827 | CONFIG_PROC_KCORE=y | ||
| 828 | CONFIG_SYSFS=y | ||
| 829 | CONFIG_TMPFS=y | ||
| 830 | CONFIG_HUGETLBFS=y | ||
| 831 | CONFIG_HUGETLB_PAGE=y | ||
| 832 | CONFIG_RAMFS=y | ||
| 833 | # CONFIG_RELAYFS_FS is not set | ||
| 834 | |||
| 835 | # | ||
| 836 | # Miscellaneous filesystems | ||
| 837 | # | ||
| 838 | # CONFIG_ADFS_FS is not set | ||
| 839 | # CONFIG_AFFS_FS is not set | ||
| 840 | # CONFIG_HFS_FS is not set | ||
| 841 | # CONFIG_HFSPLUS_FS is not set | ||
| 842 | # CONFIG_BEFS_FS is not set | ||
| 843 | # CONFIG_BFS_FS is not set | ||
| 844 | # CONFIG_EFS_FS is not set | ||
| 845 | # CONFIG_CRAMFS is not set | ||
| 846 | # CONFIG_VXFS_FS is not set | ||
| 847 | # CONFIG_HPFS_FS is not set | ||
| 848 | # CONFIG_QNX4FS_FS is not set | ||
| 849 | # CONFIG_SYSV_FS is not set | ||
| 850 | # CONFIG_UFS_FS is not set | ||
| 851 | |||
| 852 | # | ||
| 853 | # Network File Systems | ||
| 854 | # | ||
| 855 | CONFIG_NFS_FS=m | ||
| 856 | CONFIG_NFS_V3=y | ||
| 857 | CONFIG_NFS_V3_ACL=y | ||
| 858 | # CONFIG_NFS_V4 is not set | ||
| 859 | # CONFIG_NFS_DIRECTIO is not set | ||
| 860 | CONFIG_NFSD=m | ||
| 861 | CONFIG_NFSD_V2_ACL=y | ||
| 862 | CONFIG_NFSD_V3=y | ||
| 863 | CONFIG_NFSD_V3_ACL=y | ||
| 864 | # CONFIG_NFSD_V4 is not set | ||
| 865 | CONFIG_NFSD_TCP=y | ||
| 866 | CONFIG_LOCKD=m | ||
| 867 | CONFIG_LOCKD_V4=y | ||
| 868 | CONFIG_EXPORTFS=m | ||
| 869 | CONFIG_NFS_ACL_SUPPORT=m | ||
| 870 | CONFIG_NFS_COMMON=y | ||
| 871 | CONFIG_SUNRPC=m | ||
| 872 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
| 873 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 874 | # CONFIG_SMB_FS is not set | ||
| 875 | # CONFIG_CIFS is not set | ||
| 876 | # CONFIG_NCP_FS is not set | ||
| 877 | # CONFIG_CODA_FS is not set | ||
| 878 | # CONFIG_AFS_FS is not set | ||
| 879 | # CONFIG_9P_FS is not set | ||
| 880 | |||
| 881 | # | ||
| 882 | # Partition Types | ||
| 883 | # | ||
| 884 | CONFIG_PARTITION_ADVANCED=y | ||
| 885 | # CONFIG_ACORN_PARTITION is not set | ||
| 886 | # CONFIG_OSF_PARTITION is not set | ||
| 887 | # CONFIG_AMIGA_PARTITION is not set | ||
| 888 | # CONFIG_ATARI_PARTITION is not set | ||
| 889 | # CONFIG_MAC_PARTITION is not set | ||
| 890 | CONFIG_MSDOS_PARTITION=y | ||
| 891 | # CONFIG_BSD_DISKLABEL is not set | ||
| 892 | # CONFIG_MINIX_SUBPARTITION is not set | ||
| 893 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
| 894 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
| 895 | # CONFIG_LDM_PARTITION is not set | ||
| 896 | # CONFIG_SGI_PARTITION is not set | ||
| 897 | # CONFIG_ULTRIX_PARTITION is not set | ||
| 898 | # CONFIG_SUN_PARTITION is not set | ||
| 899 | CONFIG_EFI_PARTITION=y | ||
| 900 | |||
| 901 | # | ||
| 902 | # Native Language Support | ||
| 903 | # | ||
| 904 | CONFIG_NLS=m | ||
| 905 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 906 | # CONFIG_NLS_CODEPAGE_437 is not set | ||
| 907 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 908 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 909 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 910 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 911 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 912 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 913 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 914 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 915 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 916 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 917 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 918 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 919 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 920 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 921 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 922 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 923 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 924 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 925 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 926 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 927 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 928 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 929 | # CONFIG_NLS_ASCII is not set | ||
| 930 | CONFIG_NLS_ISO8859_1=m | ||
| 931 | CONFIG_NLS_ISO8859_2=m | ||
| 932 | CONFIG_NLS_ISO8859_3=m | ||
| 933 | CONFIG_NLS_ISO8859_4=m | ||
| 934 | CONFIG_NLS_ISO8859_5=m | ||
| 935 | CONFIG_NLS_ISO8859_6=m | ||
| 936 | CONFIG_NLS_ISO8859_7=m | ||
| 937 | CONFIG_NLS_ISO8859_9=m | ||
| 938 | CONFIG_NLS_ISO8859_13=m | ||
| 939 | CONFIG_NLS_ISO8859_14=m | ||
| 940 | CONFIG_NLS_ISO8859_15=m | ||
| 941 | # CONFIG_NLS_KOI8_R is not set | ||
| 942 | # CONFIG_NLS_KOI8_U is not set | ||
| 943 | # CONFIG_NLS_UTF8 is not set | ||
| 944 | |||
| 945 | # | ||
| 946 | # Profiling support | ||
| 947 | # | ||
| 948 | # CONFIG_PROFILING is not set | ||
| 949 | |||
| 950 | # | ||
| 951 | # Kernel hacking | ||
| 952 | # | ||
| 953 | # CONFIG_PRINTK_TIME is not set | ||
| 954 | CONFIG_DEBUG_KERNEL=y | ||
| 955 | CONFIG_MAGIC_SYSRQ=y | ||
| 956 | CONFIG_LOG_BUF_SHIFT=15 | ||
| 957 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 958 | # CONFIG_SCHEDSTATS is not set | ||
| 959 | # CONFIG_DEBUG_SLAB is not set | ||
| 960 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 961 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | ||
| 962 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 963 | # CONFIG_DEBUG_INFO is not set | ||
| 964 | CONFIG_DEBUG_FS=y | ||
| 965 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
| 966 | # CONFIG_KPROBES is not set | ||
| 967 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
| 968 | CONFIG_DEBUGGER=y | ||
| 969 | # CONFIG_XMON is not set | ||
| 970 | # CONFIG_PPCDBG is not set | ||
| 971 | CONFIG_IRQSTACKS=y | ||
| 972 | |||
| 973 | # | ||
| 974 | # Security options | ||
| 975 | # | ||
| 976 | # CONFIG_KEYS is not set | ||
| 977 | # CONFIG_SECURITY is not set | ||
| 978 | |||
| 979 | # | ||
| 980 | # Cryptographic options | ||
| 981 | # | ||
| 982 | CONFIG_CRYPTO=y | ||
| 983 | CONFIG_CRYPTO_HMAC=y | ||
| 984 | # CONFIG_CRYPTO_NULL is not set | ||
| 985 | # CONFIG_CRYPTO_MD4 is not set | ||
| 986 | CONFIG_CRYPTO_MD5=m | ||
| 987 | CONFIG_CRYPTO_SHA1=m | ||
| 988 | # CONFIG_CRYPTO_SHA256 is not set | ||
| 989 | # CONFIG_CRYPTO_SHA512 is not set | ||
| 990 | # CONFIG_CRYPTO_WP512 is not set | ||
| 991 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 992 | CONFIG_CRYPTO_DES=m | ||
| 993 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
| 994 | # CONFIG_CRYPTO_TWOFISH is not set | ||
| 995 | # CONFIG_CRYPTO_SERPENT is not set | ||
| 996 | # CONFIG_CRYPTO_AES is not set | ||
| 997 | # CONFIG_CRYPTO_CAST5 is not set | ||
| 998 | # CONFIG_CRYPTO_CAST6 is not set | ||
| 999 | # CONFIG_CRYPTO_TEA is not set | ||
| 1000 | # CONFIG_CRYPTO_ARC4 is not set | ||
| 1001 | # CONFIG_CRYPTO_KHAZAD is not set | ||
| 1002 | # CONFIG_CRYPTO_ANUBIS is not set | ||
| 1003 | CONFIG_CRYPTO_DEFLATE=m | ||
| 1004 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 1005 | # CONFIG_CRYPTO_CRC32C is not set | ||
| 1006 | # CONFIG_CRYPTO_TEST is not set | ||
| 1007 | |||
| 1008 | # | ||
| 1009 | # Hardware crypto devices | ||
| 1010 | # | ||
| 1011 | |||
| 1012 | # | ||
| 1013 | # Library routines | ||
| 1014 | # | ||
| 1015 | # CONFIG_CRC_CCITT is not set | ||
| 1016 | # CONFIG_CRC16 is not set | ||
| 1017 | CONFIG_CRC32=y | ||
| 1018 | # CONFIG_LIBCRC32C is not set | ||
| 1019 | CONFIG_ZLIB_INFLATE=m | ||
| 1020 | CONFIG_ZLIB_DEFLATE=m | ||
| 1021 | CONFIG_TEXTSEARCH=y | ||
| 1022 | CONFIG_TEXTSEARCH_KMP=m | ||
| 1023 | CONFIG_TEXTSEARCH_BM=m | ||
| 1024 | CONFIG_TEXTSEARCH_FSM=m | ||
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig new file mode 100644 index 000000000000..6323065fbf2c --- /dev/null +++ b/arch/powerpc/configs/g5_defconfig | |||
| @@ -0,0 +1,1392 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.14-rc4 | ||
| 4 | # Thu Oct 20 08:30:23 2005 | ||
| 5 | # | ||
| 6 | CONFIG_64BIT=y | ||
| 7 | CONFIG_MMU=y | ||
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 10 | CONFIG_GENERIC_ISA_DMA=y | ||
| 11 | CONFIG_EARLY_PRINTK=y | ||
| 12 | CONFIG_COMPAT=y | ||
| 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
| 16 | |||
| 17 | # | ||
| 18 | # Code maturity level options | ||
| 19 | # | ||
| 20 | CONFIG_EXPERIMENTAL=y | ||
| 21 | CONFIG_CLEAN_COMPILE=y | ||
| 22 | CONFIG_LOCK_KERNEL=y | ||
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 24 | |||
| 25 | # | ||
| 26 | # General setup | ||
| 27 | # | ||
| 28 | CONFIG_LOCALVERSION="" | ||
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 30 | CONFIG_SWAP=y | ||
| 31 | CONFIG_SYSVIPC=y | ||
| 32 | CONFIG_POSIX_MQUEUE=y | ||
| 33 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
| 34 | CONFIG_SYSCTL=y | ||
| 35 | # CONFIG_AUDIT is not set | ||
| 36 | CONFIG_HOTPLUG=y | ||
| 37 | CONFIG_KOBJECT_UEVENT=y | ||
| 38 | CONFIG_IKCONFIG=y | ||
| 39 | CONFIG_IKCONFIG_PROC=y | ||
| 40 | # CONFIG_CPUSETS is not set | ||
| 41 | CONFIG_INITRAMFS_SOURCE="" | ||
| 42 | # CONFIG_EMBEDDED is not set | ||
| 43 | CONFIG_KALLSYMS=y | ||
| 44 | # CONFIG_KALLSYMS_ALL is not set | ||
| 45 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 46 | CONFIG_PRINTK=y | ||
| 47 | CONFIG_BUG=y | ||
| 48 | CONFIG_BASE_FULL=y | ||
| 49 | CONFIG_FUTEX=y | ||
| 50 | CONFIG_EPOLL=y | ||
| 51 | CONFIG_SHMEM=y | ||
| 52 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
| 53 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 54 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 55 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 56 | # CONFIG_TINY_SHMEM is not set | ||
| 57 | CONFIG_BASE_SMALL=0 | ||
| 58 | |||
| 59 | # | ||
| 60 | # Loadable module support | ||
| 61 | # | ||
| 62 | CONFIG_MODULES=y | ||
| 63 | CONFIG_MODULE_UNLOAD=y | ||
| 64 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
| 65 | CONFIG_OBSOLETE_MODPARM=y | ||
| 66 | CONFIG_MODVERSIONS=y | ||
| 67 | CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 68 | CONFIG_KMOD=y | ||
| 69 | CONFIG_STOP_MACHINE=y | ||
| 70 | CONFIG_SYSVIPC_COMPAT=y | ||
| 71 | |||
| 72 | # | ||
| 73 | # Platform support | ||
| 74 | # | ||
| 75 | # CONFIG_PPC_ISERIES is not set | ||
| 76 | CONFIG_PPC_MULTIPLATFORM=y | ||
| 77 | # CONFIG_PPC_PSERIES is not set | ||
| 78 | # CONFIG_PPC_BPA is not set | ||
| 79 | CONFIG_PPC_PMAC=y | ||
| 80 | # CONFIG_PPC_MAPLE is not set | ||
| 81 | CONFIG_PPC=y | ||
| 82 | CONFIG_PPC64=y | ||
| 83 | CONFIG_PPC_OF=y | ||
| 84 | CONFIG_MPIC=y | ||
| 85 | CONFIG_ALTIVEC=y | ||
| 86 | CONFIG_KEXEC=y | ||
| 87 | CONFIG_U3_DART=y | ||
| 88 | CONFIG_PPC_PMAC64=y | ||
| 89 | CONFIG_BOOTX_TEXT=y | ||
| 90 | CONFIG_POWER4_ONLY=y | ||
| 91 | CONFIG_IOMMU_VMERGE=y | ||
| 92 | CONFIG_SMP=y | ||
| 93 | CONFIG_NR_CPUS=2 | ||
| 94 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
| 95 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 96 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 97 | CONFIG_FLATMEM_MANUAL=y | ||
| 98 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 99 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 100 | CONFIG_FLATMEM=y | ||
| 101 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 102 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 103 | # CONFIG_NUMA is not set | ||
| 104 | # CONFIG_SCHED_SMT is not set | ||
| 105 | CONFIG_PREEMPT_NONE=y | ||
| 106 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 107 | # CONFIG_PREEMPT is not set | ||
| 108 | # CONFIG_PREEMPT_BKL is not set | ||
| 109 | # CONFIG_HZ_100 is not set | ||
| 110 | CONFIG_HZ_250=y | ||
| 111 | # CONFIG_HZ_1000 is not set | ||
| 112 | CONFIG_HZ=250 | ||
| 113 | CONFIG_GENERIC_HARDIRQS=y | ||
| 114 | CONFIG_SECCOMP=y | ||
| 115 | CONFIG_BINFMT_ELF=y | ||
| 116 | # CONFIG_BINFMT_MISC is not set | ||
| 117 | # CONFIG_HOTPLUG_CPU is not set | ||
| 118 | CONFIG_PROC_DEVICETREE=y | ||
| 119 | # CONFIG_CMDLINE_BOOL is not set | ||
| 120 | CONFIG_ISA_DMA_API=y | ||
| 121 | |||
| 122 | # | ||
| 123 | # Bus Options | ||
| 124 | # | ||
| 125 | CONFIG_PCI=y | ||
| 126 | CONFIG_PCI_DOMAINS=y | ||
| 127 | CONFIG_PCI_LEGACY_PROC=y | ||
| 128 | # CONFIG_PCI_DEBUG is not set | ||
| 129 | |||
| 130 | # | ||
| 131 | # PCCARD (PCMCIA/CardBus) support | ||
| 132 | # | ||
| 133 | # CONFIG_PCCARD is not set | ||
| 134 | |||
| 135 | # | ||
| 136 | # PCI Hotplug Support | ||
| 137 | # | ||
| 138 | # CONFIG_HOTPLUG_PCI is not set | ||
| 139 | |||
| 140 | # | ||
| 141 | # Networking | ||
| 142 | # | ||
| 143 | CONFIG_NET=y | ||
| 144 | |||
| 145 | # | ||
| 146 | # Networking options | ||
| 147 | # | ||
| 148 | CONFIG_PACKET=y | ||
| 149 | # CONFIG_PACKET_MMAP is not set | ||
| 150 | CONFIG_UNIX=y | ||
| 151 | CONFIG_XFRM=y | ||
| 152 | CONFIG_XFRM_USER=m | ||
| 153 | CONFIG_NET_KEY=m | ||
| 154 | CONFIG_INET=y | ||
| 155 | CONFIG_IP_MULTICAST=y | ||
| 156 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 157 | CONFIG_IP_FIB_HASH=y | ||
| 158 | # CONFIG_IP_PNP is not set | ||
| 159 | CONFIG_NET_IPIP=y | ||
| 160 | # CONFIG_NET_IPGRE is not set | ||
| 161 | # CONFIG_IP_MROUTE is not set | ||
| 162 | # CONFIG_ARPD is not set | ||
| 163 | CONFIG_SYN_COOKIES=y | ||
| 164 | CONFIG_INET_AH=m | ||
| 165 | CONFIG_INET_ESP=m | ||
| 166 | CONFIG_INET_IPCOMP=m | ||
| 167 | CONFIG_INET_TUNNEL=y | ||
| 168 | CONFIG_INET_DIAG=y | ||
| 169 | CONFIG_INET_TCP_DIAG=y | ||
| 170 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 171 | CONFIG_TCP_CONG_BIC=y | ||
| 172 | |||
| 173 | # | ||
| 174 | # IP: Virtual Server Configuration | ||
| 175 | # | ||
| 176 | # CONFIG_IP_VS is not set | ||
| 177 | # CONFIG_IPV6 is not set | ||
| 178 | CONFIG_NETFILTER=y | ||
| 179 | # CONFIG_NETFILTER_DEBUG is not set | ||
| 180 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 181 | |||
| 182 | # | ||
| 183 | # IP: Netfilter Configuration | ||
| 184 | # | ||
| 185 | CONFIG_IP_NF_CONNTRACK=m | ||
| 186 | CONFIG_IP_NF_CT_ACCT=y | ||
| 187 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
| 188 | CONFIG_IP_NF_CONNTRACK_EVENTS=y | ||
| 189 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
| 190 | CONFIG_IP_NF_FTP=m | ||
| 191 | CONFIG_IP_NF_IRC=m | ||
| 192 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 193 | CONFIG_IP_NF_TFTP=m | ||
| 194 | CONFIG_IP_NF_AMANDA=m | ||
| 195 | # CONFIG_IP_NF_PPTP is not set | ||
| 196 | CONFIG_IP_NF_QUEUE=m | ||
| 197 | CONFIG_IP_NF_IPTABLES=m | ||
| 198 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
| 199 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
| 200 | CONFIG_IP_NF_MATCH_MAC=m | ||
| 201 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
| 202 | CONFIG_IP_NF_MATCH_MARK=m | ||
| 203 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
| 204 | CONFIG_IP_NF_MATCH_TOS=m | ||
| 205 | CONFIG_IP_NF_MATCH_RECENT=m | ||
| 206 | CONFIG_IP_NF_MATCH_ECN=m | ||
| 207 | CONFIG_IP_NF_MATCH_DSCP=m | ||
| 208 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
| 209 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
| 210 | CONFIG_IP_NF_MATCH_TTL=m | ||
| 211 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
| 212 | CONFIG_IP_NF_MATCH_HELPER=m | ||
| 213 | CONFIG_IP_NF_MATCH_STATE=m | ||
| 214 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
| 215 | CONFIG_IP_NF_MATCH_OWNER=m | ||
| 216 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
| 217 | CONFIG_IP_NF_MATCH_REALM=m | ||
| 218 | CONFIG_IP_NF_MATCH_SCTP=m | ||
| 219 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 220 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
| 221 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
| 222 | CONFIG_IP_NF_MATCH_CONNBYTES=m | ||
| 223 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
| 224 | CONFIG_IP_NF_MATCH_STRING=m | ||
| 225 | CONFIG_IP_NF_FILTER=m | ||
| 226 | CONFIG_IP_NF_TARGET_REJECT=m | ||
| 227 | CONFIG_IP_NF_TARGET_LOG=m | ||
| 228 | CONFIG_IP_NF_TARGET_ULOG=m | ||
| 229 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
| 230 | CONFIG_IP_NF_TARGET_NFQUEUE=m | ||
| 231 | CONFIG_IP_NF_NAT=m | ||
| 232 | CONFIG_IP_NF_NAT_NEEDED=y | ||
| 233 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
| 234 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
| 235 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
| 236 | CONFIG_IP_NF_TARGET_SAME=m | ||
| 237 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
| 238 | CONFIG_IP_NF_NAT_IRC=m | ||
| 239 | CONFIG_IP_NF_NAT_FTP=m | ||
| 240 | CONFIG_IP_NF_NAT_TFTP=m | ||
| 241 | CONFIG_IP_NF_NAT_AMANDA=m | ||
| 242 | CONFIG_IP_NF_MANGLE=m | ||
| 243 | CONFIG_IP_NF_TARGET_TOS=m | ||
| 244 | CONFIG_IP_NF_TARGET_ECN=m | ||
| 245 | CONFIG_IP_NF_TARGET_DSCP=m | ||
| 246 | CONFIG_IP_NF_TARGET_MARK=m | ||
| 247 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
| 248 | CONFIG_IP_NF_TARGET_TTL=m | ||
| 249 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
| 250 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
| 251 | CONFIG_IP_NF_RAW=m | ||
| 252 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
| 253 | CONFIG_IP_NF_ARPTABLES=m | ||
| 254 | CONFIG_IP_NF_ARPFILTER=m | ||
| 255 | CONFIG_IP_NF_ARP_MANGLE=m | ||
| 256 | |||
| 257 | # | ||
| 258 | # DCCP Configuration (EXPERIMENTAL) | ||
| 259 | # | ||
| 260 | # CONFIG_IP_DCCP is not set | ||
| 261 | |||
| 262 | # | ||
| 263 | # SCTP Configuration (EXPERIMENTAL) | ||
| 264 | # | ||
| 265 | # CONFIG_IP_SCTP is not set | ||
| 266 | # CONFIG_ATM is not set | ||
| 267 | # CONFIG_BRIDGE is not set | ||
| 268 | # CONFIG_VLAN_8021Q is not set | ||
| 269 | # CONFIG_DECNET is not set | ||
| 270 | CONFIG_LLC=y | ||
| 271 | # CONFIG_LLC2 is not set | ||
| 272 | # CONFIG_IPX is not set | ||
| 273 | # CONFIG_ATALK is not set | ||
| 274 | # CONFIG_X25 is not set | ||
| 275 | # CONFIG_LAPB is not set | ||
| 276 | # CONFIG_NET_DIVERT is not set | ||
| 277 | # CONFIG_ECONET is not set | ||
| 278 | # CONFIG_WAN_ROUTER is not set | ||
| 279 | # CONFIG_NET_SCHED is not set | ||
| 280 | CONFIG_NET_CLS_ROUTE=y | ||
| 281 | |||
| 282 | # | ||
| 283 | # Network testing | ||
| 284 | # | ||
| 285 | # CONFIG_NET_PKTGEN is not set | ||
| 286 | # CONFIG_HAMRADIO is not set | ||
| 287 | # CONFIG_IRDA is not set | ||
| 288 | # CONFIG_BT is not set | ||
| 289 | # CONFIG_IEEE80211 is not set | ||
| 290 | |||
| 291 | # | ||
| 292 | # Device Drivers | ||
| 293 | # | ||
| 294 | |||
| 295 | # | ||
| 296 | # Generic Driver Options | ||
| 297 | # | ||
| 298 | CONFIG_STANDALONE=y | ||
| 299 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 300 | CONFIG_FW_LOADER=y | ||
| 301 | # CONFIG_DEBUG_DRIVER is not set | ||
| 302 | |||
| 303 | # | ||
| 304 | # Connector - unified userspace <-> kernelspace linker | ||
| 305 | # | ||
| 306 | # CONFIG_CONNECTOR is not set | ||
| 307 | |||
| 308 | # | ||
| 309 | # Memory Technology Devices (MTD) | ||
| 310 | # | ||
| 311 | # CONFIG_MTD is not set | ||
| 312 | |||
| 313 | # | ||
| 314 | # Parallel port support | ||
| 315 | # | ||
| 316 | # CONFIG_PARPORT is not set | ||
| 317 | |||
| 318 | # | ||
| 319 | # Plug and Play support | ||
| 320 | # | ||
| 321 | |||
| 322 | # | ||
| 323 | # Block devices | ||
| 324 | # | ||
| 325 | # CONFIG_BLK_DEV_FD is not set | ||
| 326 | # CONFIG_BLK_CPQ_DA is not set | ||
| 327 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 328 | # CONFIG_BLK_DEV_DAC960 is not set | ||
| 329 | # CONFIG_BLK_DEV_UMEM is not set | ||
| 330 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 331 | CONFIG_BLK_DEV_LOOP=y | ||
| 332 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 333 | CONFIG_BLK_DEV_NBD=m | ||
| 334 | # CONFIG_BLK_DEV_SX8 is not set | ||
| 335 | # CONFIG_BLK_DEV_UB is not set | ||
| 336 | CONFIG_BLK_DEV_RAM=y | ||
| 337 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 338 | CONFIG_BLK_DEV_RAM_SIZE=65536 | ||
| 339 | CONFIG_BLK_DEV_INITRD=y | ||
| 340 | CONFIG_CDROM_PKTCDVD=m | ||
| 341 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
| 342 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
| 343 | |||
| 344 | # | ||
| 345 | # IO Schedulers | ||
| 346 | # | ||
| 347 | CONFIG_IOSCHED_NOOP=y | ||
| 348 | CONFIG_IOSCHED_AS=y | ||
| 349 | CONFIG_IOSCHED_DEADLINE=y | ||
| 350 | CONFIG_IOSCHED_CFQ=y | ||
| 351 | # CONFIG_ATA_OVER_ETH is not set | ||
| 352 | |||
| 353 | # | ||
| 354 | # ATA/ATAPI/MFM/RLL support | ||
| 355 | # | ||
| 356 | CONFIG_IDE=y | ||
| 357 | CONFIG_BLK_DEV_IDE=y | ||
| 358 | |||
| 359 | # | ||
| 360 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
| 361 | # | ||
| 362 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
| 363 | CONFIG_BLK_DEV_IDEDISK=y | ||
| 364 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
| 365 | CONFIG_BLK_DEV_IDECD=y | ||
| 366 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
| 367 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
| 368 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
| 369 | # CONFIG_IDE_TASK_IOCTL is not set | ||
| 370 | |||
| 371 | # | ||
| 372 | # IDE chipset support/bugfixes | ||
| 373 | # | ||
| 374 | CONFIG_IDE_GENERIC=y | ||
| 375 | CONFIG_BLK_DEV_IDEPCI=y | ||
| 376 | # CONFIG_IDEPCI_SHARE_IRQ is not set | ||
| 377 | # CONFIG_BLK_DEV_OFFBOARD is not set | ||
| 378 | # CONFIG_BLK_DEV_GENERIC is not set | ||
| 379 | # CONFIG_BLK_DEV_OPTI621 is not set | ||
| 380 | # CONFIG_BLK_DEV_SL82C105 is not set | ||
| 381 | CONFIG_BLK_DEV_IDEDMA_PCI=y | ||
| 382 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | ||
| 383 | CONFIG_IDEDMA_PCI_AUTO=y | ||
| 384 | # CONFIG_IDEDMA_ONLYDISK is not set | ||
| 385 | # CONFIG_BLK_DEV_AEC62XX is not set | ||
| 386 | # CONFIG_BLK_DEV_ALI15X3 is not set | ||
| 387 | # CONFIG_BLK_DEV_AMD74XX is not set | ||
| 388 | # CONFIG_BLK_DEV_CMD64X is not set | ||
| 389 | # CONFIG_BLK_DEV_TRIFLEX is not set | ||
| 390 | # CONFIG_BLK_DEV_CY82C693 is not set | ||
| 391 | # CONFIG_BLK_DEV_CS5520 is not set | ||
| 392 | # CONFIG_BLK_DEV_CS5530 is not set | ||
| 393 | # CONFIG_BLK_DEV_HPT34X is not set | ||
| 394 | # CONFIG_BLK_DEV_HPT366 is not set | ||
| 395 | # CONFIG_BLK_DEV_SC1200 is not set | ||
| 396 | # CONFIG_BLK_DEV_PIIX is not set | ||
| 397 | # CONFIG_BLK_DEV_IT821X is not set | ||
| 398 | # CONFIG_BLK_DEV_NS87415 is not set | ||
| 399 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | ||
| 400 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | ||
| 401 | # CONFIG_BLK_DEV_SVWKS is not set | ||
| 402 | # CONFIG_BLK_DEV_SIIMAGE is not set | ||
| 403 | # CONFIG_BLK_DEV_SLC90E66 is not set | ||
| 404 | # CONFIG_BLK_DEV_TRM290 is not set | ||
| 405 | # CONFIG_BLK_DEV_VIA82CXXX is not set | ||
| 406 | CONFIG_BLK_DEV_IDE_PMAC=y | ||
| 407 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | ||
| 408 | CONFIG_BLK_DEV_IDEDMA_PMAC=y | ||
| 409 | # CONFIG_BLK_DEV_IDE_PMAC_BLINK is not set | ||
| 410 | # CONFIG_IDE_ARM is not set | ||
| 411 | CONFIG_BLK_DEV_IDEDMA=y | ||
| 412 | # CONFIG_IDEDMA_IVB is not set | ||
| 413 | CONFIG_IDEDMA_AUTO=y | ||
| 414 | # CONFIG_BLK_DEV_HD is not set | ||
| 415 | |||
| 416 | # | ||
| 417 | # SCSI device support | ||
| 418 | # | ||
| 419 | # CONFIG_RAID_ATTRS is not set | ||
| 420 | CONFIG_SCSI=y | ||
| 421 | CONFIG_SCSI_PROC_FS=y | ||
| 422 | |||
| 423 | # | ||
| 424 | # SCSI support type (disk, tape, CD-ROM) | ||
| 425 | # | ||
| 426 | CONFIG_BLK_DEV_SD=y | ||
| 427 | CONFIG_CHR_DEV_ST=y | ||
| 428 | # CONFIG_CHR_DEV_OSST is not set | ||
| 429 | CONFIG_BLK_DEV_SR=y | ||
| 430 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
| 431 | CONFIG_CHR_DEV_SG=y | ||
| 432 | # CONFIG_CHR_DEV_SCH is not set | ||
| 433 | |||
| 434 | # | ||
| 435 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
| 436 | # | ||
| 437 | CONFIG_SCSI_MULTI_LUN=y | ||
| 438 | CONFIG_SCSI_CONSTANTS=y | ||
| 439 | # CONFIG_SCSI_LOGGING is not set | ||
| 440 | |||
| 441 | # | ||
| 442 | # SCSI Transport Attributes | ||
| 443 | # | ||
| 444 | CONFIG_SCSI_SPI_ATTRS=y | ||
| 445 | # CONFIG_SCSI_FC_ATTRS is not set | ||
| 446 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 447 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 448 | |||
| 449 | # | ||
| 450 | # SCSI low-level drivers | ||
| 451 | # | ||
| 452 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
| 453 | # CONFIG_SCSI_3W_9XXX is not set | ||
| 454 | # CONFIG_SCSI_ACARD is not set | ||
| 455 | # CONFIG_SCSI_AACRAID is not set | ||
| 456 | # CONFIG_SCSI_AIC7XXX is not set | ||
| 457 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
| 458 | # CONFIG_SCSI_AIC79XX is not set | ||
| 459 | # CONFIG_MEGARAID_NEWGEN is not set | ||
| 460 | # CONFIG_MEGARAID_LEGACY is not set | ||
| 461 | # CONFIG_MEGARAID_SAS is not set | ||
| 462 | CONFIG_SCSI_SATA=y | ||
| 463 | # CONFIG_SCSI_SATA_AHCI is not set | ||
| 464 | CONFIG_SCSI_SATA_SVW=y | ||
| 465 | # CONFIG_SCSI_ATA_PIIX is not set | ||
| 466 | # CONFIG_SCSI_SATA_MV is not set | ||
| 467 | # CONFIG_SCSI_SATA_NV is not set | ||
| 468 | # CONFIG_SCSI_SATA_PROMISE is not set | ||
| 469 | # CONFIG_SCSI_SATA_QSTOR is not set | ||
| 470 | # CONFIG_SCSI_SATA_SX4 is not set | ||
| 471 | # CONFIG_SCSI_SATA_SIL is not set | ||
| 472 | # CONFIG_SCSI_SATA_SIS is not set | ||
| 473 | # CONFIG_SCSI_SATA_ULI is not set | ||
| 474 | # CONFIG_SCSI_SATA_VIA is not set | ||
| 475 | # CONFIG_SCSI_SATA_VITESSE is not set | ||
| 476 | # CONFIG_SCSI_BUSLOGIC is not set | ||
| 477 | # CONFIG_SCSI_DMX3191D is not set | ||
| 478 | # CONFIG_SCSI_EATA is not set | ||
| 479 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
| 480 | # CONFIG_SCSI_GDTH is not set | ||
| 481 | # CONFIG_SCSI_IPS is not set | ||
| 482 | # CONFIG_SCSI_INITIO is not set | ||
| 483 | # CONFIG_SCSI_INIA100 is not set | ||
| 484 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
| 485 | # CONFIG_SCSI_IPR is not set | ||
| 486 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
| 487 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
| 488 | CONFIG_SCSI_QLA2XXX=y | ||
| 489 | # CONFIG_SCSI_QLA21XX is not set | ||
| 490 | # CONFIG_SCSI_QLA22XX is not set | ||
| 491 | # CONFIG_SCSI_QLA2300 is not set | ||
| 492 | # CONFIG_SCSI_QLA2322 is not set | ||
| 493 | # CONFIG_SCSI_QLA6312 is not set | ||
| 494 | # CONFIG_SCSI_QLA24XX is not set | ||
| 495 | # CONFIG_SCSI_LPFC is not set | ||
| 496 | # CONFIG_SCSI_DC395x is not set | ||
| 497 | # CONFIG_SCSI_DC390T is not set | ||
| 498 | # CONFIG_SCSI_DEBUG is not set | ||
| 499 | |||
| 500 | # | ||
| 501 | # Multi-device support (RAID and LVM) | ||
| 502 | # | ||
| 503 | CONFIG_MD=y | ||
| 504 | CONFIG_BLK_DEV_MD=y | ||
| 505 | CONFIG_MD_LINEAR=y | ||
| 506 | CONFIG_MD_RAID0=y | ||
| 507 | CONFIG_MD_RAID1=y | ||
| 508 | CONFIG_MD_RAID10=m | ||
| 509 | CONFIG_MD_RAID5=y | ||
| 510 | CONFIG_MD_RAID6=m | ||
| 511 | CONFIG_MD_MULTIPATH=m | ||
| 512 | CONFIG_MD_FAULTY=m | ||
| 513 | CONFIG_BLK_DEV_DM=y | ||
| 514 | CONFIG_DM_CRYPT=m | ||
| 515 | CONFIG_DM_SNAPSHOT=m | ||
| 516 | CONFIG_DM_MIRROR=m | ||
| 517 | CONFIG_DM_ZERO=m | ||
| 518 | # CONFIG_DM_MULTIPATH is not set | ||
| 519 | |||
| 520 | # | ||
| 521 | # Fusion MPT device support | ||
| 522 | # | ||
| 523 | # CONFIG_FUSION is not set | ||
| 524 | # CONFIG_FUSION_SPI is not set | ||
| 525 | # CONFIG_FUSION_FC is not set | ||
| 526 | # CONFIG_FUSION_SAS is not set | ||
| 527 | |||
| 528 | # | ||
| 529 | # IEEE 1394 (FireWire) support | ||
| 530 | # | ||
| 531 | CONFIG_IEEE1394=y | ||
| 532 | |||
| 533 | # | ||
| 534 | # Subsystem Options | ||
| 535 | # | ||
| 536 | # CONFIG_IEEE1394_VERBOSEDEBUG is not set | ||
| 537 | CONFIG_IEEE1394_OUI_DB=y | ||
| 538 | CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y | ||
| 539 | CONFIG_IEEE1394_CONFIG_ROM_IP1394=y | ||
| 540 | # CONFIG_IEEE1394_EXPORT_FULL_API is not set | ||
| 541 | |||
| 542 | # | ||
| 543 | # Device Drivers | ||
| 544 | # | ||
| 545 | # CONFIG_IEEE1394_PCILYNX is not set | ||
| 546 | CONFIG_IEEE1394_OHCI1394=y | ||
| 547 | |||
| 548 | # | ||
| 549 | # Protocol Drivers | ||
| 550 | # | ||
| 551 | CONFIG_IEEE1394_VIDEO1394=m | ||
| 552 | CONFIG_IEEE1394_SBP2=m | ||
| 553 | # CONFIG_IEEE1394_SBP2_PHYS_DMA is not set | ||
| 554 | CONFIG_IEEE1394_ETH1394=m | ||
| 555 | CONFIG_IEEE1394_DV1394=m | ||
| 556 | CONFIG_IEEE1394_RAWIO=y | ||
| 557 | # CONFIG_IEEE1394_CMP is not set | ||
| 558 | |||
| 559 | # | ||
| 560 | # I2O device support | ||
| 561 | # | ||
| 562 | # CONFIG_I2O is not set | ||
| 563 | |||
| 564 | # | ||
| 565 | # Macintosh device drivers | ||
| 566 | # | ||
| 567 | CONFIG_ADB_PMU=y | ||
| 568 | CONFIG_PMAC_SMU=y | ||
| 569 | CONFIG_THERM_PM72=y | ||
| 570 | |||
| 571 | # | ||
| 572 | # Network device support | ||
| 573 | # | ||
| 574 | CONFIG_NETDEVICES=y | ||
| 575 | CONFIG_DUMMY=m | ||
| 576 | CONFIG_BONDING=m | ||
| 577 | # CONFIG_EQUALIZER is not set | ||
| 578 | CONFIG_TUN=m | ||
| 579 | |||
| 580 | # | ||
| 581 | # ARCnet devices | ||
| 582 | # | ||
| 583 | # CONFIG_ARCNET is not set | ||
| 584 | |||
| 585 | # | ||
| 586 | # PHY device support | ||
| 587 | # | ||
| 588 | # CONFIG_PHYLIB is not set | ||
| 589 | |||
| 590 | # | ||
| 591 | # Ethernet (10 or 100Mbit) | ||
| 592 | # | ||
| 593 | CONFIG_NET_ETHERNET=y | ||
| 594 | CONFIG_MII=y | ||
| 595 | # CONFIG_HAPPYMEAL is not set | ||
| 596 | CONFIG_SUNGEM=y | ||
| 597 | # CONFIG_CASSINI is not set | ||
| 598 | # CONFIG_NET_VENDOR_3COM is not set | ||
| 599 | |||
| 600 | # | ||
| 601 | # Tulip family network device support | ||
| 602 | # | ||
| 603 | # CONFIG_NET_TULIP is not set | ||
| 604 | # CONFIG_HP100 is not set | ||
| 605 | # CONFIG_NET_PCI is not set | ||
| 606 | |||
| 607 | # | ||
| 608 | # Ethernet (1000 Mbit) | ||
| 609 | # | ||
| 610 | CONFIG_ACENIC=y | ||
| 611 | CONFIG_ACENIC_OMIT_TIGON_I=y | ||
| 612 | # CONFIG_DL2K is not set | ||
| 613 | CONFIG_E1000=y | ||
| 614 | # CONFIG_E1000_NAPI is not set | ||
| 615 | # CONFIG_NS83820 is not set | ||
| 616 | # CONFIG_HAMACHI is not set | ||
| 617 | # CONFIG_YELLOWFIN is not set | ||
| 618 | # CONFIG_R8169 is not set | ||
| 619 | # CONFIG_SIS190 is not set | ||
| 620 | # CONFIG_SKGE is not set | ||
| 621 | # CONFIG_SK98LIN is not set | ||
| 622 | CONFIG_TIGON3=m | ||
| 623 | # CONFIG_BNX2 is not set | ||
| 624 | # CONFIG_MV643XX_ETH is not set | ||
| 625 | |||
| 626 | # | ||
| 627 | # Ethernet (10000 Mbit) | ||
| 628 | # | ||
| 629 | # CONFIG_CHELSIO_T1 is not set | ||
| 630 | # CONFIG_IXGB is not set | ||
| 631 | # CONFIG_S2IO is not set | ||
| 632 | |||
| 633 | # | ||
| 634 | # Token Ring devices | ||
| 635 | # | ||
| 636 | CONFIG_TR=y | ||
| 637 | CONFIG_IBMOL=y | ||
| 638 | # CONFIG_3C359 is not set | ||
| 639 | # CONFIG_TMS380TR is not set | ||
| 640 | |||
| 641 | # | ||
| 642 | # Wireless LAN (non-hamradio) | ||
| 643 | # | ||
| 644 | # CONFIG_NET_RADIO is not set | ||
| 645 | |||
| 646 | # | ||
| 647 | # Wan interfaces | ||
| 648 | # | ||
| 649 | # CONFIG_WAN is not set | ||
| 650 | # CONFIG_FDDI is not set | ||
| 651 | # CONFIG_HIPPI is not set | ||
| 652 | CONFIG_PPP=m | ||
| 653 | # CONFIG_PPP_MULTILINK is not set | ||
| 654 | # CONFIG_PPP_FILTER is not set | ||
| 655 | CONFIG_PPP_ASYNC=m | ||
| 656 | CONFIG_PPP_SYNC_TTY=m | ||
| 657 | CONFIG_PPP_DEFLATE=m | ||
| 658 | CONFIG_PPP_BSDCOMP=m | ||
| 659 | CONFIG_PPPOE=m | ||
| 660 | # CONFIG_SLIP is not set | ||
| 661 | # CONFIG_NET_FC is not set | ||
| 662 | # CONFIG_SHAPER is not set | ||
| 663 | # CONFIG_NETCONSOLE is not set | ||
| 664 | # CONFIG_NETPOLL is not set | ||
| 665 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 666 | |||
| 667 | # | ||
| 668 | # ISDN subsystem | ||
| 669 | # | ||
| 670 | # CONFIG_ISDN is not set | ||
| 671 | |||
| 672 | # | ||
| 673 | # Telephony Support | ||
| 674 | # | ||
| 675 | # CONFIG_PHONE is not set | ||
| 676 | |||
| 677 | # | ||
| 678 | # Input device support | ||
| 679 | # | ||
| 680 | CONFIG_INPUT=y | ||
| 681 | |||
| 682 | # | ||
| 683 | # Userland interfaces | ||
| 684 | # | ||
| 685 | CONFIG_INPUT_MOUSEDEV=y | ||
| 686 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
| 687 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 688 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 689 | CONFIG_INPUT_JOYDEV=m | ||
| 690 | # CONFIG_INPUT_TSDEV is not set | ||
| 691 | CONFIG_INPUT_EVDEV=y | ||
| 692 | # CONFIG_INPUT_EVBUG is not set | ||
| 693 | |||
| 694 | # | ||
| 695 | # Input Device Drivers | ||
| 696 | # | ||
| 697 | CONFIG_INPUT_KEYBOARD=y | ||
| 698 | # CONFIG_KEYBOARD_ATKBD is not set | ||
| 699 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
| 700 | # CONFIG_KEYBOARD_LKKBD is not set | ||
| 701 | # CONFIG_KEYBOARD_XTKBD is not set | ||
| 702 | # CONFIG_KEYBOARD_NEWTON is not set | ||
| 703 | CONFIG_INPUT_MOUSE=y | ||
| 704 | # CONFIG_MOUSE_PS2 is not set | ||
| 705 | # CONFIG_MOUSE_SERIAL is not set | ||
| 706 | # CONFIG_MOUSE_VSXXXAA is not set | ||
| 707 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 708 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 709 | # CONFIG_INPUT_MISC is not set | ||
| 710 | |||
| 711 | # | ||
| 712 | # Hardware I/O ports | ||
| 713 | # | ||
| 714 | CONFIG_SERIO=y | ||
| 715 | # CONFIG_SERIO_I8042 is not set | ||
| 716 | # CONFIG_SERIO_SERPORT is not set | ||
| 717 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 718 | # CONFIG_SERIO_RAW is not set | ||
| 719 | # CONFIG_GAMEPORT is not set | ||
| 720 | |||
| 721 | # | ||
| 722 | # Character devices | ||
| 723 | # | ||
| 724 | CONFIG_VT=y | ||
| 725 | CONFIG_VT_CONSOLE=y | ||
| 726 | CONFIG_HW_CONSOLE=y | ||
| 727 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 728 | |||
| 729 | # | ||
| 730 | # Serial drivers | ||
| 731 | # | ||
| 732 | # CONFIG_SERIAL_8250 is not set | ||
| 733 | |||
| 734 | # | ||
| 735 | # Non-8250 serial port support | ||
| 736 | # | ||
| 737 | # CONFIG_SERIAL_PMACZILOG is not set | ||
| 738 | # CONFIG_SERIAL_JSM is not set | ||
| 739 | CONFIG_UNIX98_PTYS=y | ||
| 740 | CONFIG_LEGACY_PTYS=y | ||
| 741 | CONFIG_LEGACY_PTY_COUNT=256 | ||
| 742 | |||
| 743 | # | ||
| 744 | # IPMI | ||
| 745 | # | ||
| 746 | # CONFIG_IPMI_HANDLER is not set | ||
| 747 | |||
| 748 | # | ||
| 749 | # Watchdog Cards | ||
| 750 | # | ||
| 751 | # CONFIG_WATCHDOG is not set | ||
| 752 | # CONFIG_RTC is not set | ||
| 753 | # CONFIG_DTLK is not set | ||
| 754 | # CONFIG_R3964 is not set | ||
| 755 | # CONFIG_APPLICOM is not set | ||
| 756 | |||
| 757 | # | ||
| 758 | # Ftape, the floppy tape device driver | ||
| 759 | # | ||
| 760 | CONFIG_AGP=m | ||
| 761 | CONFIG_AGP_UNINORTH=m | ||
| 762 | # CONFIG_DRM is not set | ||
| 763 | CONFIG_RAW_DRIVER=y | ||
| 764 | CONFIG_MAX_RAW_DEVS=256 | ||
| 765 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 766 | |||
| 767 | # | ||
| 768 | # TPM devices | ||
| 769 | # | ||
| 770 | # CONFIG_TCG_TPM is not set | ||
| 771 | |||
| 772 | # | ||
| 773 | # I2C support | ||
| 774 | # | ||
| 775 | CONFIG_I2C=y | ||
| 776 | CONFIG_I2C_CHARDEV=y | ||
| 777 | |||
| 778 | # | ||
| 779 | # I2C Algorithms | ||
| 780 | # | ||
| 781 | CONFIG_I2C_ALGOBIT=y | ||
| 782 | # CONFIG_I2C_ALGOPCF is not set | ||
| 783 | # CONFIG_I2C_ALGOPCA is not set | ||
| 784 | |||
| 785 | # | ||
| 786 | # I2C Hardware Bus support | ||
| 787 | # | ||
| 788 | # CONFIG_I2C_ALI1535 is not set | ||
| 789 | # CONFIG_I2C_ALI1563 is not set | ||
| 790 | # CONFIG_I2C_ALI15X3 is not set | ||
| 791 | # CONFIG_I2C_AMD756 is not set | ||
| 792 | # CONFIG_I2C_AMD8111 is not set | ||
| 793 | # CONFIG_I2C_I801 is not set | ||
| 794 | # CONFIG_I2C_I810 is not set | ||
| 795 | # CONFIG_I2C_PIIX4 is not set | ||
| 796 | CONFIG_I2C_KEYWEST=y | ||
| 797 | CONFIG_I2C_PMAC_SMU=y | ||
| 798 | # CONFIG_I2C_NFORCE2 is not set | ||
| 799 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 800 | # CONFIG_I2C_PROSAVAGE is not set | ||
| 801 | # CONFIG_I2C_SAVAGE4 is not set | ||
| 802 | # CONFIG_SCx200_ACB is not set | ||
| 803 | # CONFIG_I2C_SIS5595 is not set | ||
| 804 | # CONFIG_I2C_SIS630 is not set | ||
| 805 | # CONFIG_I2C_SIS96X is not set | ||
| 806 | # CONFIG_I2C_STUB is not set | ||
| 807 | # CONFIG_I2C_VIA is not set | ||
| 808 | # CONFIG_I2C_VIAPRO is not set | ||
| 809 | # CONFIG_I2C_VOODOO3 is not set | ||
| 810 | # CONFIG_I2C_PCA_ISA is not set | ||
| 811 | |||
| 812 | # | ||
| 813 | # Miscellaneous I2C Chip support | ||
| 814 | # | ||
| 815 | # CONFIG_SENSORS_DS1337 is not set | ||
| 816 | # CONFIG_SENSORS_DS1374 is not set | ||
| 817 | # CONFIG_SENSORS_EEPROM is not set | ||
| 818 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 819 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 820 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 821 | # CONFIG_SENSORS_RTC8564 is not set | ||
| 822 | # CONFIG_SENSORS_MAX6875 is not set | ||
| 823 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 824 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 825 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 826 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 827 | |||
| 828 | # | ||
| 829 | # Dallas's 1-wire bus | ||
| 830 | # | ||
| 831 | # CONFIG_W1 is not set | ||
| 832 | |||
| 833 | # | ||
| 834 | # Hardware Monitoring support | ||
| 835 | # | ||
| 836 | # CONFIG_HWMON is not set | ||
| 837 | # CONFIG_HWMON_VID is not set | ||
| 838 | |||
| 839 | # | ||
| 840 | # Misc devices | ||
| 841 | # | ||
| 842 | |||
| 843 | # | ||
| 844 | # Multimedia Capabilities Port drivers | ||
| 845 | # | ||
| 846 | |||
| 847 | # | ||
| 848 | # Multimedia devices | ||
| 849 | # | ||
| 850 | # CONFIG_VIDEO_DEV is not set | ||
| 851 | |||
| 852 | # | ||
| 853 | # Digital Video Broadcasting Devices | ||
| 854 | # | ||
| 855 | # CONFIG_DVB is not set | ||
| 856 | |||
| 857 | # | ||
| 858 | # Graphics support | ||
| 859 | # | ||
| 860 | CONFIG_FB=y | ||
| 861 | CONFIG_FB_CFB_FILLRECT=y | ||
| 862 | CONFIG_FB_CFB_COPYAREA=y | ||
| 863 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 864 | CONFIG_FB_SOFT_CURSOR=y | ||
| 865 | CONFIG_FB_MACMODES=y | ||
| 866 | CONFIG_FB_MODE_HELPERS=y | ||
| 867 | CONFIG_FB_TILEBLITTING=y | ||
| 868 | # CONFIG_FB_CIRRUS is not set | ||
| 869 | # CONFIG_FB_PM2 is not set | ||
| 870 | # CONFIG_FB_CYBER2000 is not set | ||
| 871 | CONFIG_FB_OF=y | ||
| 872 | # CONFIG_FB_CONTROL is not set | ||
| 873 | # CONFIG_FB_PLATINUM is not set | ||
| 874 | # CONFIG_FB_VALKYRIE is not set | ||
| 875 | # CONFIG_FB_CT65550 is not set | ||
| 876 | # CONFIG_FB_ASILIANT is not set | ||
| 877 | # CONFIG_FB_IMSTT is not set | ||
| 878 | # CONFIG_FB_VGA16 is not set | ||
| 879 | # CONFIG_FB_NVIDIA is not set | ||
| 880 | CONFIG_FB_RIVA=y | ||
| 881 | # CONFIG_FB_RIVA_I2C is not set | ||
| 882 | # CONFIG_FB_RIVA_DEBUG is not set | ||
| 883 | # CONFIG_FB_MATROX is not set | ||
| 884 | # CONFIG_FB_RADEON_OLD is not set | ||
| 885 | CONFIG_FB_RADEON=y | ||
| 886 | CONFIG_FB_RADEON_I2C=y | ||
| 887 | # CONFIG_FB_RADEON_DEBUG is not set | ||
| 888 | # CONFIG_FB_ATY128 is not set | ||
| 889 | # CONFIG_FB_ATY is not set | ||
| 890 | # CONFIG_FB_SAVAGE is not set | ||
| 891 | # CONFIG_FB_SIS is not set | ||
| 892 | # CONFIG_FB_NEOMAGIC is not set | ||
| 893 | # CONFIG_FB_KYRO is not set | ||
| 894 | # CONFIG_FB_3DFX is not set | ||
| 895 | # CONFIG_FB_VOODOO1 is not set | ||
| 896 | # CONFIG_FB_CYBLA is not set | ||
| 897 | # CONFIG_FB_TRIDENT is not set | ||
| 898 | # CONFIG_FB_S1D13XXX is not set | ||
| 899 | # CONFIG_FB_VIRTUAL is not set | ||
| 900 | |||
| 901 | # | ||
| 902 | # Console display driver support | ||
| 903 | # | ||
| 904 | # CONFIG_VGA_CONSOLE is not set | ||
| 905 | CONFIG_DUMMY_CONSOLE=y | ||
| 906 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 907 | # CONFIG_FONTS is not set | ||
| 908 | CONFIG_FONT_8x8=y | ||
| 909 | CONFIG_FONT_8x16=y | ||
| 910 | |||
| 911 | # | ||
| 912 | # Logo configuration | ||
| 913 | # | ||
| 914 | CONFIG_LOGO=y | ||
| 915 | CONFIG_LOGO_LINUX_MONO=y | ||
| 916 | CONFIG_LOGO_LINUX_VGA16=y | ||
| 917 | CONFIG_LOGO_LINUX_CLUT224=y | ||
| 918 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
| 919 | CONFIG_BACKLIGHT_CLASS_DEVICE=m | ||
| 920 | CONFIG_BACKLIGHT_DEVICE=y | ||
| 921 | CONFIG_LCD_CLASS_DEVICE=m | ||
| 922 | CONFIG_LCD_DEVICE=y | ||
| 923 | |||
| 924 | # | ||
| 925 | # Sound | ||
| 926 | # | ||
| 927 | # CONFIG_SOUND is not set | ||
| 928 | |||
| 929 | # | ||
| 930 | # USB support | ||
| 931 | # | ||
| 932 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 933 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 934 | CONFIG_USB=y | ||
| 935 | # CONFIG_USB_DEBUG is not set | ||
| 936 | |||
| 937 | # | ||
| 938 | # Miscellaneous USB options | ||
| 939 | # | ||
| 940 | CONFIG_USB_DEVICEFS=y | ||
| 941 | # CONFIG_USB_BANDWIDTH is not set | ||
| 942 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
| 943 | # CONFIG_USB_OTG is not set | ||
| 944 | |||
| 945 | # | ||
| 946 | # USB Host Controller Drivers | ||
| 947 | # | ||
| 948 | CONFIG_USB_EHCI_HCD=y | ||
| 949 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
| 950 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | ||
| 951 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 952 | CONFIG_USB_OHCI_HCD=y | ||
| 953 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
| 954 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
| 955 | # CONFIG_USB_UHCI_HCD is not set | ||
| 956 | # CONFIG_USB_SL811_HCD is not set | ||
| 957 | |||
| 958 | # | ||
| 959 | # USB Device Class drivers | ||
| 960 | # | ||
| 961 | # CONFIG_USB_BLUETOOTH_TTY is not set | ||
| 962 | CONFIG_USB_ACM=m | ||
| 963 | CONFIG_USB_PRINTER=y | ||
| 964 | |||
| 965 | # | ||
| 966 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
| 967 | # | ||
| 968 | CONFIG_USB_STORAGE=y | ||
| 969 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
| 970 | CONFIG_USB_STORAGE_DATAFAB=y | ||
| 971 | CONFIG_USB_STORAGE_FREECOM=y | ||
| 972 | CONFIG_USB_STORAGE_ISD200=y | ||
| 973 | CONFIG_USB_STORAGE_DPCM=y | ||
| 974 | # CONFIG_USB_STORAGE_USBAT is not set | ||
| 975 | CONFIG_USB_STORAGE_SDDR09=y | ||
| 976 | CONFIG_USB_STORAGE_SDDR55=y | ||
| 977 | CONFIG_USB_STORAGE_JUMPSHOT=y | ||
| 978 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 979 | |||
| 980 | # | ||
| 981 | # USB Input Devices | ||
| 982 | # | ||
| 983 | CONFIG_USB_HID=y | ||
| 984 | CONFIG_USB_HIDINPUT=y | ||
| 985 | CONFIG_HID_FF=y | ||
| 986 | CONFIG_HID_PID=y | ||
| 987 | CONFIG_LOGITECH_FF=y | ||
| 988 | CONFIG_THRUSTMASTER_FF=y | ||
| 989 | CONFIG_USB_HIDDEV=y | ||
| 990 | # CONFIG_USB_AIPTEK is not set | ||
| 991 | # CONFIG_USB_WACOM is not set | ||
| 992 | # CONFIG_USB_ACECAD is not set | ||
| 993 | # CONFIG_USB_KBTAB is not set | ||
| 994 | # CONFIG_USB_POWERMATE is not set | ||
| 995 | # CONFIG_USB_MTOUCH is not set | ||
| 996 | # CONFIG_USB_ITMTOUCH is not set | ||
| 997 | # CONFIG_USB_EGALAX is not set | ||
| 998 | # CONFIG_USB_YEALINK is not set | ||
| 999 | # CONFIG_USB_XPAD is not set | ||
| 1000 | # CONFIG_USB_ATI_REMOTE is not set | ||
| 1001 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
| 1002 | # CONFIG_USB_APPLETOUCH is not set | ||
| 1003 | |||
| 1004 | # | ||
| 1005 | # USB Imaging devices | ||
| 1006 | # | ||
| 1007 | # CONFIG_USB_MDC800 is not set | ||
| 1008 | # CONFIG_USB_MICROTEK is not set | ||
| 1009 | |||
| 1010 | # | ||
| 1011 | # USB Multimedia devices | ||
| 1012 | # | ||
| 1013 | # CONFIG_USB_DABUSB is not set | ||
| 1014 | |||
| 1015 | # | ||
| 1016 | # Video4Linux support is needed for USB Multimedia device support | ||
| 1017 | # | ||
| 1018 | |||
| 1019 | # | ||
| 1020 | # USB Network Adapters | ||
| 1021 | # | ||
| 1022 | CONFIG_USB_CATC=m | ||
| 1023 | CONFIG_USB_KAWETH=m | ||
| 1024 | CONFIG_USB_PEGASUS=m | ||
| 1025 | CONFIG_USB_RTL8150=m | ||
| 1026 | CONFIG_USB_USBNET=m | ||
| 1027 | # CONFIG_USB_NET_AX8817X is not set | ||
| 1028 | CONFIG_USB_NET_CDCETHER=m | ||
| 1029 | # CONFIG_USB_NET_GL620A is not set | ||
| 1030 | # CONFIG_USB_NET_NET1080 is not set | ||
| 1031 | # CONFIG_USB_NET_PLUSB is not set | ||
| 1032 | # CONFIG_USB_NET_RNDIS_HOST is not set | ||
| 1033 | # CONFIG_USB_NET_CDC_SUBSET is not set | ||
| 1034 | # CONFIG_USB_NET_ZAURUS is not set | ||
| 1035 | CONFIG_USB_MON=y | ||
| 1036 | |||
| 1037 | # | ||
| 1038 | # USB port drivers | ||
| 1039 | # | ||
| 1040 | |||
| 1041 | # | ||
| 1042 | # USB Serial Converter support | ||
| 1043 | # | ||
| 1044 | CONFIG_USB_SERIAL=m | ||
| 1045 | CONFIG_USB_SERIAL_GENERIC=y | ||
| 1046 | # CONFIG_USB_SERIAL_AIRPRIME is not set | ||
| 1047 | CONFIG_USB_SERIAL_BELKIN=m | ||
| 1048 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m | ||
| 1049 | # CONFIG_USB_SERIAL_CP2101 is not set | ||
| 1050 | CONFIG_USB_SERIAL_CYPRESS_M8=m | ||
| 1051 | CONFIG_USB_SERIAL_EMPEG=m | ||
| 1052 | CONFIG_USB_SERIAL_FTDI_SIO=m | ||
| 1053 | CONFIG_USB_SERIAL_VISOR=m | ||
| 1054 | CONFIG_USB_SERIAL_IPAQ=m | ||
| 1055 | CONFIG_USB_SERIAL_IR=m | ||
| 1056 | CONFIG_USB_SERIAL_EDGEPORT=m | ||
| 1057 | CONFIG_USB_SERIAL_EDGEPORT_TI=m | ||
| 1058 | CONFIG_USB_SERIAL_GARMIN=m | ||
| 1059 | CONFIG_USB_SERIAL_IPW=m | ||
| 1060 | CONFIG_USB_SERIAL_KEYSPAN_PDA=m | ||
| 1061 | CONFIG_USB_SERIAL_KEYSPAN=m | ||
| 1062 | CONFIG_USB_SERIAL_KEYSPAN_MPR=y | ||
| 1063 | CONFIG_USB_SERIAL_KEYSPAN_USA28=y | ||
| 1064 | CONFIG_USB_SERIAL_KEYSPAN_USA28X=y | ||
| 1065 | CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y | ||
| 1066 | CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y | ||
| 1067 | CONFIG_USB_SERIAL_KEYSPAN_USA19=y | ||
| 1068 | CONFIG_USB_SERIAL_KEYSPAN_USA18X=y | ||
| 1069 | CONFIG_USB_SERIAL_KEYSPAN_USA19W=y | ||
| 1070 | CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y | ||
| 1071 | CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y | ||
| 1072 | CONFIG_USB_SERIAL_KEYSPAN_USA49W=y | ||
| 1073 | CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y | ||
| 1074 | CONFIG_USB_SERIAL_KLSI=m | ||
| 1075 | CONFIG_USB_SERIAL_KOBIL_SCT=m | ||
| 1076 | CONFIG_USB_SERIAL_MCT_U232=m | ||
| 1077 | CONFIG_USB_SERIAL_PL2303=m | ||
| 1078 | # CONFIG_USB_SERIAL_HP4X is not set | ||
| 1079 | CONFIG_USB_SERIAL_SAFE=m | ||
| 1080 | CONFIG_USB_SERIAL_SAFE_PADDED=y | ||
| 1081 | CONFIG_USB_SERIAL_TI=m | ||
| 1082 | CONFIG_USB_SERIAL_CYBERJACK=m | ||
| 1083 | CONFIG_USB_SERIAL_XIRCOM=m | ||
| 1084 | CONFIG_USB_SERIAL_OMNINET=m | ||
| 1085 | CONFIG_USB_EZUSB=y | ||
| 1086 | |||
| 1087 | # | ||
| 1088 | # USB Miscellaneous drivers | ||
| 1089 | # | ||
| 1090 | # CONFIG_USB_EMI62 is not set | ||
| 1091 | # CONFIG_USB_EMI26 is not set | ||
| 1092 | # CONFIG_USB_AUERSWALD is not set | ||
| 1093 | # CONFIG_USB_RIO500 is not set | ||
| 1094 | # CONFIG_USB_LEGOTOWER is not set | ||
| 1095 | # CONFIG_USB_LCD is not set | ||
| 1096 | # CONFIG_USB_LED is not set | ||
| 1097 | # CONFIG_USB_CYTHERM is not set | ||
| 1098 | # CONFIG_USB_PHIDGETKIT is not set | ||
| 1099 | # CONFIG_USB_PHIDGETSERVO is not set | ||
| 1100 | # CONFIG_USB_IDMOUSE is not set | ||
| 1101 | # CONFIG_USB_SISUSBVGA is not set | ||
| 1102 | # CONFIG_USB_LD is not set | ||
| 1103 | # CONFIG_USB_TEST is not set | ||
| 1104 | |||
| 1105 | # | ||
| 1106 | # USB DSL modem support | ||
| 1107 | # | ||
| 1108 | |||
| 1109 | # | ||
| 1110 | # USB Gadget Support | ||
| 1111 | # | ||
| 1112 | # CONFIG_USB_GADGET is not set | ||
| 1113 | |||
| 1114 | # | ||
| 1115 | # MMC/SD Card support | ||
| 1116 | # | ||
| 1117 | # CONFIG_MMC is not set | ||
| 1118 | |||
| 1119 | # | ||
| 1120 | # InfiniBand support | ||
| 1121 | # | ||
| 1122 | # CONFIG_INFINIBAND is not set | ||
| 1123 | |||
| 1124 | # | ||
| 1125 | # SN Devices | ||
| 1126 | # | ||
| 1127 | |||
| 1128 | # | ||
| 1129 | # File systems | ||
| 1130 | # | ||
| 1131 | CONFIG_EXT2_FS=y | ||
| 1132 | CONFIG_EXT2_FS_XATTR=y | ||
| 1133 | CONFIG_EXT2_FS_POSIX_ACL=y | ||
| 1134 | CONFIG_EXT2_FS_SECURITY=y | ||
| 1135 | CONFIG_EXT2_FS_XIP=y | ||
| 1136 | CONFIG_FS_XIP=y | ||
| 1137 | CONFIG_EXT3_FS=y | ||
| 1138 | CONFIG_EXT3_FS_XATTR=y | ||
| 1139 | CONFIG_EXT3_FS_POSIX_ACL=y | ||
| 1140 | CONFIG_EXT3_FS_SECURITY=y | ||
| 1141 | CONFIG_JBD=y | ||
| 1142 | # CONFIG_JBD_DEBUG is not set | ||
| 1143 | CONFIG_FS_MBCACHE=y | ||
| 1144 | CONFIG_REISERFS_FS=y | ||
| 1145 | # CONFIG_REISERFS_CHECK is not set | ||
| 1146 | # CONFIG_REISERFS_PROC_INFO is not set | ||
| 1147 | CONFIG_REISERFS_FS_XATTR=y | ||
| 1148 | CONFIG_REISERFS_FS_POSIX_ACL=y | ||
| 1149 | CONFIG_REISERFS_FS_SECURITY=y | ||
| 1150 | # CONFIG_JFS_FS is not set | ||
| 1151 | CONFIG_FS_POSIX_ACL=y | ||
| 1152 | CONFIG_XFS_FS=m | ||
| 1153 | CONFIG_XFS_EXPORT=y | ||
| 1154 | # CONFIG_XFS_QUOTA is not set | ||
| 1155 | CONFIG_XFS_SECURITY=y | ||
| 1156 | CONFIG_XFS_POSIX_ACL=y | ||
| 1157 | # CONFIG_XFS_RT is not set | ||
| 1158 | # CONFIG_MINIX_FS is not set | ||
| 1159 | # CONFIG_ROMFS_FS is not set | ||
| 1160 | CONFIG_INOTIFY=y | ||
| 1161 | # CONFIG_QUOTA is not set | ||
| 1162 | CONFIG_DNOTIFY=y | ||
| 1163 | CONFIG_AUTOFS_FS=m | ||
| 1164 | # CONFIG_AUTOFS4_FS is not set | ||
| 1165 | # CONFIG_FUSE_FS is not set | ||
| 1166 | |||
| 1167 | # | ||
| 1168 | # CD-ROM/DVD Filesystems | ||
| 1169 | # | ||
| 1170 | CONFIG_ISO9660_FS=y | ||
| 1171 | CONFIG_JOLIET=y | ||
| 1172 | CONFIG_ZISOFS=y | ||
| 1173 | CONFIG_ZISOFS_FS=y | ||
| 1174 | CONFIG_UDF_FS=m | ||
| 1175 | CONFIG_UDF_NLS=y | ||
| 1176 | |||
| 1177 | # | ||
| 1178 | # DOS/FAT/NT Filesystems | ||
| 1179 | # | ||
| 1180 | CONFIG_FAT_FS=y | ||
| 1181 | CONFIG_MSDOS_FS=y | ||
| 1182 | CONFIG_VFAT_FS=y | ||
| 1183 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 1184 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1185 | # CONFIG_NTFS_FS is not set | ||
| 1186 | |||
| 1187 | # | ||
| 1188 | # Pseudo filesystems | ||
| 1189 | # | ||
| 1190 | CONFIG_PROC_FS=y | ||
| 1191 | CONFIG_PROC_KCORE=y | ||
| 1192 | CONFIG_SYSFS=y | ||
| 1193 | CONFIG_TMPFS=y | ||
| 1194 | CONFIG_HUGETLBFS=y | ||
| 1195 | CONFIG_HUGETLB_PAGE=y | ||
| 1196 | CONFIG_RAMFS=y | ||
| 1197 | # CONFIG_RELAYFS_FS is not set | ||
| 1198 | |||
| 1199 | # | ||
| 1200 | # Miscellaneous filesystems | ||
| 1201 | # | ||
| 1202 | # CONFIG_ADFS_FS is not set | ||
| 1203 | # CONFIG_AFFS_FS is not set | ||
| 1204 | CONFIG_HFS_FS=m | ||
| 1205 | CONFIG_HFSPLUS_FS=m | ||
| 1206 | # CONFIG_BEFS_FS is not set | ||
| 1207 | # CONFIG_BFS_FS is not set | ||
| 1208 | # CONFIG_EFS_FS is not set | ||
| 1209 | CONFIG_CRAMFS=y | ||
| 1210 | # CONFIG_VXFS_FS is not set | ||
| 1211 | # CONFIG_HPFS_FS is not set | ||
| 1212 | # CONFIG_QNX4FS_FS is not set | ||
| 1213 | # CONFIG_SYSV_FS is not set | ||
| 1214 | # CONFIG_UFS_FS is not set | ||
| 1215 | |||
| 1216 | # | ||
| 1217 | # Network File Systems | ||
| 1218 | # | ||
| 1219 | CONFIG_NFS_FS=y | ||
| 1220 | CONFIG_NFS_V3=y | ||
| 1221 | CONFIG_NFS_V3_ACL=y | ||
| 1222 | CONFIG_NFS_V4=y | ||
| 1223 | # CONFIG_NFS_DIRECTIO is not set | ||
| 1224 | CONFIG_NFSD=y | ||
| 1225 | CONFIG_NFSD_V2_ACL=y | ||
| 1226 | CONFIG_NFSD_V3=y | ||
| 1227 | CONFIG_NFSD_V3_ACL=y | ||
| 1228 | CONFIG_NFSD_V4=y | ||
| 1229 | CONFIG_NFSD_TCP=y | ||
| 1230 | CONFIG_LOCKD=y | ||
| 1231 | CONFIG_LOCKD_V4=y | ||
| 1232 | CONFIG_EXPORTFS=y | ||
| 1233 | CONFIG_NFS_ACL_SUPPORT=y | ||
| 1234 | CONFIG_NFS_COMMON=y | ||
| 1235 | CONFIG_SUNRPC=y | ||
| 1236 | CONFIG_SUNRPC_GSS=y | ||
| 1237 | CONFIG_RPCSEC_GSS_KRB5=y | ||
| 1238 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 1239 | # CONFIG_SMB_FS is not set | ||
| 1240 | CONFIG_CIFS=m | ||
| 1241 | # CONFIG_CIFS_STATS is not set | ||
| 1242 | # CONFIG_CIFS_XATTR is not set | ||
| 1243 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
| 1244 | # CONFIG_NCP_FS is not set | ||
| 1245 | # CONFIG_CODA_FS is not set | ||
| 1246 | # CONFIG_AFS_FS is not set | ||
| 1247 | # CONFIG_9P_FS is not set | ||
| 1248 | |||
| 1249 | # | ||
| 1250 | # Partition Types | ||
| 1251 | # | ||
| 1252 | CONFIG_PARTITION_ADVANCED=y | ||
| 1253 | # CONFIG_ACORN_PARTITION is not set | ||
| 1254 | # CONFIG_OSF_PARTITION is not set | ||
| 1255 | # CONFIG_AMIGA_PARTITION is not set | ||
| 1256 | # CONFIG_ATARI_PARTITION is not set | ||
| 1257 | CONFIG_MAC_PARTITION=y | ||
| 1258 | CONFIG_MSDOS_PARTITION=y | ||
| 1259 | # CONFIG_BSD_DISKLABEL is not set | ||
| 1260 | # CONFIG_MINIX_SUBPARTITION is not set | ||
| 1261 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
| 1262 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
| 1263 | # CONFIG_LDM_PARTITION is not set | ||
| 1264 | # CONFIG_SGI_PARTITION is not set | ||
| 1265 | # CONFIG_ULTRIX_PARTITION is not set | ||
| 1266 | # CONFIG_SUN_PARTITION is not set | ||
| 1267 | # CONFIG_EFI_PARTITION is not set | ||
| 1268 | |||
| 1269 | # | ||
| 1270 | # Native Language Support | ||
| 1271 | # | ||
| 1272 | CONFIG_NLS=y | ||
| 1273 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 1274 | CONFIG_NLS_CODEPAGE_437=y | ||
| 1275 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 1276 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 1277 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 1278 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 1279 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 1280 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 1281 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 1282 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 1283 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 1284 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 1285 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 1286 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 1287 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 1288 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 1289 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 1290 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 1291 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 1292 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 1293 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 1294 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 1295 | CONFIG_NLS_CODEPAGE_1250=y | ||
| 1296 | CONFIG_NLS_CODEPAGE_1251=y | ||
| 1297 | CONFIG_NLS_ASCII=y | ||
| 1298 | CONFIG_NLS_ISO8859_1=y | ||
| 1299 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 1300 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 1301 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 1302 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 1303 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 1304 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 1305 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 1306 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 1307 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 1308 | CONFIG_NLS_ISO8859_15=y | ||
| 1309 | # CONFIG_NLS_KOI8_R is not set | ||
| 1310 | # CONFIG_NLS_KOI8_U is not set | ||
| 1311 | CONFIG_NLS_UTF8=y | ||
| 1312 | |||
| 1313 | # | ||
| 1314 | # Profiling support | ||
| 1315 | # | ||
| 1316 | CONFIG_PROFILING=y | ||
| 1317 | CONFIG_OPROFILE=y | ||
| 1318 | |||
| 1319 | # | ||
| 1320 | # Kernel hacking | ||
| 1321 | # | ||
| 1322 | # CONFIG_PRINTK_TIME is not set | ||
| 1323 | CONFIG_DEBUG_KERNEL=y | ||
| 1324 | CONFIG_MAGIC_SYSRQ=y | ||
| 1325 | CONFIG_LOG_BUF_SHIFT=17 | ||
| 1326 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1327 | # CONFIG_SCHEDSTATS is not set | ||
| 1328 | # CONFIG_DEBUG_SLAB is not set | ||
| 1329 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 1330 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 1331 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 1332 | # CONFIG_DEBUG_INFO is not set | ||
| 1333 | CONFIG_DEBUG_FS=y | ||
| 1334 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
| 1335 | # CONFIG_KPROBES is not set | ||
| 1336 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
| 1337 | # CONFIG_DEBUGGER is not set | ||
| 1338 | # CONFIG_PPCDBG is not set | ||
| 1339 | CONFIG_IRQSTACKS=y | ||
| 1340 | |||
| 1341 | # | ||
| 1342 | # Security options | ||
| 1343 | # | ||
| 1344 | # CONFIG_KEYS is not set | ||
| 1345 | # CONFIG_SECURITY is not set | ||
| 1346 | |||
| 1347 | # | ||
| 1348 | # Cryptographic options | ||
| 1349 | # | ||
| 1350 | CONFIG_CRYPTO=y | ||
| 1351 | CONFIG_CRYPTO_HMAC=y | ||
| 1352 | CONFIG_CRYPTO_NULL=m | ||
| 1353 | CONFIG_CRYPTO_MD4=m | ||
| 1354 | CONFIG_CRYPTO_MD5=y | ||
| 1355 | CONFIG_CRYPTO_SHA1=m | ||
| 1356 | CONFIG_CRYPTO_SHA256=m | ||
| 1357 | CONFIG_CRYPTO_SHA512=m | ||
| 1358 | CONFIG_CRYPTO_WP512=m | ||
| 1359 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 1360 | CONFIG_CRYPTO_DES=y | ||
| 1361 | CONFIG_CRYPTO_BLOWFISH=m | ||
| 1362 | CONFIG_CRYPTO_TWOFISH=m | ||
| 1363 | CONFIG_CRYPTO_SERPENT=m | ||
| 1364 | CONFIG_CRYPTO_AES=m | ||
| 1365 | CONFIG_CRYPTO_CAST5=m | ||
| 1366 | CONFIG_CRYPTO_CAST6=m | ||
| 1367 | CONFIG_CRYPTO_TEA=m | ||
| 1368 | CONFIG_CRYPTO_ARC4=m | ||
| 1369 | CONFIG_CRYPTO_KHAZAD=m | ||
| 1370 | CONFIG_CRYPTO_ANUBIS=m | ||
| 1371 | CONFIG_CRYPTO_DEFLATE=m | ||
| 1372 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
| 1373 | CONFIG_CRYPTO_CRC32C=m | ||
| 1374 | CONFIG_CRYPTO_TEST=m | ||
| 1375 | |||
| 1376 | # | ||
| 1377 | # Hardware crypto devices | ||
| 1378 | # | ||
| 1379 | |||
| 1380 | # | ||
| 1381 | # Library routines | ||
| 1382 | # | ||
| 1383 | CONFIG_CRC_CCITT=m | ||
| 1384 | # CONFIG_CRC16 is not set | ||
| 1385 | CONFIG_CRC32=y | ||
| 1386 | CONFIG_LIBCRC32C=m | ||
| 1387 | CONFIG_ZLIB_INFLATE=y | ||
| 1388 | CONFIG_ZLIB_DEFLATE=m | ||
| 1389 | CONFIG_TEXTSEARCH=y | ||
| 1390 | CONFIG_TEXTSEARCH_KMP=m | ||
| 1391 | CONFIG_TEXTSEARCH_BM=m | ||
| 1392 | CONFIG_TEXTSEARCH_FSM=m | ||
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig new file mode 100644 index 000000000000..62e92c7e9e27 --- /dev/null +++ b/arch/powerpc/configs/iseries_defconfig | |||
| @@ -0,0 +1,998 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.14-rc4 | ||
| 4 | # Thu Oct 20 08:30:56 2005 | ||
| 5 | # | ||
| 6 | CONFIG_64BIT=y | ||
| 7 | CONFIG_MMU=y | ||
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 10 | CONFIG_GENERIC_ISA_DMA=y | ||
| 11 | CONFIG_EARLY_PRINTK=y | ||
| 12 | CONFIG_COMPAT=y | ||
| 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
| 16 | |||
| 17 | # | ||
| 18 | # Code maturity level options | ||
| 19 | # | ||
| 20 | CONFIG_EXPERIMENTAL=y | ||
| 21 | CONFIG_CLEAN_COMPILE=y | ||
| 22 | CONFIG_LOCK_KERNEL=y | ||
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 24 | |||
| 25 | # | ||
| 26 | # General setup | ||
| 27 | # | ||
| 28 | CONFIG_LOCALVERSION="" | ||
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 30 | CONFIG_SWAP=y | ||
| 31 | CONFIG_SYSVIPC=y | ||
| 32 | CONFIG_POSIX_MQUEUE=y | ||
| 33 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
| 34 | CONFIG_SYSCTL=y | ||
| 35 | CONFIG_AUDIT=y | ||
| 36 | CONFIG_AUDITSYSCALL=y | ||
| 37 | CONFIG_HOTPLUG=y | ||
| 38 | CONFIG_KOBJECT_UEVENT=y | ||
| 39 | CONFIG_IKCONFIG=y | ||
| 40 | CONFIG_IKCONFIG_PROC=y | ||
| 41 | # CONFIG_CPUSETS is not set | ||
| 42 | CONFIG_INITRAMFS_SOURCE="" | ||
| 43 | # CONFIG_EMBEDDED is not set | ||
| 44 | CONFIG_KALLSYMS=y | ||
| 45 | # CONFIG_KALLSYMS_ALL is not set | ||
| 46 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 47 | CONFIG_PRINTK=y | ||
| 48 | CONFIG_BUG=y | ||
| 49 | CONFIG_BASE_FULL=y | ||
| 50 | CONFIG_FUTEX=y | ||
| 51 | CONFIG_EPOLL=y | ||
| 52 | CONFIG_SHMEM=y | ||
| 53 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
| 54 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 55 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 56 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 57 | # CONFIG_TINY_SHMEM is not set | ||
| 58 | CONFIG_BASE_SMALL=0 | ||
| 59 | |||
| 60 | # | ||
| 61 | # Loadable module support | ||
| 62 | # | ||
| 63 | CONFIG_MODULES=y | ||
| 64 | CONFIG_MODULE_UNLOAD=y | ||
| 65 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
| 66 | CONFIG_OBSOLETE_MODPARM=y | ||
| 67 | CONFIG_MODVERSIONS=y | ||
| 68 | CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 69 | CONFIG_KMOD=y | ||
| 70 | CONFIG_STOP_MACHINE=y | ||
| 71 | CONFIG_SYSVIPC_COMPAT=y | ||
| 72 | |||
| 73 | # | ||
| 74 | # Platform support | ||
| 75 | # | ||
| 76 | CONFIG_PPC_ISERIES=y | ||
| 77 | # CONFIG_PPC_MULTIPLATFORM is not set | ||
| 78 | CONFIG_PPC=y | ||
| 79 | CONFIG_PPC64=y | ||
| 80 | CONFIG_IBMVIO=y | ||
| 81 | # CONFIG_POWER4_ONLY is not set | ||
| 82 | CONFIG_IOMMU_VMERGE=y | ||
| 83 | CONFIG_SMP=y | ||
| 84 | CONFIG_NR_CPUS=32 | ||
| 85 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
| 86 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 87 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 88 | CONFIG_FLATMEM_MANUAL=y | ||
| 89 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 90 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 91 | CONFIG_FLATMEM=y | ||
| 92 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 93 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 94 | # CONFIG_NUMA is not set | ||
| 95 | # CONFIG_SCHED_SMT is not set | ||
| 96 | CONFIG_PREEMPT_NONE=y | ||
| 97 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 98 | # CONFIG_PREEMPT is not set | ||
| 99 | # CONFIG_PREEMPT_BKL is not set | ||
| 100 | # CONFIG_HZ_100 is not set | ||
| 101 | CONFIG_HZ_250=y | ||
| 102 | # CONFIG_HZ_1000 is not set | ||
| 103 | CONFIG_HZ=250 | ||
| 104 | CONFIG_GENERIC_HARDIRQS=y | ||
| 105 | CONFIG_LPARCFG=y | ||
| 106 | CONFIG_SECCOMP=y | ||
| 107 | CONFIG_BINFMT_ELF=y | ||
| 108 | # CONFIG_BINFMT_MISC is not set | ||
| 109 | CONFIG_ISA_DMA_API=y | ||
| 110 | |||
| 111 | # | ||
| 112 | # Bus Options | ||
| 113 | # | ||
| 114 | CONFIG_PCI=y | ||
| 115 | CONFIG_PCI_DOMAINS=y | ||
| 116 | CONFIG_PCI_LEGACY_PROC=y | ||
| 117 | # CONFIG_PCI_DEBUG is not set | ||
| 118 | |||
| 119 | # | ||
| 120 | # PCCARD (PCMCIA/CardBus) support | ||
| 121 | # | ||
| 122 | # CONFIG_PCCARD is not set | ||
| 123 | |||
| 124 | # | ||
| 125 | # PCI Hotplug Support | ||
| 126 | # | ||
| 127 | # CONFIG_HOTPLUG_PCI is not set | ||
| 128 | |||
| 129 | # | ||
| 130 | # Networking | ||
| 131 | # | ||
| 132 | CONFIG_NET=y | ||
| 133 | |||
| 134 | # | ||
| 135 | # Networking options | ||
| 136 | # | ||
| 137 | CONFIG_PACKET=y | ||
| 138 | # CONFIG_PACKET_MMAP is not set | ||
| 139 | CONFIG_UNIX=y | ||
| 140 | CONFIG_XFRM=y | ||
| 141 | CONFIG_XFRM_USER=m | ||
| 142 | CONFIG_NET_KEY=m | ||
| 143 | CONFIG_INET=y | ||
| 144 | CONFIG_IP_MULTICAST=y | ||
| 145 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 146 | CONFIG_IP_FIB_HASH=y | ||
| 147 | # CONFIG_IP_PNP is not set | ||
| 148 | CONFIG_NET_IPIP=y | ||
| 149 | # CONFIG_NET_IPGRE is not set | ||
| 150 | # CONFIG_IP_MROUTE is not set | ||
| 151 | # CONFIG_ARPD is not set | ||
| 152 | CONFIG_SYN_COOKIES=y | ||
| 153 | CONFIG_INET_AH=m | ||
| 154 | CONFIG_INET_ESP=m | ||
| 155 | CONFIG_INET_IPCOMP=m | ||
| 156 | CONFIG_INET_TUNNEL=y | ||
| 157 | CONFIG_INET_DIAG=y | ||
| 158 | CONFIG_INET_TCP_DIAG=y | ||
| 159 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 160 | CONFIG_TCP_CONG_BIC=y | ||
| 161 | |||
| 162 | # | ||
| 163 | # IP: Virtual Server Configuration | ||
| 164 | # | ||
| 165 | # CONFIG_IP_VS is not set | ||
| 166 | # CONFIG_IPV6 is not set | ||
| 167 | CONFIG_NETFILTER=y | ||
| 168 | # CONFIG_NETFILTER_DEBUG is not set | ||
| 169 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 170 | |||
| 171 | # | ||
| 172 | # IP: Netfilter Configuration | ||
| 173 | # | ||
| 174 | CONFIG_IP_NF_CONNTRACK=m | ||
| 175 | CONFIG_IP_NF_CT_ACCT=y | ||
| 176 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
| 177 | CONFIG_IP_NF_CONNTRACK_EVENTS=y | ||
| 178 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
| 179 | CONFIG_IP_NF_FTP=m | ||
| 180 | CONFIG_IP_NF_IRC=m | ||
| 181 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 182 | CONFIG_IP_NF_TFTP=m | ||
| 183 | CONFIG_IP_NF_AMANDA=m | ||
| 184 | # CONFIG_IP_NF_PPTP is not set | ||
| 185 | CONFIG_IP_NF_QUEUE=m | ||
| 186 | CONFIG_IP_NF_IPTABLES=m | ||
| 187 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
| 188 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
| 189 | CONFIG_IP_NF_MATCH_MAC=m | ||
| 190 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
| 191 | CONFIG_IP_NF_MATCH_MARK=m | ||
| 192 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
| 193 | CONFIG_IP_NF_MATCH_TOS=m | ||
| 194 | CONFIG_IP_NF_MATCH_RECENT=m | ||
| 195 | CONFIG_IP_NF_MATCH_ECN=m | ||
| 196 | CONFIG_IP_NF_MATCH_DSCP=m | ||
| 197 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
| 198 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
| 199 | CONFIG_IP_NF_MATCH_TTL=m | ||
| 200 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
| 201 | CONFIG_IP_NF_MATCH_HELPER=m | ||
| 202 | CONFIG_IP_NF_MATCH_STATE=m | ||
| 203 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
| 204 | CONFIG_IP_NF_MATCH_OWNER=m | ||
| 205 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
| 206 | CONFIG_IP_NF_MATCH_REALM=m | ||
| 207 | CONFIG_IP_NF_MATCH_SCTP=m | ||
| 208 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 209 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
| 210 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
| 211 | CONFIG_IP_NF_MATCH_CONNBYTES=m | ||
| 212 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
| 213 | CONFIG_IP_NF_MATCH_STRING=m | ||
| 214 | CONFIG_IP_NF_FILTER=m | ||
| 215 | CONFIG_IP_NF_TARGET_REJECT=m | ||
| 216 | CONFIG_IP_NF_TARGET_LOG=m | ||
| 217 | CONFIG_IP_NF_TARGET_ULOG=m | ||
| 218 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
| 219 | CONFIG_IP_NF_TARGET_NFQUEUE=m | ||
| 220 | CONFIG_IP_NF_NAT=m | ||
| 221 | CONFIG_IP_NF_NAT_NEEDED=y | ||
| 222 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
| 223 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
| 224 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
| 225 | CONFIG_IP_NF_TARGET_SAME=m | ||
| 226 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
| 227 | CONFIG_IP_NF_NAT_IRC=m | ||
| 228 | CONFIG_IP_NF_NAT_FTP=m | ||
| 229 | CONFIG_IP_NF_NAT_TFTP=m | ||
| 230 | CONFIG_IP_NF_NAT_AMANDA=m | ||
| 231 | CONFIG_IP_NF_MANGLE=m | ||
| 232 | CONFIG_IP_NF_TARGET_TOS=m | ||
| 233 | CONFIG_IP_NF_TARGET_ECN=m | ||
| 234 | CONFIG_IP_NF_TARGET_DSCP=m | ||
| 235 | CONFIG_IP_NF_TARGET_MARK=m | ||
| 236 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
| 237 | CONFIG_IP_NF_TARGET_TTL=m | ||
| 238 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
| 239 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
| 240 | CONFIG_IP_NF_RAW=m | ||
| 241 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
| 242 | CONFIG_IP_NF_ARPTABLES=m | ||
| 243 | CONFIG_IP_NF_ARPFILTER=m | ||
| 244 | CONFIG_IP_NF_ARP_MANGLE=m | ||
| 245 | |||
| 246 | # | ||
| 247 | # DCCP Configuration (EXPERIMENTAL) | ||
| 248 | # | ||
| 249 | # CONFIG_IP_DCCP is not set | ||
| 250 | |||
| 251 | # | ||
| 252 | # SCTP Configuration (EXPERIMENTAL) | ||
| 253 | # | ||
| 254 | # CONFIG_IP_SCTP is not set | ||
| 255 | # CONFIG_ATM is not set | ||
| 256 | # CONFIG_BRIDGE is not set | ||
| 257 | # CONFIG_VLAN_8021Q is not set | ||
| 258 | # CONFIG_DECNET is not set | ||
| 259 | CONFIG_LLC=y | ||
| 260 | # CONFIG_LLC2 is not set | ||
| 261 | # CONFIG_IPX is not set | ||
| 262 | # CONFIG_ATALK is not set | ||
| 263 | # CONFIG_X25 is not set | ||
| 264 | # CONFIG_LAPB is not set | ||
| 265 | # CONFIG_NET_DIVERT is not set | ||
| 266 | # CONFIG_ECONET is not set | ||
| 267 | # CONFIG_WAN_ROUTER is not set | ||
| 268 | # CONFIG_NET_SCHED is not set | ||
| 269 | CONFIG_NET_CLS_ROUTE=y | ||
| 270 | |||
| 271 | # | ||
| 272 | # Network testing | ||
| 273 | # | ||
| 274 | # CONFIG_NET_PKTGEN is not set | ||
| 275 | # CONFIG_HAMRADIO is not set | ||
| 276 | # CONFIG_IRDA is not set | ||
| 277 | # CONFIG_BT is not set | ||
| 278 | # CONFIG_IEEE80211 is not set | ||
| 279 | |||
| 280 | # | ||
| 281 | # Device Drivers | ||
| 282 | # | ||
| 283 | |||
| 284 | # | ||
| 285 | # Generic Driver Options | ||
| 286 | # | ||
| 287 | CONFIG_STANDALONE=y | ||
| 288 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 289 | CONFIG_FW_LOADER=m | ||
| 290 | # CONFIG_DEBUG_DRIVER is not set | ||
| 291 | |||
| 292 | # | ||
| 293 | # Connector - unified userspace <-> kernelspace linker | ||
| 294 | # | ||
| 295 | # CONFIG_CONNECTOR is not set | ||
| 296 | |||
| 297 | # | ||
| 298 | # Memory Technology Devices (MTD) | ||
| 299 | # | ||
| 300 | # CONFIG_MTD is not set | ||
| 301 | |||
| 302 | # | ||
| 303 | # Parallel port support | ||
| 304 | # | ||
| 305 | # CONFIG_PARPORT is not set | ||
| 306 | |||
| 307 | # | ||
| 308 | # Plug and Play support | ||
| 309 | # | ||
| 310 | |||
| 311 | # | ||
| 312 | # Block devices | ||
| 313 | # | ||
| 314 | # CONFIG_BLK_DEV_FD is not set | ||
| 315 | # CONFIG_BLK_CPQ_DA is not set | ||
| 316 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 317 | # CONFIG_BLK_DEV_DAC960 is not set | ||
| 318 | # CONFIG_BLK_DEV_UMEM is not set | ||
| 319 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 320 | CONFIG_BLK_DEV_LOOP=y | ||
| 321 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 322 | CONFIG_BLK_DEV_NBD=m | ||
| 323 | # CONFIG_BLK_DEV_SX8 is not set | ||
| 324 | CONFIG_BLK_DEV_RAM=y | ||
| 325 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 326 | CONFIG_BLK_DEV_RAM_SIZE=65536 | ||
| 327 | CONFIG_BLK_DEV_INITRD=y | ||
| 328 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 329 | |||
| 330 | # | ||
| 331 | # IO Schedulers | ||
| 332 | # | ||
| 333 | CONFIG_IOSCHED_NOOP=y | ||
| 334 | CONFIG_IOSCHED_AS=y | ||
| 335 | CONFIG_IOSCHED_DEADLINE=y | ||
| 336 | CONFIG_IOSCHED_CFQ=y | ||
| 337 | # CONFIG_ATA_OVER_ETH is not set | ||
| 338 | |||
| 339 | # | ||
| 340 | # ATA/ATAPI/MFM/RLL support | ||
| 341 | # | ||
| 342 | # CONFIG_IDE is not set | ||
| 343 | |||
| 344 | # | ||
| 345 | # SCSI device support | ||
| 346 | # | ||
| 347 | # CONFIG_RAID_ATTRS is not set | ||
| 348 | CONFIG_SCSI=y | ||
| 349 | CONFIG_SCSI_PROC_FS=y | ||
| 350 | |||
| 351 | # | ||
| 352 | # SCSI support type (disk, tape, CD-ROM) | ||
| 353 | # | ||
| 354 | CONFIG_BLK_DEV_SD=y | ||
| 355 | CONFIG_CHR_DEV_ST=y | ||
| 356 | # CONFIG_CHR_DEV_OSST is not set | ||
| 357 | CONFIG_BLK_DEV_SR=y | ||
| 358 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
| 359 | CONFIG_CHR_DEV_SG=y | ||
| 360 | # CONFIG_CHR_DEV_SCH is not set | ||
| 361 | |||
| 362 | # | ||
| 363 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
| 364 | # | ||
| 365 | CONFIG_SCSI_MULTI_LUN=y | ||
| 366 | CONFIG_SCSI_CONSTANTS=y | ||
| 367 | # CONFIG_SCSI_LOGGING is not set | ||
| 368 | |||
| 369 | # | ||
| 370 | # SCSI Transport Attributes | ||
| 371 | # | ||
| 372 | CONFIG_SCSI_SPI_ATTRS=y | ||
| 373 | CONFIG_SCSI_FC_ATTRS=y | ||
| 374 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 375 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 376 | |||
| 377 | # | ||
| 378 | # SCSI low-level drivers | ||
| 379 | # | ||
| 380 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
| 381 | # CONFIG_SCSI_3W_9XXX is not set | ||
| 382 | # CONFIG_SCSI_ACARD is not set | ||
| 383 | # CONFIG_SCSI_AACRAID is not set | ||
| 384 | # CONFIG_SCSI_AIC7XXX is not set | ||
| 385 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
| 386 | # CONFIG_SCSI_AIC79XX is not set | ||
| 387 | # CONFIG_MEGARAID_NEWGEN is not set | ||
| 388 | # CONFIG_MEGARAID_LEGACY is not set | ||
| 389 | # CONFIG_MEGARAID_SAS is not set | ||
| 390 | # CONFIG_SCSI_SATA is not set | ||
| 391 | # CONFIG_SCSI_BUSLOGIC is not set | ||
| 392 | # CONFIG_SCSI_DMX3191D is not set | ||
| 393 | # CONFIG_SCSI_EATA is not set | ||
| 394 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
| 395 | # CONFIG_SCSI_GDTH is not set | ||
| 396 | # CONFIG_SCSI_IPS is not set | ||
| 397 | CONFIG_SCSI_IBMVSCSI=m | ||
| 398 | # CONFIG_SCSI_INITIO is not set | ||
| 399 | # CONFIG_SCSI_INIA100 is not set | ||
| 400 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
| 401 | # CONFIG_SCSI_IPR is not set | ||
| 402 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
| 403 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
| 404 | CONFIG_SCSI_QLA2XXX=y | ||
| 405 | # CONFIG_SCSI_QLA21XX is not set | ||
| 406 | # CONFIG_SCSI_QLA22XX is not set | ||
| 407 | # CONFIG_SCSI_QLA2300 is not set | ||
| 408 | # CONFIG_SCSI_QLA2322 is not set | ||
| 409 | # CONFIG_SCSI_QLA6312 is not set | ||
| 410 | # CONFIG_SCSI_QLA24XX is not set | ||
| 411 | # CONFIG_SCSI_LPFC is not set | ||
| 412 | # CONFIG_SCSI_DC395x is not set | ||
| 413 | # CONFIG_SCSI_DC390T is not set | ||
| 414 | # CONFIG_SCSI_DEBUG is not set | ||
| 415 | |||
| 416 | # | ||
| 417 | # Multi-device support (RAID and LVM) | ||
| 418 | # | ||
| 419 | CONFIG_MD=y | ||
| 420 | CONFIG_BLK_DEV_MD=y | ||
| 421 | CONFIG_MD_LINEAR=y | ||
| 422 | CONFIG_MD_RAID0=y | ||
| 423 | CONFIG_MD_RAID1=y | ||
| 424 | CONFIG_MD_RAID10=m | ||
| 425 | CONFIG_MD_RAID5=y | ||
| 426 | CONFIG_MD_RAID6=m | ||
| 427 | CONFIG_MD_MULTIPATH=m | ||
| 428 | CONFIG_MD_FAULTY=m | ||
| 429 | CONFIG_BLK_DEV_DM=y | ||
| 430 | CONFIG_DM_CRYPT=m | ||
| 431 | CONFIG_DM_SNAPSHOT=m | ||
| 432 | CONFIG_DM_MIRROR=m | ||
| 433 | CONFIG_DM_ZERO=m | ||
| 434 | # CONFIG_DM_MULTIPATH is not set | ||
| 435 | |||
| 436 | # | ||
| 437 | # Fusion MPT device support | ||
| 438 | # | ||
| 439 | # CONFIG_FUSION is not set | ||
| 440 | # CONFIG_FUSION_SPI is not set | ||
| 441 | # CONFIG_FUSION_FC is not set | ||
| 442 | # CONFIG_FUSION_SAS is not set | ||
| 443 | |||
| 444 | # | ||
| 445 | # IEEE 1394 (FireWire) support | ||
| 446 | # | ||
| 447 | # CONFIG_IEEE1394 is not set | ||
| 448 | |||
| 449 | # | ||
| 450 | # I2O device support | ||
| 451 | # | ||
| 452 | # CONFIG_I2O is not set | ||
| 453 | |||
| 454 | # | ||
| 455 | # Macintosh device drivers | ||
| 456 | # | ||
| 457 | |||
| 458 | # | ||
| 459 | # Network device support | ||
| 460 | # | ||
| 461 | CONFIG_NETDEVICES=y | ||
| 462 | CONFIG_DUMMY=m | ||
| 463 | CONFIG_BONDING=m | ||
| 464 | # CONFIG_EQUALIZER is not set | ||
| 465 | CONFIG_TUN=m | ||
| 466 | |||
| 467 | # | ||
| 468 | # ARCnet devices | ||
| 469 | # | ||
| 470 | # CONFIG_ARCNET is not set | ||
| 471 | |||
| 472 | # | ||
| 473 | # PHY device support | ||
| 474 | # | ||
| 475 | # CONFIG_PHYLIB is not set | ||
| 476 | |||
| 477 | # | ||
| 478 | # Ethernet (10 or 100Mbit) | ||
| 479 | # | ||
| 480 | CONFIG_NET_ETHERNET=y | ||
| 481 | CONFIG_MII=y | ||
| 482 | # CONFIG_HAPPYMEAL is not set | ||
| 483 | # CONFIG_SUNGEM is not set | ||
| 484 | # CONFIG_CASSINI is not set | ||
| 485 | # CONFIG_NET_VENDOR_3COM is not set | ||
| 486 | |||
| 487 | # | ||
| 488 | # Tulip family network device support | ||
| 489 | # | ||
| 490 | # CONFIG_NET_TULIP is not set | ||
| 491 | # CONFIG_HP100 is not set | ||
| 492 | CONFIG_NET_PCI=y | ||
| 493 | CONFIG_PCNET32=y | ||
| 494 | # CONFIG_AMD8111_ETH is not set | ||
| 495 | # CONFIG_ADAPTEC_STARFIRE is not set | ||
| 496 | # CONFIG_B44 is not set | ||
| 497 | # CONFIG_FORCEDETH is not set | ||
| 498 | # CONFIG_DGRS is not set | ||
| 499 | # CONFIG_EEPRO100 is not set | ||
| 500 | CONFIG_E100=y | ||
| 501 | # CONFIG_FEALNX is not set | ||
| 502 | # CONFIG_NATSEMI is not set | ||
| 503 | # CONFIG_NE2K_PCI is not set | ||
| 504 | # CONFIG_8139CP is not set | ||
| 505 | # CONFIG_8139TOO is not set | ||
| 506 | # CONFIG_SIS900 is not set | ||
| 507 | # CONFIG_EPIC100 is not set | ||
| 508 | # CONFIG_SUNDANCE is not set | ||
| 509 | # CONFIG_VIA_RHINE is not set | ||
| 510 | |||
| 511 | # | ||
| 512 | # Ethernet (1000 Mbit) | ||
| 513 | # | ||
| 514 | CONFIG_ACENIC=m | ||
| 515 | # CONFIG_ACENIC_OMIT_TIGON_I is not set | ||
| 516 | # CONFIG_DL2K is not set | ||
| 517 | CONFIG_E1000=m | ||
| 518 | # CONFIG_E1000_NAPI is not set | ||
| 519 | # CONFIG_NS83820 is not set | ||
| 520 | # CONFIG_HAMACHI is not set | ||
| 521 | # CONFIG_YELLOWFIN is not set | ||
| 522 | # CONFIG_R8169 is not set | ||
| 523 | # CONFIG_SIS190 is not set | ||
| 524 | # CONFIG_SKGE is not set | ||
| 525 | # CONFIG_SK98LIN is not set | ||
| 526 | # CONFIG_VIA_VELOCITY is not set | ||
| 527 | # CONFIG_TIGON3 is not set | ||
| 528 | # CONFIG_BNX2 is not set | ||
| 529 | |||
| 530 | # | ||
| 531 | # Ethernet (10000 Mbit) | ||
| 532 | # | ||
| 533 | # CONFIG_CHELSIO_T1 is not set | ||
| 534 | # CONFIG_IXGB is not set | ||
| 535 | # CONFIG_S2IO is not set | ||
| 536 | |||
| 537 | # | ||
| 538 | # Token Ring devices | ||
| 539 | # | ||
| 540 | CONFIG_TR=y | ||
| 541 | CONFIG_IBMOL=y | ||
| 542 | # CONFIG_3C359 is not set | ||
| 543 | # CONFIG_TMS380TR is not set | ||
| 544 | |||
| 545 | # | ||
| 546 | # Wireless LAN (non-hamradio) | ||
| 547 | # | ||
| 548 | # CONFIG_NET_RADIO is not set | ||
| 549 | |||
| 550 | # | ||
| 551 | # Wan interfaces | ||
| 552 | # | ||
| 553 | # CONFIG_WAN is not set | ||
| 554 | CONFIG_ISERIES_VETH=y | ||
| 555 | # CONFIG_FDDI is not set | ||
| 556 | # CONFIG_HIPPI is not set | ||
| 557 | CONFIG_PPP=m | ||
| 558 | # CONFIG_PPP_MULTILINK is not set | ||
| 559 | # CONFIG_PPP_FILTER is not set | ||
| 560 | CONFIG_PPP_ASYNC=m | ||
| 561 | CONFIG_PPP_SYNC_TTY=m | ||
| 562 | CONFIG_PPP_DEFLATE=m | ||
| 563 | CONFIG_PPP_BSDCOMP=m | ||
| 564 | CONFIG_PPPOE=m | ||
| 565 | # CONFIG_SLIP is not set | ||
| 566 | # CONFIG_NET_FC is not set | ||
| 567 | # CONFIG_SHAPER is not set | ||
| 568 | CONFIG_NETCONSOLE=y | ||
| 569 | CONFIG_NETPOLL=y | ||
| 570 | CONFIG_NETPOLL_RX=y | ||
| 571 | CONFIG_NETPOLL_TRAP=y | ||
| 572 | CONFIG_NET_POLL_CONTROLLER=y | ||
| 573 | |||
| 574 | # | ||
| 575 | # ISDN subsystem | ||
| 576 | # | ||
| 577 | # CONFIG_ISDN is not set | ||
| 578 | |||
| 579 | # | ||
| 580 | # Telephony Support | ||
| 581 | # | ||
| 582 | # CONFIG_PHONE is not set | ||
| 583 | |||
| 584 | # | ||
| 585 | # Input device support | ||
| 586 | # | ||
| 587 | CONFIG_INPUT=y | ||
| 588 | |||
| 589 | # | ||
| 590 | # Userland interfaces | ||
| 591 | # | ||
| 592 | CONFIG_INPUT_MOUSEDEV=y | ||
| 593 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
| 594 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 595 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 596 | # CONFIG_INPUT_JOYDEV is not set | ||
| 597 | # CONFIG_INPUT_TSDEV is not set | ||
| 598 | # CONFIG_INPUT_EVDEV is not set | ||
| 599 | # CONFIG_INPUT_EVBUG is not set | ||
| 600 | |||
| 601 | # | ||
| 602 | # Input Device Drivers | ||
| 603 | # | ||
| 604 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 605 | # CONFIG_INPUT_MOUSE is not set | ||
| 606 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 607 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 608 | # CONFIG_INPUT_MISC is not set | ||
| 609 | |||
| 610 | # | ||
| 611 | # Hardware I/O ports | ||
| 612 | # | ||
| 613 | # CONFIG_SERIO is not set | ||
| 614 | # CONFIG_GAMEPORT is not set | ||
| 615 | |||
| 616 | # | ||
| 617 | # Character devices | ||
| 618 | # | ||
| 619 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 620 | |||
| 621 | # | ||
| 622 | # Serial drivers | ||
| 623 | # | ||
| 624 | # CONFIG_SERIAL_8250 is not set | ||
| 625 | |||
| 626 | # | ||
| 627 | # Non-8250 serial port support | ||
| 628 | # | ||
| 629 | CONFIG_SERIAL_CORE=m | ||
| 630 | CONFIG_SERIAL_ICOM=m | ||
| 631 | # CONFIG_SERIAL_JSM is not set | ||
| 632 | CONFIG_UNIX98_PTYS=y | ||
| 633 | CONFIG_LEGACY_PTYS=y | ||
| 634 | CONFIG_LEGACY_PTY_COUNT=256 | ||
| 635 | |||
| 636 | # | ||
| 637 | # IPMI | ||
| 638 | # | ||
| 639 | # CONFIG_IPMI_HANDLER is not set | ||
| 640 | |||
| 641 | # | ||
| 642 | # Watchdog Cards | ||
| 643 | # | ||
| 644 | # CONFIG_WATCHDOG is not set | ||
| 645 | # CONFIG_RTC is not set | ||
| 646 | # CONFIG_DTLK is not set | ||
| 647 | # CONFIG_R3964 is not set | ||
| 648 | # CONFIG_APPLICOM is not set | ||
| 649 | |||
| 650 | # | ||
| 651 | # Ftape, the floppy tape device driver | ||
| 652 | # | ||
| 653 | # CONFIG_AGP is not set | ||
| 654 | # CONFIG_DRM is not set | ||
| 655 | CONFIG_RAW_DRIVER=y | ||
| 656 | CONFIG_MAX_RAW_DEVS=256 | ||
| 657 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 658 | |||
| 659 | # | ||
| 660 | # TPM devices | ||
| 661 | # | ||
| 662 | # CONFIG_TCG_TPM is not set | ||
| 663 | |||
| 664 | # | ||
| 665 | # I2C support | ||
| 666 | # | ||
| 667 | # CONFIG_I2C is not set | ||
| 668 | |||
| 669 | # | ||
| 670 | # Dallas's 1-wire bus | ||
| 671 | # | ||
| 672 | # CONFIG_W1 is not set | ||
| 673 | |||
| 674 | # | ||
| 675 | # Hardware Monitoring support | ||
| 676 | # | ||
| 677 | # CONFIG_HWMON is not set | ||
| 678 | # CONFIG_HWMON_VID is not set | ||
| 679 | |||
| 680 | # | ||
| 681 | # Misc devices | ||
| 682 | # | ||
| 683 | |||
| 684 | # | ||
| 685 | # Multimedia Capabilities Port drivers | ||
| 686 | # | ||
| 687 | |||
| 688 | # | ||
| 689 | # Multimedia devices | ||
| 690 | # | ||
| 691 | # CONFIG_VIDEO_DEV is not set | ||
| 692 | |||
| 693 | # | ||
| 694 | # Digital Video Broadcasting Devices | ||
| 695 | # | ||
| 696 | # CONFIG_DVB is not set | ||
| 697 | |||
| 698 | # | ||
| 699 | # Graphics support | ||
| 700 | # | ||
| 701 | # CONFIG_FB is not set | ||
| 702 | |||
| 703 | # | ||
| 704 | # Sound | ||
| 705 | # | ||
| 706 | # CONFIG_SOUND is not set | ||
| 707 | |||
| 708 | # | ||
| 709 | # USB support | ||
| 710 | # | ||
| 711 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 712 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 713 | # CONFIG_USB is not set | ||
| 714 | |||
| 715 | # | ||
| 716 | # USB Gadget Support | ||
| 717 | # | ||
| 718 | # CONFIG_USB_GADGET is not set | ||
| 719 | |||
| 720 | # | ||
| 721 | # MMC/SD Card support | ||
| 722 | # | ||
| 723 | # CONFIG_MMC is not set | ||
| 724 | |||
| 725 | # | ||
| 726 | # InfiniBand support | ||
| 727 | # | ||
| 728 | # CONFIG_INFINIBAND is not set | ||
| 729 | |||
| 730 | # | ||
| 731 | # SN Devices | ||
| 732 | # | ||
| 733 | |||
| 734 | # | ||
| 735 | # File systems | ||
| 736 | # | ||
| 737 | CONFIG_EXT2_FS=y | ||
| 738 | CONFIG_EXT2_FS_XATTR=y | ||
| 739 | CONFIG_EXT2_FS_POSIX_ACL=y | ||
| 740 | CONFIG_EXT2_FS_SECURITY=y | ||
| 741 | CONFIG_EXT2_FS_XIP=y | ||
| 742 | CONFIG_FS_XIP=y | ||
| 743 | CONFIG_EXT3_FS=y | ||
| 744 | CONFIG_EXT3_FS_XATTR=y | ||
| 745 | CONFIG_EXT3_FS_POSIX_ACL=y | ||
| 746 | CONFIG_EXT3_FS_SECURITY=y | ||
| 747 | CONFIG_JBD=y | ||
| 748 | # CONFIG_JBD_DEBUG is not set | ||
| 749 | CONFIG_FS_MBCACHE=y | ||
| 750 | CONFIG_REISERFS_FS=y | ||
| 751 | # CONFIG_REISERFS_CHECK is not set | ||
| 752 | # CONFIG_REISERFS_PROC_INFO is not set | ||
| 753 | CONFIG_REISERFS_FS_XATTR=y | ||
| 754 | CONFIG_REISERFS_FS_POSIX_ACL=y | ||
| 755 | CONFIG_REISERFS_FS_SECURITY=y | ||
| 756 | CONFIG_JFS_FS=m | ||
| 757 | CONFIG_JFS_POSIX_ACL=y | ||
| 758 | CONFIG_JFS_SECURITY=y | ||
| 759 | # CONFIG_JFS_DEBUG is not set | ||
| 760 | # CONFIG_JFS_STATISTICS is not set | ||
| 761 | CONFIG_FS_POSIX_ACL=y | ||
| 762 | CONFIG_XFS_FS=m | ||
| 763 | CONFIG_XFS_EXPORT=y | ||
| 764 | # CONFIG_XFS_QUOTA is not set | ||
| 765 | CONFIG_XFS_SECURITY=y | ||
| 766 | CONFIG_XFS_POSIX_ACL=y | ||
| 767 | # CONFIG_XFS_RT is not set | ||
| 768 | # CONFIG_MINIX_FS is not set | ||
| 769 | # CONFIG_ROMFS_FS is not set | ||
| 770 | CONFIG_INOTIFY=y | ||
| 771 | # CONFIG_QUOTA is not set | ||
| 772 | CONFIG_DNOTIFY=y | ||
| 773 | CONFIG_AUTOFS_FS=m | ||
| 774 | # CONFIG_AUTOFS4_FS is not set | ||
| 775 | # CONFIG_FUSE_FS is not set | ||
| 776 | |||
| 777 | # | ||
| 778 | # CD-ROM/DVD Filesystems | ||
| 779 | # | ||
| 780 | CONFIG_ISO9660_FS=y | ||
| 781 | CONFIG_JOLIET=y | ||
| 782 | CONFIG_ZISOFS=y | ||
| 783 | CONFIG_ZISOFS_FS=y | ||
| 784 | CONFIG_UDF_FS=m | ||
| 785 | CONFIG_UDF_NLS=y | ||
| 786 | |||
| 787 | # | ||
| 788 | # DOS/FAT/NT Filesystems | ||
| 789 | # | ||
| 790 | CONFIG_FAT_FS=y | ||
| 791 | CONFIG_MSDOS_FS=y | ||
| 792 | CONFIG_VFAT_FS=y | ||
| 793 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 794 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 795 | # CONFIG_NTFS_FS is not set | ||
| 796 | |||
| 797 | # | ||
| 798 | # Pseudo filesystems | ||
| 799 | # | ||
| 800 | CONFIG_PROC_FS=y | ||
| 801 | CONFIG_PROC_KCORE=y | ||
| 802 | CONFIG_SYSFS=y | ||
| 803 | CONFIG_TMPFS=y | ||
| 804 | # CONFIG_HUGETLBFS is not set | ||
| 805 | # CONFIG_HUGETLB_PAGE is not set | ||
| 806 | CONFIG_RAMFS=y | ||
| 807 | # CONFIG_RELAYFS_FS is not set | ||
| 808 | |||
| 809 | # | ||
| 810 | # Miscellaneous filesystems | ||
| 811 | # | ||
| 812 | # CONFIG_ADFS_FS is not set | ||
| 813 | # CONFIG_AFFS_FS is not set | ||
| 814 | # CONFIG_HFS_FS is not set | ||
| 815 | # CONFIG_HFSPLUS_FS is not set | ||
| 816 | # CONFIG_BEFS_FS is not set | ||
| 817 | # CONFIG_BFS_FS is not set | ||
| 818 | # CONFIG_EFS_FS is not set | ||
| 819 | CONFIG_CRAMFS=y | ||
| 820 | # CONFIG_VXFS_FS is not set | ||
| 821 | # CONFIG_HPFS_FS is not set | ||
| 822 | # CONFIG_QNX4FS_FS is not set | ||
| 823 | # CONFIG_SYSV_FS is not set | ||
| 824 | # CONFIG_UFS_FS is not set | ||
| 825 | |||
| 826 | # | ||
| 827 | # Network File Systems | ||
| 828 | # | ||
| 829 | CONFIG_NFS_FS=y | ||
| 830 | CONFIG_NFS_V3=y | ||
| 831 | CONFIG_NFS_V3_ACL=y | ||
| 832 | CONFIG_NFS_V4=y | ||
| 833 | # CONFIG_NFS_DIRECTIO is not set | ||
| 834 | CONFIG_NFSD=m | ||
| 835 | CONFIG_NFSD_V2_ACL=y | ||
| 836 | CONFIG_NFSD_V3=y | ||
| 837 | CONFIG_NFSD_V3_ACL=y | ||
| 838 | CONFIG_NFSD_V4=y | ||
| 839 | CONFIG_NFSD_TCP=y | ||
| 840 | CONFIG_LOCKD=y | ||
| 841 | CONFIG_LOCKD_V4=y | ||
| 842 | CONFIG_EXPORTFS=m | ||
| 843 | CONFIG_NFS_ACL_SUPPORT=y | ||
| 844 | CONFIG_NFS_COMMON=y | ||
| 845 | CONFIG_SUNRPC=y | ||
| 846 | CONFIG_SUNRPC_GSS=y | ||
| 847 | CONFIG_RPCSEC_GSS_KRB5=y | ||
| 848 | CONFIG_RPCSEC_GSS_SPKM3=m | ||
| 849 | # CONFIG_SMB_FS is not set | ||
| 850 | CONFIG_CIFS=m | ||
| 851 | # CONFIG_CIFS_STATS is not set | ||
| 852 | CONFIG_CIFS_XATTR=y | ||
| 853 | CONFIG_CIFS_POSIX=y | ||
| 854 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
| 855 | # CONFIG_NCP_FS is not set | ||
| 856 | # CONFIG_CODA_FS is not set | ||
| 857 | # CONFIG_AFS_FS is not set | ||
| 858 | # CONFIG_9P_FS is not set | ||
| 859 | |||
| 860 | # | ||
| 861 | # Partition Types | ||
| 862 | # | ||
| 863 | # CONFIG_PARTITION_ADVANCED is not set | ||
| 864 | CONFIG_MSDOS_PARTITION=y | ||
| 865 | |||
| 866 | # | ||
| 867 | # Native Language Support | ||
| 868 | # | ||
| 869 | CONFIG_NLS=y | ||
| 870 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 871 | CONFIG_NLS_CODEPAGE_437=y | ||
| 872 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 873 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 874 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 875 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 876 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 877 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 878 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 879 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 880 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 881 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 882 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 883 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 884 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 885 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 886 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 887 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 888 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 889 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 890 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 891 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 892 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 893 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 894 | CONFIG_NLS_ASCII=y | ||
| 895 | CONFIG_NLS_ISO8859_1=y | ||
| 896 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 897 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 898 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 899 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 900 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 901 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 902 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 903 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 904 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 905 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 906 | # CONFIG_NLS_KOI8_R is not set | ||
| 907 | # CONFIG_NLS_KOI8_U is not set | ||
| 908 | # CONFIG_NLS_UTF8 is not set | ||
| 909 | |||
| 910 | # | ||
| 911 | # iSeries device drivers | ||
| 912 | # | ||
| 913 | CONFIG_VIOCONS=y | ||
| 914 | CONFIG_VIODASD=y | ||
| 915 | CONFIG_VIOCD=m | ||
| 916 | CONFIG_VIOTAPE=m | ||
| 917 | CONFIG_VIOPATH=y | ||
| 918 | |||
| 919 | # | ||
| 920 | # Profiling support | ||
| 921 | # | ||
| 922 | CONFIG_PROFILING=y | ||
| 923 | CONFIG_OPROFILE=y | ||
| 924 | |||
| 925 | # | ||
| 926 | # Kernel hacking | ||
| 927 | # | ||
| 928 | # CONFIG_PRINTK_TIME is not set | ||
| 929 | CONFIG_DEBUG_KERNEL=y | ||
| 930 | CONFIG_MAGIC_SYSRQ=y | ||
| 931 | CONFIG_LOG_BUF_SHIFT=17 | ||
| 932 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 933 | # CONFIG_SCHEDSTATS is not set | ||
| 934 | # CONFIG_DEBUG_SLAB is not set | ||
| 935 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 936 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 937 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 938 | # CONFIG_DEBUG_INFO is not set | ||
| 939 | CONFIG_DEBUG_FS=y | ||
| 940 | CONFIG_DEBUG_STACKOVERFLOW=y | ||
| 941 | # CONFIG_KPROBES is not set | ||
| 942 | CONFIG_DEBUG_STACK_USAGE=y | ||
| 943 | # CONFIG_DEBUGGER is not set | ||
| 944 | # CONFIG_PPCDBG is not set | ||
| 945 | CONFIG_IRQSTACKS=y | ||
| 946 | |||
| 947 | # | ||
| 948 | # Security options | ||
| 949 | # | ||
| 950 | # CONFIG_KEYS is not set | ||
| 951 | # CONFIG_SECURITY is not set | ||
| 952 | |||
| 953 | # | ||
| 954 | # Cryptographic options | ||
| 955 | # | ||
| 956 | CONFIG_CRYPTO=y | ||
| 957 | CONFIG_CRYPTO_HMAC=y | ||
| 958 | CONFIG_CRYPTO_NULL=m | ||
| 959 | CONFIG_CRYPTO_MD4=m | ||
| 960 | CONFIG_CRYPTO_MD5=y | ||
| 961 | CONFIG_CRYPTO_SHA1=m | ||
| 962 | CONFIG_CRYPTO_SHA256=m | ||
| 963 | CONFIG_CRYPTO_SHA512=m | ||
| 964 | CONFIG_CRYPTO_WP512=m | ||
| 965 | CONFIG_CRYPTO_TGR192=m | ||
| 966 | CONFIG_CRYPTO_DES=y | ||
| 967 | CONFIG_CRYPTO_BLOWFISH=m | ||
| 968 | CONFIG_CRYPTO_TWOFISH=m | ||
| 969 | CONFIG_CRYPTO_SERPENT=m | ||
| 970 | CONFIG_CRYPTO_AES=m | ||
| 971 | CONFIG_CRYPTO_CAST5=m | ||
| 972 | CONFIG_CRYPTO_CAST6=m | ||
| 973 | CONFIG_CRYPTO_TEA=m | ||
| 974 | CONFIG_CRYPTO_ARC4=m | ||
| 975 | CONFIG_CRYPTO_KHAZAD=m | ||
| 976 | CONFIG_CRYPTO_ANUBIS=m | ||
| 977 | CONFIG_CRYPTO_DEFLATE=m | ||
| 978 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
| 979 | CONFIG_CRYPTO_CRC32C=m | ||
| 980 | CONFIG_CRYPTO_TEST=m | ||
| 981 | |||
| 982 | # | ||
| 983 | # Hardware crypto devices | ||
| 984 | # | ||
| 985 | |||
| 986 | # | ||
| 987 | # Library routines | ||
| 988 | # | ||
| 989 | CONFIG_CRC_CCITT=m | ||
| 990 | # CONFIG_CRC16 is not set | ||
| 991 | CONFIG_CRC32=y | ||
| 992 | CONFIG_LIBCRC32C=m | ||
| 993 | CONFIG_ZLIB_INFLATE=y | ||
| 994 | CONFIG_ZLIB_DEFLATE=m | ||
| 995 | CONFIG_TEXTSEARCH=y | ||
| 996 | CONFIG_TEXTSEARCH_KMP=m | ||
| 997 | CONFIG_TEXTSEARCH_BM=m | ||
| 998 | CONFIG_TEXTSEARCH_FSM=m | ||
diff --git a/arch/powerpc/configs/maple_defconfig b/arch/powerpc/configs/maple_defconfig new file mode 100644 index 000000000000..7b480f3d1406 --- /dev/null +++ b/arch/powerpc/configs/maple_defconfig | |||
| @@ -0,0 +1,1062 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.14-rc4 | ||
| 4 | # Thu Oct 20 08:31:24 2005 | ||
| 5 | # | ||
| 6 | CONFIG_64BIT=y | ||
| 7 | CONFIG_MMU=y | ||
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 10 | CONFIG_GENERIC_ISA_DMA=y | ||
| 11 | CONFIG_EARLY_PRINTK=y | ||
| 12 | CONFIG_COMPAT=y | ||
| 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
| 16 | |||
| 17 | # | ||
| 18 | # Code maturity level options | ||
| 19 | # | ||
| 20 | CONFIG_EXPERIMENTAL=y | ||
| 21 | CONFIG_CLEAN_COMPILE=y | ||
| 22 | CONFIG_LOCK_KERNEL=y | ||
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 24 | |||
| 25 | # | ||
| 26 | # General setup | ||
| 27 | # | ||
| 28 | CONFIG_LOCALVERSION="" | ||
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 30 | CONFIG_SWAP=y | ||
| 31 | CONFIG_SYSVIPC=y | ||
| 32 | CONFIG_POSIX_MQUEUE=y | ||
| 33 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
| 34 | CONFIG_SYSCTL=y | ||
| 35 | # CONFIG_AUDIT is not set | ||
| 36 | # CONFIG_HOTPLUG is not set | ||
| 37 | CONFIG_KOBJECT_UEVENT=y | ||
| 38 | CONFIG_IKCONFIG=y | ||
| 39 | CONFIG_IKCONFIG_PROC=y | ||
| 40 | # CONFIG_CPUSETS is not set | ||
| 41 | CONFIG_INITRAMFS_SOURCE="" | ||
| 42 | # CONFIG_EMBEDDED is not set | ||
| 43 | CONFIG_KALLSYMS=y | ||
| 44 | CONFIG_KALLSYMS_ALL=y | ||
| 45 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 46 | CONFIG_PRINTK=y | ||
| 47 | CONFIG_BUG=y | ||
| 48 | CONFIG_BASE_FULL=y | ||
| 49 | CONFIG_FUTEX=y | ||
| 50 | CONFIG_EPOLL=y | ||
| 51 | CONFIG_SHMEM=y | ||
| 52 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
| 53 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 54 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 55 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 56 | # CONFIG_TINY_SHMEM is not set | ||
| 57 | CONFIG_BASE_SMALL=0 | ||
| 58 | |||
| 59 | # | ||
| 60 | # Loadable module support | ||
| 61 | # | ||
| 62 | CONFIG_MODULES=y | ||
| 63 | CONFIG_MODULE_UNLOAD=y | ||
| 64 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
| 65 | CONFIG_OBSOLETE_MODPARM=y | ||
| 66 | CONFIG_MODVERSIONS=y | ||
| 67 | CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 68 | CONFIG_KMOD=y | ||
| 69 | CONFIG_STOP_MACHINE=y | ||
| 70 | CONFIG_SYSVIPC_COMPAT=y | ||
| 71 | |||
| 72 | # | ||
| 73 | # Platform support | ||
| 74 | # | ||
| 75 | # CONFIG_PPC_ISERIES is not set | ||
| 76 | CONFIG_PPC_MULTIPLATFORM=y | ||
| 77 | # CONFIG_PPC_PSERIES is not set | ||
| 78 | # CONFIG_PPC_BPA is not set | ||
| 79 | # CONFIG_PPC_PMAC is not set | ||
| 80 | CONFIG_PPC_MAPLE=y | ||
| 81 | CONFIG_PPC=y | ||
| 82 | CONFIG_PPC64=y | ||
| 83 | CONFIG_PPC_OF=y | ||
| 84 | CONFIG_MPIC=y | ||
| 85 | # CONFIG_ALTIVEC is not set | ||
| 86 | CONFIG_KEXEC=y | ||
| 87 | CONFIG_U3_DART=y | ||
| 88 | CONFIG_MPIC_BROKEN_U3=y | ||
| 89 | CONFIG_BOOTX_TEXT=y | ||
| 90 | CONFIG_POWER4_ONLY=y | ||
| 91 | CONFIG_IOMMU_VMERGE=y | ||
| 92 | CONFIG_SMP=y | ||
| 93 | CONFIG_NR_CPUS=2 | ||
| 94 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
| 95 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 96 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 97 | CONFIG_FLATMEM_MANUAL=y | ||
| 98 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 99 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 100 | CONFIG_FLATMEM=y | ||
| 101 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 102 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 103 | # CONFIG_NUMA is not set | ||
| 104 | # CONFIG_SCHED_SMT is not set | ||
| 105 | CONFIG_PREEMPT_NONE=y | ||
| 106 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 107 | # CONFIG_PREEMPT is not set | ||
| 108 | # CONFIG_PREEMPT_BKL is not set | ||
| 109 | # CONFIG_HZ_100 is not set | ||
| 110 | CONFIG_HZ_250=y | ||
| 111 | # CONFIG_HZ_1000 is not set | ||
| 112 | CONFIG_HZ=250 | ||
| 113 | CONFIG_GENERIC_HARDIRQS=y | ||
| 114 | CONFIG_SECCOMP=y | ||
| 115 | CONFIG_BINFMT_ELF=y | ||
| 116 | # CONFIG_BINFMT_MISC is not set | ||
| 117 | CONFIG_PROC_DEVICETREE=y | ||
| 118 | # CONFIG_CMDLINE_BOOL is not set | ||
| 119 | CONFIG_ISA_DMA_API=y | ||
| 120 | |||
| 121 | # | ||
| 122 | # Bus Options | ||
| 123 | # | ||
| 124 | CONFIG_PCI=y | ||
| 125 | CONFIG_PCI_DOMAINS=y | ||
| 126 | CONFIG_PCI_LEGACY_PROC=y | ||
| 127 | # CONFIG_PCI_DEBUG is not set | ||
| 128 | |||
| 129 | # | ||
| 130 | # PCCARD (PCMCIA/CardBus) support | ||
| 131 | # | ||
| 132 | # CONFIG_PCCARD is not set | ||
| 133 | |||
| 134 | # | ||
| 135 | # PCI Hotplug Support | ||
| 136 | # | ||
| 137 | # CONFIG_HOTPLUG_PCI is not set | ||
| 138 | |||
| 139 | # | ||
| 140 | # Networking | ||
| 141 | # | ||
| 142 | CONFIG_NET=y | ||
| 143 | |||
| 144 | # | ||
| 145 | # Networking options | ||
| 146 | # | ||
| 147 | CONFIG_PACKET=y | ||
| 148 | CONFIG_PACKET_MMAP=y | ||
| 149 | CONFIG_UNIX=y | ||
| 150 | # CONFIG_NET_KEY is not set | ||
| 151 | CONFIG_INET=y | ||
| 152 | CONFIG_IP_MULTICAST=y | ||
| 153 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 154 | CONFIG_IP_FIB_HASH=y | ||
| 155 | CONFIG_IP_PNP=y | ||
| 156 | CONFIG_IP_PNP_DHCP=y | ||
| 157 | # CONFIG_IP_PNP_BOOTP is not set | ||
| 158 | # CONFIG_IP_PNP_RARP is not set | ||
| 159 | # CONFIG_NET_IPIP is not set | ||
| 160 | # CONFIG_NET_IPGRE is not set | ||
| 161 | # CONFIG_IP_MROUTE is not set | ||
| 162 | # CONFIG_ARPD is not set | ||
| 163 | # CONFIG_SYN_COOKIES is not set | ||
| 164 | # CONFIG_INET_AH is not set | ||
| 165 | # CONFIG_INET_ESP is not set | ||
| 166 | # CONFIG_INET_IPCOMP is not set | ||
| 167 | # CONFIG_INET_TUNNEL is not set | ||
| 168 | CONFIG_INET_DIAG=y | ||
| 169 | CONFIG_INET_TCP_DIAG=y | ||
| 170 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 171 | CONFIG_TCP_CONG_BIC=y | ||
| 172 | # CONFIG_IPV6 is not set | ||
| 173 | # CONFIG_NETFILTER is not set | ||
| 174 | |||
| 175 | # | ||
| 176 | # DCCP Configuration (EXPERIMENTAL) | ||
| 177 | # | ||
| 178 | # CONFIG_IP_DCCP is not set | ||
| 179 | |||
| 180 | # | ||
| 181 | # SCTP Configuration (EXPERIMENTAL) | ||
| 182 | # | ||
| 183 | # CONFIG_IP_SCTP is not set | ||
| 184 | # CONFIG_ATM is not set | ||
| 185 | # CONFIG_BRIDGE is not set | ||
| 186 | # CONFIG_VLAN_8021Q is not set | ||
| 187 | # CONFIG_DECNET is not set | ||
| 188 | # CONFIG_LLC2 is not set | ||
| 189 | # CONFIG_IPX is not set | ||
| 190 | # CONFIG_ATALK is not set | ||
| 191 | # CONFIG_X25 is not set | ||
| 192 | # CONFIG_LAPB is not set | ||
| 193 | # CONFIG_NET_DIVERT is not set | ||
| 194 | # CONFIG_ECONET is not set | ||
| 195 | # CONFIG_WAN_ROUTER is not set | ||
| 196 | # CONFIG_NET_SCHED is not set | ||
| 197 | # CONFIG_NET_CLS_ROUTE is not set | ||
| 198 | |||
| 199 | # | ||
| 200 | # Network testing | ||
| 201 | # | ||
| 202 | # CONFIG_NET_PKTGEN is not set | ||
| 203 | # CONFIG_HAMRADIO is not set | ||
| 204 | # CONFIG_IRDA is not set | ||
| 205 | # CONFIG_BT is not set | ||
| 206 | # CONFIG_IEEE80211 is not set | ||
| 207 | |||
| 208 | # | ||
| 209 | # Device Drivers | ||
| 210 | # | ||
| 211 | |||
| 212 | # | ||
| 213 | # Generic Driver Options | ||
| 214 | # | ||
| 215 | CONFIG_STANDALONE=y | ||
| 216 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 217 | # CONFIG_FW_LOADER is not set | ||
| 218 | # CONFIG_DEBUG_DRIVER is not set | ||
| 219 | |||
| 220 | # | ||
| 221 | # Connector - unified userspace <-> kernelspace linker | ||
| 222 | # | ||
| 223 | # CONFIG_CONNECTOR is not set | ||
| 224 | |||
| 225 | # | ||
| 226 | # Memory Technology Devices (MTD) | ||
| 227 | # | ||
| 228 | # CONFIG_MTD is not set | ||
| 229 | |||
| 230 | # | ||
| 231 | # Parallel port support | ||
| 232 | # | ||
| 233 | # CONFIG_PARPORT is not set | ||
| 234 | |||
| 235 | # | ||
| 236 | # Plug and Play support | ||
| 237 | # | ||
| 238 | |||
| 239 | # | ||
| 240 | # Block devices | ||
| 241 | # | ||
| 242 | # CONFIG_BLK_DEV_FD is not set | ||
| 243 | # CONFIG_BLK_CPQ_DA is not set | ||
| 244 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 245 | # CONFIG_BLK_DEV_DAC960 is not set | ||
| 246 | # CONFIG_BLK_DEV_UMEM is not set | ||
| 247 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 248 | # CONFIG_BLK_DEV_LOOP is not set | ||
| 249 | # CONFIG_BLK_DEV_NBD is not set | ||
| 250 | # CONFIG_BLK_DEV_SX8 is not set | ||
| 251 | # CONFIG_BLK_DEV_UB is not set | ||
| 252 | CONFIG_BLK_DEV_RAM=y | ||
| 253 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 254 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
| 255 | # CONFIG_BLK_DEV_INITRD is not set | ||
| 256 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 257 | |||
| 258 | # | ||
| 259 | # IO Schedulers | ||
| 260 | # | ||
| 261 | CONFIG_IOSCHED_NOOP=y | ||
| 262 | CONFIG_IOSCHED_AS=y | ||
| 263 | CONFIG_IOSCHED_DEADLINE=y | ||
| 264 | CONFIG_IOSCHED_CFQ=y | ||
| 265 | # CONFIG_ATA_OVER_ETH is not set | ||
| 266 | |||
| 267 | # | ||
| 268 | # ATA/ATAPI/MFM/RLL support | ||
| 269 | # | ||
| 270 | CONFIG_IDE=y | ||
| 271 | CONFIG_BLK_DEV_IDE=y | ||
| 272 | |||
| 273 | # | ||
| 274 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
| 275 | # | ||
| 276 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
| 277 | CONFIG_BLK_DEV_IDEDISK=y | ||
| 278 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
| 279 | CONFIG_BLK_DEV_IDECD=y | ||
| 280 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
| 281 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
| 282 | CONFIG_IDE_TASK_IOCTL=y | ||
| 283 | |||
| 284 | # | ||
| 285 | # IDE chipset support/bugfixes | ||
| 286 | # | ||
| 287 | CONFIG_IDE_GENERIC=y | ||
| 288 | CONFIG_BLK_DEV_IDEPCI=y | ||
| 289 | CONFIG_IDEPCI_SHARE_IRQ=y | ||
| 290 | # CONFIG_BLK_DEV_OFFBOARD is not set | ||
| 291 | CONFIG_BLK_DEV_GENERIC=y | ||
| 292 | # CONFIG_BLK_DEV_OPTI621 is not set | ||
| 293 | # CONFIG_BLK_DEV_SL82C105 is not set | ||
| 294 | CONFIG_BLK_DEV_IDEDMA_PCI=y | ||
| 295 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | ||
| 296 | CONFIG_IDEDMA_PCI_AUTO=y | ||
| 297 | # CONFIG_IDEDMA_ONLYDISK is not set | ||
| 298 | # CONFIG_BLK_DEV_AEC62XX is not set | ||
| 299 | # CONFIG_BLK_DEV_ALI15X3 is not set | ||
| 300 | CONFIG_BLK_DEV_AMD74XX=y | ||
| 301 | # CONFIG_BLK_DEV_CMD64X is not set | ||
| 302 | # CONFIG_BLK_DEV_TRIFLEX is not set | ||
| 303 | # CONFIG_BLK_DEV_CY82C693 is not set | ||
| 304 | # CONFIG_BLK_DEV_CS5520 is not set | ||
| 305 | # CONFIG_BLK_DEV_CS5530 is not set | ||
| 306 | # CONFIG_BLK_DEV_HPT34X is not set | ||
| 307 | # CONFIG_BLK_DEV_HPT366 is not set | ||
| 308 | # CONFIG_BLK_DEV_SC1200 is not set | ||
| 309 | # CONFIG_BLK_DEV_PIIX is not set | ||
| 310 | # CONFIG_BLK_DEV_IT821X is not set | ||
| 311 | # CONFIG_BLK_DEV_NS87415 is not set | ||
| 312 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | ||
| 313 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | ||
| 314 | # CONFIG_BLK_DEV_SVWKS is not set | ||
| 315 | # CONFIG_BLK_DEV_SIIMAGE is not set | ||
| 316 | # CONFIG_BLK_DEV_SLC90E66 is not set | ||
| 317 | # CONFIG_BLK_DEV_TRM290 is not set | ||
| 318 | # CONFIG_BLK_DEV_VIA82CXXX is not set | ||
| 319 | # CONFIG_IDE_ARM is not set | ||
| 320 | CONFIG_BLK_DEV_IDEDMA=y | ||
| 321 | # CONFIG_IDEDMA_IVB is not set | ||
| 322 | CONFIG_IDEDMA_AUTO=y | ||
| 323 | # CONFIG_BLK_DEV_HD is not set | ||
| 324 | |||
| 325 | # | ||
| 326 | # SCSI device support | ||
| 327 | # | ||
| 328 | # CONFIG_RAID_ATTRS is not set | ||
| 329 | # CONFIG_SCSI is not set | ||
| 330 | |||
| 331 | # | ||
| 332 | # Multi-device support (RAID and LVM) | ||
| 333 | # | ||
| 334 | # CONFIG_MD is not set | ||
| 335 | |||
| 336 | # | ||
| 337 | # Fusion MPT device support | ||
| 338 | # | ||
| 339 | # CONFIG_FUSION is not set | ||
| 340 | |||
| 341 | # | ||
| 342 | # IEEE 1394 (FireWire) support | ||
| 343 | # | ||
| 344 | # CONFIG_IEEE1394 is not set | ||
| 345 | |||
| 346 | # | ||
| 347 | # I2O device support | ||
| 348 | # | ||
| 349 | # CONFIG_I2O is not set | ||
| 350 | |||
| 351 | # | ||
| 352 | # Macintosh device drivers | ||
| 353 | # | ||
| 354 | |||
| 355 | # | ||
| 356 | # Network device support | ||
| 357 | # | ||
| 358 | CONFIG_NETDEVICES=y | ||
| 359 | # CONFIG_DUMMY is not set | ||
| 360 | # CONFIG_BONDING is not set | ||
| 361 | # CONFIG_EQUALIZER is not set | ||
| 362 | # CONFIG_TUN is not set | ||
| 363 | |||
| 364 | # | ||
| 365 | # ARCnet devices | ||
| 366 | # | ||
| 367 | # CONFIG_ARCNET is not set | ||
| 368 | |||
| 369 | # | ||
| 370 | # PHY device support | ||
| 371 | # | ||
| 372 | # CONFIG_PHYLIB is not set | ||
| 373 | |||
| 374 | # | ||
| 375 | # Ethernet (10 or 100Mbit) | ||
| 376 | # | ||
| 377 | CONFIG_NET_ETHERNET=y | ||
| 378 | CONFIG_MII=y | ||
| 379 | # CONFIG_HAPPYMEAL is not set | ||
| 380 | # CONFIG_SUNGEM is not set | ||
| 381 | # CONFIG_CASSINI is not set | ||
| 382 | # CONFIG_NET_VENDOR_3COM is not set | ||
| 383 | |||
| 384 | # | ||
| 385 | # Tulip family network device support | ||
| 386 | # | ||
| 387 | # CONFIG_NET_TULIP is not set | ||
| 388 | # CONFIG_HP100 is not set | ||
| 389 | CONFIG_NET_PCI=y | ||
| 390 | # CONFIG_PCNET32 is not set | ||
| 391 | CONFIG_AMD8111_ETH=y | ||
| 392 | # CONFIG_AMD8111E_NAPI is not set | ||
| 393 | # CONFIG_ADAPTEC_STARFIRE is not set | ||
| 394 | # CONFIG_B44 is not set | ||
| 395 | # CONFIG_FORCEDETH is not set | ||
| 396 | # CONFIG_DGRS is not set | ||
| 397 | # CONFIG_EEPRO100 is not set | ||
| 398 | # CONFIG_E100 is not set | ||
| 399 | # CONFIG_FEALNX is not set | ||
| 400 | # CONFIG_NATSEMI is not set | ||
| 401 | # CONFIG_NE2K_PCI is not set | ||
| 402 | # CONFIG_8139CP is not set | ||
| 403 | # CONFIG_8139TOO is not set | ||
| 404 | # CONFIG_SIS900 is not set | ||
| 405 | # CONFIG_EPIC100 is not set | ||
| 406 | # CONFIG_SUNDANCE is not set | ||
| 407 | # CONFIG_VIA_RHINE is not set | ||
| 408 | |||
| 409 | # | ||
| 410 | # Ethernet (1000 Mbit) | ||
| 411 | # | ||
| 412 | # CONFIG_ACENIC is not set | ||
| 413 | # CONFIG_DL2K is not set | ||
| 414 | CONFIG_E1000=y | ||
| 415 | # CONFIG_E1000_NAPI is not set | ||
| 416 | # CONFIG_NS83820 is not set | ||
| 417 | # CONFIG_HAMACHI is not set | ||
| 418 | # CONFIG_YELLOWFIN is not set | ||
| 419 | # CONFIG_R8169 is not set | ||
| 420 | # CONFIG_SIS190 is not set | ||
| 421 | # CONFIG_SKGE is not set | ||
| 422 | # CONFIG_SK98LIN is not set | ||
| 423 | # CONFIG_VIA_VELOCITY is not set | ||
| 424 | # CONFIG_TIGON3 is not set | ||
| 425 | # CONFIG_BNX2 is not set | ||
| 426 | # CONFIG_MV643XX_ETH is not set | ||
| 427 | |||
| 428 | # | ||
| 429 | # Ethernet (10000 Mbit) | ||
| 430 | # | ||
| 431 | # CONFIG_CHELSIO_T1 is not set | ||
| 432 | # CONFIG_IXGB is not set | ||
| 433 | # CONFIG_S2IO is not set | ||
| 434 | |||
| 435 | # | ||
| 436 | # Token Ring devices | ||
| 437 | # | ||
| 438 | # CONFIG_TR is not set | ||
| 439 | |||
| 440 | # | ||
| 441 | # Wireless LAN (non-hamradio) | ||
| 442 | # | ||
| 443 | # CONFIG_NET_RADIO is not set | ||
| 444 | |||
| 445 | # | ||
| 446 | # Wan interfaces | ||
| 447 | # | ||
| 448 | # CONFIG_WAN is not set | ||
| 449 | # CONFIG_FDDI is not set | ||
| 450 | # CONFIG_HIPPI is not set | ||
| 451 | # CONFIG_PPP is not set | ||
| 452 | # CONFIG_SLIP is not set | ||
| 453 | # CONFIG_SHAPER is not set | ||
| 454 | # CONFIG_NETCONSOLE is not set | ||
| 455 | # CONFIG_NETPOLL is not set | ||
| 456 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 457 | |||
| 458 | # | ||
| 459 | # ISDN subsystem | ||
| 460 | # | ||
| 461 | # CONFIG_ISDN is not set | ||
| 462 | |||
| 463 | # | ||
| 464 | # Telephony Support | ||
| 465 | # | ||
| 466 | # CONFIG_PHONE is not set | ||
| 467 | |||
| 468 | # | ||
| 469 | # Input device support | ||
| 470 | # | ||
| 471 | CONFIG_INPUT=y | ||
| 472 | |||
| 473 | # | ||
| 474 | # Userland interfaces | ||
| 475 | # | ||
| 476 | CONFIG_INPUT_MOUSEDEV=y | ||
| 477 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
| 478 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1600 | ||
| 479 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1200 | ||
| 480 | # CONFIG_INPUT_JOYDEV is not set | ||
| 481 | # CONFIG_INPUT_TSDEV is not set | ||
| 482 | # CONFIG_INPUT_EVDEV is not set | ||
| 483 | # CONFIG_INPUT_EVBUG is not set | ||
| 484 | |||
| 485 | # | ||
| 486 | # Input Device Drivers | ||
| 487 | # | ||
| 488 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 489 | # CONFIG_INPUT_MOUSE is not set | ||
| 490 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 491 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 492 | # CONFIG_INPUT_MISC is not set | ||
| 493 | |||
| 494 | # | ||
| 495 | # Hardware I/O ports | ||
| 496 | # | ||
| 497 | # CONFIG_SERIO is not set | ||
| 498 | # CONFIG_GAMEPORT is not set | ||
| 499 | |||
| 500 | # | ||
| 501 | # Character devices | ||
| 502 | # | ||
| 503 | CONFIG_VT=y | ||
| 504 | CONFIG_VT_CONSOLE=y | ||
| 505 | CONFIG_HW_CONSOLE=y | ||
| 506 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 507 | |||
| 508 | # | ||
| 509 | # Serial drivers | ||
| 510 | # | ||
| 511 | CONFIG_SERIAL_8250=y | ||
| 512 | CONFIG_SERIAL_8250_CONSOLE=y | ||
| 513 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
| 514 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
| 515 | |||
| 516 | # | ||
| 517 | # Non-8250 serial port support | ||
| 518 | # | ||
| 519 | CONFIG_SERIAL_CORE=y | ||
| 520 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 521 | # CONFIG_SERIAL_JSM is not set | ||
| 522 | CONFIG_UNIX98_PTYS=y | ||
| 523 | CONFIG_LEGACY_PTYS=y | ||
| 524 | CONFIG_LEGACY_PTY_COUNT=256 | ||
| 525 | |||
| 526 | # | ||
| 527 | # IPMI | ||
| 528 | # | ||
| 529 | # CONFIG_IPMI_HANDLER is not set | ||
| 530 | |||
| 531 | # | ||
| 532 | # Watchdog Cards | ||
| 533 | # | ||
| 534 | # CONFIG_WATCHDOG is not set | ||
| 535 | # CONFIG_RTC is not set | ||
| 536 | # CONFIG_DTLK is not set | ||
| 537 | # CONFIG_R3964 is not set | ||
| 538 | # CONFIG_APPLICOM is not set | ||
| 539 | |||
| 540 | # | ||
| 541 | # Ftape, the floppy tape device driver | ||
| 542 | # | ||
| 543 | # CONFIG_AGP is not set | ||
| 544 | # CONFIG_DRM is not set | ||
| 545 | # CONFIG_RAW_DRIVER is not set | ||
| 546 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 547 | |||
| 548 | # | ||
| 549 | # TPM devices | ||
| 550 | # | ||
| 551 | # CONFIG_TCG_TPM is not set | ||
| 552 | |||
| 553 | # | ||
| 554 | # I2C support | ||
| 555 | # | ||
| 556 | CONFIG_I2C=y | ||
| 557 | CONFIG_I2C_CHARDEV=y | ||
| 558 | |||
| 559 | # | ||
| 560 | # I2C Algorithms | ||
| 561 | # | ||
| 562 | CONFIG_I2C_ALGOBIT=y | ||
| 563 | # CONFIG_I2C_ALGOPCF is not set | ||
| 564 | # CONFIG_I2C_ALGOPCA is not set | ||
| 565 | |||
| 566 | # | ||
| 567 | # I2C Hardware Bus support | ||
| 568 | # | ||
| 569 | # CONFIG_I2C_ALI1535 is not set | ||
| 570 | # CONFIG_I2C_ALI1563 is not set | ||
| 571 | # CONFIG_I2C_ALI15X3 is not set | ||
| 572 | # CONFIG_I2C_AMD756 is not set | ||
| 573 | CONFIG_I2C_AMD8111=y | ||
| 574 | # CONFIG_I2C_I801 is not set | ||
| 575 | # CONFIG_I2C_I810 is not set | ||
| 576 | # CONFIG_I2C_PIIX4 is not set | ||
| 577 | # CONFIG_I2C_NFORCE2 is not set | ||
| 578 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 579 | # CONFIG_I2C_PROSAVAGE is not set | ||
| 580 | # CONFIG_I2C_SAVAGE4 is not set | ||
| 581 | # CONFIG_SCx200_ACB is not set | ||
| 582 | # CONFIG_I2C_SIS5595 is not set | ||
| 583 | # CONFIG_I2C_SIS630 is not set | ||
| 584 | # CONFIG_I2C_SIS96X is not set | ||
| 585 | # CONFIG_I2C_STUB is not set | ||
| 586 | # CONFIG_I2C_VIA is not set | ||
| 587 | # CONFIG_I2C_VIAPRO is not set | ||
| 588 | # CONFIG_I2C_VOODOO3 is not set | ||
| 589 | # CONFIG_I2C_PCA_ISA is not set | ||
| 590 | |||
| 591 | # | ||
| 592 | # Miscellaneous I2C Chip support | ||
| 593 | # | ||
| 594 | # CONFIG_SENSORS_DS1337 is not set | ||
| 595 | # CONFIG_SENSORS_DS1374 is not set | ||
| 596 | # CONFIG_SENSORS_EEPROM is not set | ||
| 597 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 598 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 599 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 600 | # CONFIG_SENSORS_RTC8564 is not set | ||
| 601 | # CONFIG_SENSORS_MAX6875 is not set | ||
| 602 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 603 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 604 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 605 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 606 | |||
| 607 | # | ||
| 608 | # Dallas's 1-wire bus | ||
| 609 | # | ||
| 610 | # CONFIG_W1 is not set | ||
| 611 | |||
| 612 | # | ||
| 613 | # Hardware Monitoring support | ||
| 614 | # | ||
| 615 | # CONFIG_HWMON is not set | ||
| 616 | # CONFIG_HWMON_VID is not set | ||
| 617 | |||
| 618 | # | ||
| 619 | # Misc devices | ||
| 620 | # | ||
| 621 | |||
| 622 | # | ||
| 623 | # Multimedia Capabilities Port drivers | ||
| 624 | # | ||
| 625 | |||
| 626 | # | ||
| 627 | # Multimedia devices | ||
| 628 | # | ||
| 629 | # CONFIG_VIDEO_DEV is not set | ||
| 630 | |||
| 631 | # | ||
| 632 | # Digital Video Broadcasting Devices | ||
| 633 | # | ||
| 634 | # CONFIG_DVB is not set | ||
| 635 | |||
| 636 | # | ||
| 637 | # Graphics support | ||
| 638 | # | ||
| 639 | # CONFIG_FB is not set | ||
| 640 | |||
| 641 | # | ||
| 642 | # Console display driver support | ||
| 643 | # | ||
| 644 | # CONFIG_VGA_CONSOLE is not set | ||
| 645 | CONFIG_DUMMY_CONSOLE=y | ||
| 646 | |||
| 647 | # | ||
| 648 | # Sound | ||
| 649 | # | ||
| 650 | # CONFIG_SOUND is not set | ||
| 651 | |||
| 652 | # | ||
| 653 | # USB support | ||
| 654 | # | ||
| 655 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 656 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 657 | CONFIG_USB=y | ||
| 658 | # CONFIG_USB_DEBUG is not set | ||
| 659 | |||
| 660 | # | ||
| 661 | # Miscellaneous USB options | ||
| 662 | # | ||
| 663 | CONFIG_USB_DEVICEFS=y | ||
| 664 | # CONFIG_USB_BANDWIDTH is not set | ||
| 665 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
| 666 | # CONFIG_USB_OTG is not set | ||
| 667 | |||
| 668 | # | ||
| 669 | # USB Host Controller Drivers | ||
| 670 | # | ||
| 671 | CONFIG_USB_EHCI_HCD=y | ||
| 672 | CONFIG_USB_EHCI_SPLIT_ISO=y | ||
| 673 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
| 674 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 675 | CONFIG_USB_OHCI_HCD=y | ||
| 676 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
| 677 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
| 678 | CONFIG_USB_UHCI_HCD=y | ||
| 679 | # CONFIG_USB_SL811_HCD is not set | ||
| 680 | |||
| 681 | # | ||
| 682 | # USB Device Class drivers | ||
| 683 | # | ||
| 684 | # CONFIG_USB_BLUETOOTH_TTY is not set | ||
| 685 | # CONFIG_USB_ACM is not set | ||
| 686 | # CONFIG_USB_PRINTER is not set | ||
| 687 | |||
| 688 | # | ||
| 689 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
| 690 | # | ||
| 691 | # CONFIG_USB_STORAGE is not set | ||
| 692 | |||
| 693 | # | ||
| 694 | # USB Input Devices | ||
| 695 | # | ||
| 696 | CONFIG_USB_HID=y | ||
| 697 | CONFIG_USB_HIDINPUT=y | ||
| 698 | # CONFIG_HID_FF is not set | ||
| 699 | # CONFIG_USB_HIDDEV is not set | ||
| 700 | # CONFIG_USB_AIPTEK is not set | ||
| 701 | # CONFIG_USB_WACOM is not set | ||
| 702 | # CONFIG_USB_ACECAD is not set | ||
| 703 | # CONFIG_USB_KBTAB is not set | ||
| 704 | # CONFIG_USB_POWERMATE is not set | ||
| 705 | # CONFIG_USB_MTOUCH is not set | ||
| 706 | # CONFIG_USB_ITMTOUCH is not set | ||
| 707 | # CONFIG_USB_EGALAX is not set | ||
| 708 | # CONFIG_USB_YEALINK is not set | ||
| 709 | # CONFIG_USB_XPAD is not set | ||
| 710 | # CONFIG_USB_ATI_REMOTE is not set | ||
| 711 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
| 712 | # CONFIG_USB_APPLETOUCH is not set | ||
| 713 | |||
| 714 | # | ||
| 715 | # USB Imaging devices | ||
| 716 | # | ||
| 717 | # CONFIG_USB_MDC800 is not set | ||
| 718 | |||
| 719 | # | ||
| 720 | # USB Multimedia devices | ||
| 721 | # | ||
| 722 | # CONFIG_USB_DABUSB is not set | ||
| 723 | |||
| 724 | # | ||
| 725 | # Video4Linux support is needed for USB Multimedia device support | ||
| 726 | # | ||
| 727 | |||
| 728 | # | ||
| 729 | # USB Network Adapters | ||
| 730 | # | ||
| 731 | # CONFIG_USB_CATC is not set | ||
| 732 | # CONFIG_USB_KAWETH is not set | ||
| 733 | CONFIG_USB_PEGASUS=y | ||
| 734 | # CONFIG_USB_RTL8150 is not set | ||
| 735 | # CONFIG_USB_USBNET is not set | ||
| 736 | CONFIG_USB_MON=y | ||
| 737 | |||
| 738 | # | ||
| 739 | # USB port drivers | ||
| 740 | # | ||
| 741 | |||
| 742 | # | ||
| 743 | # USB Serial Converter support | ||
| 744 | # | ||
| 745 | CONFIG_USB_SERIAL=y | ||
| 746 | # CONFIG_USB_SERIAL_CONSOLE is not set | ||
| 747 | CONFIG_USB_SERIAL_GENERIC=y | ||
| 748 | # CONFIG_USB_SERIAL_AIRPRIME is not set | ||
| 749 | # CONFIG_USB_SERIAL_BELKIN is not set | ||
| 750 | # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set | ||
| 751 | # CONFIG_USB_SERIAL_CP2101 is not set | ||
| 752 | CONFIG_USB_SERIAL_CYPRESS_M8=m | ||
| 753 | # CONFIG_USB_SERIAL_EMPEG is not set | ||
| 754 | # CONFIG_USB_SERIAL_FTDI_SIO is not set | ||
| 755 | # CONFIG_USB_SERIAL_VISOR is not set | ||
| 756 | # CONFIG_USB_SERIAL_IPAQ is not set | ||
| 757 | # CONFIG_USB_SERIAL_IR is not set | ||
| 758 | # CONFIG_USB_SERIAL_EDGEPORT is not set | ||
| 759 | # CONFIG_USB_SERIAL_EDGEPORT_TI is not set | ||
| 760 | CONFIG_USB_SERIAL_GARMIN=m | ||
| 761 | CONFIG_USB_SERIAL_IPW=m | ||
| 762 | # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set | ||
| 763 | CONFIG_USB_SERIAL_KEYSPAN=y | ||
| 764 | CONFIG_USB_SERIAL_KEYSPAN_MPR=y | ||
| 765 | CONFIG_USB_SERIAL_KEYSPAN_USA28=y | ||
| 766 | CONFIG_USB_SERIAL_KEYSPAN_USA28X=y | ||
| 767 | CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y | ||
| 768 | CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y | ||
| 769 | CONFIG_USB_SERIAL_KEYSPAN_USA19=y | ||
| 770 | CONFIG_USB_SERIAL_KEYSPAN_USA18X=y | ||
| 771 | CONFIG_USB_SERIAL_KEYSPAN_USA19W=y | ||
| 772 | CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y | ||
| 773 | CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y | ||
| 774 | CONFIG_USB_SERIAL_KEYSPAN_USA49W=y | ||
| 775 | CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y | ||
| 776 | # CONFIG_USB_SERIAL_KLSI is not set | ||
| 777 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set | ||
| 778 | # CONFIG_USB_SERIAL_MCT_U232 is not set | ||
| 779 | # CONFIG_USB_SERIAL_PL2303 is not set | ||
| 780 | # CONFIG_USB_SERIAL_HP4X is not set | ||
| 781 | # CONFIG_USB_SERIAL_SAFE is not set | ||
| 782 | CONFIG_USB_SERIAL_TI=m | ||
| 783 | # CONFIG_USB_SERIAL_CYBERJACK is not set | ||
| 784 | # CONFIG_USB_SERIAL_XIRCOM is not set | ||
| 785 | # CONFIG_USB_SERIAL_OMNINET is not set | ||
| 786 | CONFIG_USB_EZUSB=y | ||
| 787 | |||
| 788 | # | ||
| 789 | # USB Miscellaneous drivers | ||
| 790 | # | ||
| 791 | # CONFIG_USB_EMI62 is not set | ||
| 792 | # CONFIG_USB_EMI26 is not set | ||
| 793 | # CONFIG_USB_AUERSWALD is not set | ||
| 794 | # CONFIG_USB_RIO500 is not set | ||
| 795 | # CONFIG_USB_LEGOTOWER is not set | ||
| 796 | # CONFIG_USB_LCD is not set | ||
| 797 | # CONFIG_USB_LED is not set | ||
| 798 | # CONFIG_USB_CYTHERM is not set | ||
| 799 | # CONFIG_USB_PHIDGETKIT is not set | ||
| 800 | # CONFIG_USB_PHIDGETSERVO is not set | ||
| 801 | # CONFIG_USB_IDMOUSE is not set | ||
| 802 | # CONFIG_USB_SISUSBVGA is not set | ||
| 803 | # CONFIG_USB_LD is not set | ||
| 804 | # CONFIG_USB_TEST is not set | ||
| 805 | |||
| 806 | # | ||
| 807 | # USB DSL modem support | ||
| 808 | # | ||
| 809 | |||
| 810 | # | ||
| 811 | # USB Gadget Support | ||
| 812 | # | ||
| 813 | # CONFIG_USB_GADGET is not set | ||
| 814 | |||
| 815 | # | ||
| 816 | # MMC/SD Card support | ||
| 817 | # | ||
| 818 | # CONFIG_MMC is not set | ||
| 819 | |||
| 820 | # | ||
| 821 | # InfiniBand support | ||
| 822 | # | ||
| 823 | # CONFIG_INFINIBAND is not set | ||
| 824 | |||
| 825 | # | ||
| 826 | # SN Devices | ||
| 827 | # | ||
| 828 | |||
| 829 | # | ||
| 830 | # File systems | ||
| 831 | # | ||
| 832 | CONFIG_EXT2_FS=y | ||
| 833 | # CONFIG_EXT2_FS_XATTR is not set | ||
| 834 | CONFIG_EXT2_FS_XIP=y | ||
| 835 | CONFIG_FS_XIP=y | ||
| 836 | CONFIG_EXT3_FS=y | ||
| 837 | # CONFIG_EXT3_FS_XATTR is not set | ||
| 838 | CONFIG_JBD=y | ||
| 839 | # CONFIG_JBD_DEBUG is not set | ||
| 840 | # CONFIG_REISERFS_FS is not set | ||
| 841 | # CONFIG_JFS_FS is not set | ||
| 842 | CONFIG_FS_POSIX_ACL=y | ||
| 843 | # CONFIG_XFS_FS is not set | ||
| 844 | # CONFIG_MINIX_FS is not set | ||
| 845 | # CONFIG_ROMFS_FS is not set | ||
| 846 | CONFIG_INOTIFY=y | ||
| 847 | # CONFIG_QUOTA is not set | ||
| 848 | CONFIG_DNOTIFY=y | ||
| 849 | # CONFIG_AUTOFS_FS is not set | ||
| 850 | # CONFIG_AUTOFS4_FS is not set | ||
| 851 | # CONFIG_FUSE_FS is not set | ||
| 852 | |||
| 853 | # | ||
| 854 | # CD-ROM/DVD Filesystems | ||
| 855 | # | ||
| 856 | # CONFIG_ISO9660_FS is not set | ||
| 857 | # CONFIG_UDF_FS is not set | ||
| 858 | |||
| 859 | # | ||
| 860 | # DOS/FAT/NT Filesystems | ||
| 861 | # | ||
| 862 | CONFIG_FAT_FS=y | ||
| 863 | CONFIG_MSDOS_FS=y | ||
| 864 | CONFIG_VFAT_FS=y | ||
| 865 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 866 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 867 | # CONFIG_NTFS_FS is not set | ||
| 868 | |||
| 869 | # | ||
| 870 | # Pseudo filesystems | ||
| 871 | # | ||
| 872 | CONFIG_PROC_FS=y | ||
| 873 | CONFIG_PROC_KCORE=y | ||
| 874 | CONFIG_SYSFS=y | ||
| 875 | CONFIG_TMPFS=y | ||
| 876 | CONFIG_HUGETLBFS=y | ||
| 877 | CONFIG_HUGETLB_PAGE=y | ||
| 878 | CONFIG_RAMFS=y | ||
| 879 | # CONFIG_RELAYFS_FS is not set | ||
| 880 | |||
| 881 | # | ||
| 882 | # Miscellaneous filesystems | ||
| 883 | # | ||
| 884 | # CONFIG_ADFS_FS is not set | ||
| 885 | # CONFIG_AFFS_FS is not set | ||
| 886 | # CONFIG_HFS_FS is not set | ||
| 887 | # CONFIG_HFSPLUS_FS is not set | ||
| 888 | # CONFIG_BEFS_FS is not set | ||
| 889 | # CONFIG_BFS_FS is not set | ||
| 890 | # CONFIG_EFS_FS is not set | ||
| 891 | CONFIG_CRAMFS=y | ||
| 892 | # CONFIG_VXFS_FS is not set | ||
| 893 | # CONFIG_HPFS_FS is not set | ||
| 894 | # CONFIG_QNX4FS_FS is not set | ||
| 895 | # CONFIG_SYSV_FS is not set | ||
| 896 | # CONFIG_UFS_FS is not set | ||
| 897 | |||
| 898 | # | ||
| 899 | # Network File Systems | ||
| 900 | # | ||
| 901 | CONFIG_NFS_FS=y | ||
| 902 | CONFIG_NFS_V3=y | ||
| 903 | CONFIG_NFS_V3_ACL=y | ||
| 904 | CONFIG_NFS_V4=y | ||
| 905 | # CONFIG_NFS_DIRECTIO is not set | ||
| 906 | # CONFIG_NFSD is not set | ||
| 907 | CONFIG_ROOT_NFS=y | ||
| 908 | CONFIG_LOCKD=y | ||
| 909 | CONFIG_LOCKD_V4=y | ||
| 910 | CONFIG_NFS_ACL_SUPPORT=y | ||
| 911 | CONFIG_NFS_COMMON=y | ||
| 912 | CONFIG_SUNRPC=y | ||
| 913 | CONFIG_SUNRPC_GSS=y | ||
| 914 | CONFIG_RPCSEC_GSS_KRB5=y | ||
| 915 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 916 | # CONFIG_SMB_FS is not set | ||
| 917 | # CONFIG_CIFS is not set | ||
| 918 | # CONFIG_NCP_FS is not set | ||
| 919 | # CONFIG_CODA_FS is not set | ||
| 920 | # CONFIG_AFS_FS is not set | ||
| 921 | # CONFIG_9P_FS is not set | ||
| 922 | |||
| 923 | # | ||
| 924 | # Partition Types | ||
| 925 | # | ||
| 926 | CONFIG_PARTITION_ADVANCED=y | ||
| 927 | # CONFIG_ACORN_PARTITION is not set | ||
| 928 | # CONFIG_OSF_PARTITION is not set | ||
| 929 | # CONFIG_AMIGA_PARTITION is not set | ||
| 930 | # CONFIG_ATARI_PARTITION is not set | ||
| 931 | CONFIG_MAC_PARTITION=y | ||
| 932 | CONFIG_MSDOS_PARTITION=y | ||
| 933 | # CONFIG_BSD_DISKLABEL is not set | ||
| 934 | # CONFIG_MINIX_SUBPARTITION is not set | ||
| 935 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
| 936 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
| 937 | # CONFIG_LDM_PARTITION is not set | ||
| 938 | # CONFIG_SGI_PARTITION is not set | ||
| 939 | # CONFIG_ULTRIX_PARTITION is not set | ||
| 940 | # CONFIG_SUN_PARTITION is not set | ||
| 941 | # CONFIG_EFI_PARTITION is not set | ||
| 942 | |||
| 943 | # | ||
| 944 | # Native Language Support | ||
| 945 | # | ||
| 946 | CONFIG_NLS=y | ||
| 947 | CONFIG_NLS_DEFAULT="utf-8" | ||
| 948 | # CONFIG_NLS_CODEPAGE_437 is not set | ||
| 949 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 950 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 951 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 952 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 953 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 954 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 955 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 956 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 957 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 958 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 959 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 960 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 961 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 962 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 963 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 964 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 965 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 966 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 967 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 968 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 969 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 970 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 971 | # CONFIG_NLS_ASCII is not set | ||
| 972 | # CONFIG_NLS_ISO8859_1 is not set | ||
| 973 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 974 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 975 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 976 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 977 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 978 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 979 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 980 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 981 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 982 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 983 | # CONFIG_NLS_KOI8_R is not set | ||
| 984 | # CONFIG_NLS_KOI8_U is not set | ||
| 985 | CONFIG_NLS_UTF8=y | ||
| 986 | |||
| 987 | # | ||
| 988 | # Profiling support | ||
| 989 | # | ||
| 990 | # CONFIG_PROFILING is not set | ||
| 991 | |||
| 992 | # | ||
| 993 | # Kernel hacking | ||
| 994 | # | ||
| 995 | # CONFIG_PRINTK_TIME is not set | ||
| 996 | CONFIG_DEBUG_KERNEL=y | ||
| 997 | CONFIG_MAGIC_SYSRQ=y | ||
| 998 | CONFIG_LOG_BUF_SHIFT=17 | ||
| 999 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1000 | # CONFIG_SCHEDSTATS is not set | ||
| 1001 | CONFIG_DEBUG_SLAB=y | ||
| 1002 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 1003 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | ||
| 1004 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 1005 | # CONFIG_DEBUG_INFO is not set | ||
| 1006 | CONFIG_DEBUG_FS=y | ||
| 1007 | CONFIG_DEBUG_STACKOVERFLOW=y | ||
| 1008 | # CONFIG_KPROBES is not set | ||
| 1009 | CONFIG_DEBUG_STACK_USAGE=y | ||
| 1010 | CONFIG_DEBUGGER=y | ||
| 1011 | CONFIG_XMON=y | ||
| 1012 | CONFIG_XMON_DEFAULT=y | ||
| 1013 | # CONFIG_PPCDBG is not set | ||
| 1014 | # CONFIG_IRQSTACKS is not set | ||
| 1015 | |||
| 1016 | # | ||
| 1017 | # Security options | ||
| 1018 | # | ||
| 1019 | # CONFIG_KEYS is not set | ||
| 1020 | # CONFIG_SECURITY is not set | ||
| 1021 | |||
| 1022 | # | ||
| 1023 | # Cryptographic options | ||
| 1024 | # | ||
| 1025 | CONFIG_CRYPTO=y | ||
| 1026 | # CONFIG_CRYPTO_HMAC is not set | ||
| 1027 | # CONFIG_CRYPTO_NULL is not set | ||
| 1028 | # CONFIG_CRYPTO_MD4 is not set | ||
| 1029 | CONFIG_CRYPTO_MD5=y | ||
| 1030 | # CONFIG_CRYPTO_SHA1 is not set | ||
| 1031 | # CONFIG_CRYPTO_SHA256 is not set | ||
| 1032 | # CONFIG_CRYPTO_SHA512 is not set | ||
| 1033 | # CONFIG_CRYPTO_WP512 is not set | ||
| 1034 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 1035 | CONFIG_CRYPTO_DES=y | ||
| 1036 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
| 1037 | # CONFIG_CRYPTO_TWOFISH is not set | ||
| 1038 | # CONFIG_CRYPTO_SERPENT is not set | ||
| 1039 | # CONFIG_CRYPTO_AES is not set | ||
| 1040 | # CONFIG_CRYPTO_CAST5 is not set | ||
| 1041 | # CONFIG_CRYPTO_CAST6 is not set | ||
| 1042 | # CONFIG_CRYPTO_TEA is not set | ||
| 1043 | # CONFIG_CRYPTO_ARC4 is not set | ||
| 1044 | # CONFIG_CRYPTO_KHAZAD is not set | ||
| 1045 | # CONFIG_CRYPTO_ANUBIS is not set | ||
| 1046 | # CONFIG_CRYPTO_DEFLATE is not set | ||
| 1047 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 1048 | # CONFIG_CRYPTO_CRC32C is not set | ||
| 1049 | # CONFIG_CRYPTO_TEST is not set | ||
| 1050 | |||
| 1051 | # | ||
| 1052 | # Hardware crypto devices | ||
| 1053 | # | ||
| 1054 | |||
| 1055 | # | ||
| 1056 | # Library routines | ||
| 1057 | # | ||
| 1058 | CONFIG_CRC_CCITT=y | ||
| 1059 | # CONFIG_CRC16 is not set | ||
| 1060 | CONFIG_CRC32=y | ||
| 1061 | # CONFIG_LIBCRC32C is not set | ||
| 1062 | CONFIG_ZLIB_INFLATE=y | ||
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig new file mode 100644 index 000000000000..9f09dff9e11a --- /dev/null +++ b/arch/powerpc/configs/pseries_defconfig | |||
| @@ -0,0 +1,1371 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.14-rc4 | ||
| 4 | # Thu Oct 20 08:32:17 2005 | ||
| 5 | # | ||
| 6 | CONFIG_64BIT=y | ||
| 7 | CONFIG_MMU=y | ||
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 10 | CONFIG_GENERIC_ISA_DMA=y | ||
| 11 | CONFIG_EARLY_PRINTK=y | ||
| 12 | CONFIG_COMPAT=y | ||
| 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
| 16 | |||
| 17 | # | ||
| 18 | # Code maturity level options | ||
| 19 | # | ||
| 20 | CONFIG_EXPERIMENTAL=y | ||
| 21 | CONFIG_CLEAN_COMPILE=y | ||
| 22 | CONFIG_LOCK_KERNEL=y | ||
| 23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 24 | |||
| 25 | # | ||
| 26 | # General setup | ||
| 27 | # | ||
| 28 | CONFIG_LOCALVERSION="" | ||
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 30 | CONFIG_SWAP=y | ||
| 31 | CONFIG_SYSVIPC=y | ||
| 32 | CONFIG_POSIX_MQUEUE=y | ||
| 33 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
| 34 | CONFIG_SYSCTL=y | ||
| 35 | CONFIG_AUDIT=y | ||
| 36 | CONFIG_AUDITSYSCALL=y | ||
| 37 | CONFIG_HOTPLUG=y | ||
| 38 | CONFIG_KOBJECT_UEVENT=y | ||
| 39 | CONFIG_IKCONFIG=y | ||
| 40 | CONFIG_IKCONFIG_PROC=y | ||
| 41 | CONFIG_CPUSETS=y | ||
| 42 | CONFIG_INITRAMFS_SOURCE="" | ||
| 43 | # CONFIG_EMBEDDED is not set | ||
| 44 | CONFIG_KALLSYMS=y | ||
| 45 | CONFIG_KALLSYMS_ALL=y | ||
| 46 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 47 | CONFIG_PRINTK=y | ||
| 48 | CONFIG_BUG=y | ||
| 49 | CONFIG_BASE_FULL=y | ||
| 50 | CONFIG_FUTEX=y | ||
| 51 | CONFIG_EPOLL=y | ||
| 52 | CONFIG_SHMEM=y | ||
| 53 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
| 54 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 55 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 56 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 57 | # CONFIG_TINY_SHMEM is not set | ||
| 58 | CONFIG_BASE_SMALL=0 | ||
| 59 | |||
| 60 | # | ||
| 61 | # Loadable module support | ||
| 62 | # | ||
| 63 | CONFIG_MODULES=y | ||
| 64 | CONFIG_MODULE_UNLOAD=y | ||
| 65 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
| 66 | CONFIG_OBSOLETE_MODPARM=y | ||
| 67 | CONFIG_MODVERSIONS=y | ||
| 68 | CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 69 | CONFIG_KMOD=y | ||
| 70 | CONFIG_STOP_MACHINE=y | ||
| 71 | CONFIG_SYSVIPC_COMPAT=y | ||
| 72 | |||
| 73 | # | ||
| 74 | # Platform support | ||
| 75 | # | ||
| 76 | # CONFIG_PPC_ISERIES is not set | ||
| 77 | CONFIG_PPC_MULTIPLATFORM=y | ||
| 78 | CONFIG_PPC_PSERIES=y | ||
| 79 | # CONFIG_PPC_BPA is not set | ||
| 80 | # CONFIG_PPC_PMAC is not set | ||
| 81 | # CONFIG_PPC_MAPLE is not set | ||
| 82 | CONFIG_PPC=y | ||
| 83 | CONFIG_PPC64=y | ||
| 84 | CONFIG_PPC_OF=y | ||
| 85 | CONFIG_XICS=y | ||
| 86 | CONFIG_MPIC=y | ||
| 87 | CONFIG_ALTIVEC=y | ||
| 88 | CONFIG_PPC_SPLPAR=y | ||
| 89 | CONFIG_KEXEC=y | ||
| 90 | CONFIG_IBMVIO=y | ||
| 91 | # CONFIG_U3_DART is not set | ||
| 92 | # CONFIG_BOOTX_TEXT is not set | ||
| 93 | # CONFIG_POWER4_ONLY is not set | ||
| 94 | CONFIG_IOMMU_VMERGE=y | ||
| 95 | CONFIG_SMP=y | ||
| 96 | CONFIG_NR_CPUS=128 | ||
| 97 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
| 98 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 99 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
| 100 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y | ||
| 101 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
| 102 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 103 | # CONFIG_FLATMEM_MANUAL is not set | ||
| 104 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
| 105 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 106 | CONFIG_DISCONTIGMEM=y | ||
| 107 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 108 | CONFIG_NEED_MULTIPLE_NODES=y | ||
| 109 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 110 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y | ||
| 111 | CONFIG_NODES_SPAN_OTHER_NODES=y | ||
| 112 | CONFIG_NUMA=y | ||
| 113 | CONFIG_SCHED_SMT=y | ||
| 114 | CONFIG_PREEMPT_NONE=y | ||
| 115 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 116 | # CONFIG_PREEMPT is not set | ||
| 117 | # CONFIG_PREEMPT_BKL is not set | ||
| 118 | # CONFIG_HZ_100 is not set | ||
| 119 | CONFIG_HZ_250=y | ||
| 120 | # CONFIG_HZ_1000 is not set | ||
| 121 | CONFIG_HZ=250 | ||
| 122 | CONFIG_EEH=y | ||
| 123 | CONFIG_GENERIC_HARDIRQS=y | ||
| 124 | CONFIG_PPC_RTAS=y | ||
| 125 | CONFIG_RTAS_PROC=y | ||
| 126 | CONFIG_RTAS_FLASH=m | ||
| 127 | CONFIG_SCANLOG=m | ||
| 128 | CONFIG_LPARCFG=y | ||
| 129 | CONFIG_SECCOMP=y | ||
| 130 | CONFIG_BINFMT_ELF=y | ||
| 131 | # CONFIG_BINFMT_MISC is not set | ||
| 132 | CONFIG_HOTPLUG_CPU=y | ||
| 133 | CONFIG_PROC_DEVICETREE=y | ||
| 134 | # CONFIG_CMDLINE_BOOL is not set | ||
| 135 | CONFIG_ISA_DMA_API=y | ||
| 136 | |||
| 137 | # | ||
| 138 | # Bus Options | ||
| 139 | # | ||
| 140 | CONFIG_PCI=y | ||
| 141 | CONFIG_PCI_DOMAINS=y | ||
| 142 | CONFIG_PCI_LEGACY_PROC=y | ||
| 143 | # CONFIG_PCI_DEBUG is not set | ||
| 144 | |||
| 145 | # | ||
| 146 | # PCCARD (PCMCIA/CardBus) support | ||
| 147 | # | ||
| 148 | # CONFIG_PCCARD is not set | ||
| 149 | |||
| 150 | # | ||
| 151 | # PCI Hotplug Support | ||
| 152 | # | ||
| 153 | CONFIG_HOTPLUG_PCI=m | ||
| 154 | # CONFIG_HOTPLUG_PCI_FAKE is not set | ||
| 155 | # CONFIG_HOTPLUG_PCI_CPCI is not set | ||
| 156 | # CONFIG_HOTPLUG_PCI_SHPC is not set | ||
| 157 | CONFIG_HOTPLUG_PCI_RPA=m | ||
| 158 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m | ||
| 159 | |||
| 160 | # | ||
| 161 | # Networking | ||
| 162 | # | ||
| 163 | CONFIG_NET=y | ||
| 164 | |||
| 165 | # | ||
| 166 | # Networking options | ||
| 167 | # | ||
| 168 | CONFIG_PACKET=y | ||
| 169 | # CONFIG_PACKET_MMAP is not set | ||
| 170 | CONFIG_UNIX=y | ||
| 171 | CONFIG_XFRM=y | ||
| 172 | CONFIG_XFRM_USER=m | ||
| 173 | CONFIG_NET_KEY=m | ||
| 174 | CONFIG_INET=y | ||
| 175 | CONFIG_IP_MULTICAST=y | ||
| 176 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 177 | CONFIG_IP_FIB_HASH=y | ||
| 178 | # CONFIG_IP_PNP is not set | ||
| 179 | CONFIG_NET_IPIP=y | ||
| 180 | # CONFIG_NET_IPGRE is not set | ||
| 181 | # CONFIG_IP_MROUTE is not set | ||
| 182 | # CONFIG_ARPD is not set | ||
| 183 | CONFIG_SYN_COOKIES=y | ||
| 184 | CONFIG_INET_AH=m | ||
| 185 | CONFIG_INET_ESP=m | ||
| 186 | CONFIG_INET_IPCOMP=m | ||
| 187 | CONFIG_INET_TUNNEL=y | ||
| 188 | CONFIG_INET_DIAG=y | ||
| 189 | CONFIG_INET_TCP_DIAG=y | ||
| 190 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 191 | CONFIG_TCP_CONG_BIC=y | ||
| 192 | |||
| 193 | # | ||
| 194 | # IP: Virtual Server Configuration | ||
| 195 | # | ||
| 196 | # CONFIG_IP_VS is not set | ||
| 197 | # CONFIG_IPV6 is not set | ||
| 198 | CONFIG_NETFILTER=y | ||
| 199 | # CONFIG_NETFILTER_DEBUG is not set | ||
| 200 | CONFIG_NETFILTER_NETLINK=y | ||
| 201 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
| 202 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
| 203 | |||
| 204 | # | ||
| 205 | # IP: Netfilter Configuration | ||
| 206 | # | ||
| 207 | CONFIG_IP_NF_CONNTRACK=m | ||
| 208 | CONFIG_IP_NF_CT_ACCT=y | ||
| 209 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
| 210 | CONFIG_IP_NF_CONNTRACK_EVENTS=y | ||
| 211 | CONFIG_IP_NF_CONNTRACK_NETLINK=m | ||
| 212 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
| 213 | CONFIG_IP_NF_FTP=m | ||
| 214 | CONFIG_IP_NF_IRC=m | ||
| 215 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 216 | CONFIG_IP_NF_TFTP=m | ||
| 217 | CONFIG_IP_NF_AMANDA=m | ||
| 218 | # CONFIG_IP_NF_PPTP is not set | ||
| 219 | CONFIG_IP_NF_QUEUE=m | ||
| 220 | CONFIG_IP_NF_IPTABLES=m | ||
| 221 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
| 222 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
| 223 | CONFIG_IP_NF_MATCH_MAC=m | ||
| 224 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
| 225 | CONFIG_IP_NF_MATCH_MARK=m | ||
| 226 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
| 227 | CONFIG_IP_NF_MATCH_TOS=m | ||
| 228 | CONFIG_IP_NF_MATCH_RECENT=m | ||
| 229 | CONFIG_IP_NF_MATCH_ECN=m | ||
| 230 | CONFIG_IP_NF_MATCH_DSCP=m | ||
| 231 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
| 232 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
| 233 | CONFIG_IP_NF_MATCH_TTL=m | ||
| 234 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
| 235 | CONFIG_IP_NF_MATCH_HELPER=m | ||
| 236 | CONFIG_IP_NF_MATCH_STATE=m | ||
| 237 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
| 238 | CONFIG_IP_NF_MATCH_OWNER=m | ||
| 239 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
| 240 | CONFIG_IP_NF_MATCH_REALM=m | ||
| 241 | CONFIG_IP_NF_MATCH_SCTP=m | ||
| 242 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 243 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
| 244 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
| 245 | CONFIG_IP_NF_MATCH_CONNBYTES=m | ||
| 246 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
| 247 | CONFIG_IP_NF_MATCH_STRING=m | ||
| 248 | CONFIG_IP_NF_FILTER=m | ||
| 249 | CONFIG_IP_NF_TARGET_REJECT=m | ||
| 250 | CONFIG_IP_NF_TARGET_LOG=m | ||
| 251 | CONFIG_IP_NF_TARGET_ULOG=m | ||
| 252 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
| 253 | CONFIG_IP_NF_TARGET_NFQUEUE=m | ||
| 254 | CONFIG_IP_NF_NAT=m | ||
| 255 | CONFIG_IP_NF_NAT_NEEDED=y | ||
| 256 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
| 257 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
| 258 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
| 259 | CONFIG_IP_NF_TARGET_SAME=m | ||
| 260 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
| 261 | CONFIG_IP_NF_NAT_IRC=m | ||
| 262 | CONFIG_IP_NF_NAT_FTP=m | ||
| 263 | CONFIG_IP_NF_NAT_TFTP=m | ||
| 264 | CONFIG_IP_NF_NAT_AMANDA=m | ||
| 265 | CONFIG_IP_NF_MANGLE=m | ||
| 266 | CONFIG_IP_NF_TARGET_TOS=m | ||
| 267 | CONFIG_IP_NF_TARGET_ECN=m | ||
| 268 | CONFIG_IP_NF_TARGET_DSCP=m | ||
| 269 | CONFIG_IP_NF_TARGET_MARK=m | ||
| 270 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
| 271 | CONFIG_IP_NF_TARGET_TTL=m | ||
| 272 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
| 273 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
| 274 | CONFIG_IP_NF_RAW=m | ||
| 275 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
| 276 | CONFIG_IP_NF_ARPTABLES=m | ||
| 277 | CONFIG_IP_NF_ARPFILTER=m | ||
| 278 | CONFIG_IP_NF_ARP_MANGLE=m | ||
| 279 | |||
| 280 | # | ||
| 281 | # DCCP Configuration (EXPERIMENTAL) | ||
| 282 | # | ||
| 283 | # CONFIG_IP_DCCP is not set | ||
| 284 | |||
| 285 | # | ||
| 286 | # SCTP Configuration (EXPERIMENTAL) | ||
| 287 | # | ||
| 288 | # CONFIG_IP_SCTP is not set | ||
| 289 | # CONFIG_ATM is not set | ||
| 290 | # CONFIG_BRIDGE is not set | ||
| 291 | # CONFIG_VLAN_8021Q is not set | ||
| 292 | # CONFIG_DECNET is not set | ||
| 293 | CONFIG_LLC=y | ||
| 294 | # CONFIG_LLC2 is not set | ||
| 295 | # CONFIG_IPX is not set | ||
| 296 | # CONFIG_ATALK is not set | ||
| 297 | # CONFIG_X25 is not set | ||
| 298 | # CONFIG_LAPB is not set | ||
| 299 | # CONFIG_NET_DIVERT is not set | ||
| 300 | # CONFIG_ECONET is not set | ||
| 301 | # CONFIG_WAN_ROUTER is not set | ||
| 302 | # CONFIG_NET_SCHED is not set | ||
| 303 | CONFIG_NET_CLS_ROUTE=y | ||
| 304 | |||
| 305 | # | ||
| 306 | # Network testing | ||
| 307 | # | ||
| 308 | # CONFIG_NET_PKTGEN is not set | ||
| 309 | # CONFIG_HAMRADIO is not set | ||
| 310 | # CONFIG_IRDA is not set | ||
| 311 | # CONFIG_BT is not set | ||
| 312 | # CONFIG_IEEE80211 is not set | ||
| 313 | |||
| 314 | # | ||
| 315 | # Device Drivers | ||
| 316 | # | ||
| 317 | |||
| 318 | # | ||
| 319 | # Generic Driver Options | ||
| 320 | # | ||
| 321 | CONFIG_STANDALONE=y | ||
| 322 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 323 | CONFIG_FW_LOADER=y | ||
| 324 | # CONFIG_DEBUG_DRIVER is not set | ||
| 325 | |||
| 326 | # | ||
| 327 | # Connector - unified userspace <-> kernelspace linker | ||
| 328 | # | ||
| 329 | # CONFIG_CONNECTOR is not set | ||
| 330 | |||
| 331 | # | ||
| 332 | # Memory Technology Devices (MTD) | ||
| 333 | # | ||
| 334 | # CONFIG_MTD is not set | ||
| 335 | |||
| 336 | # | ||
| 337 | # Parallel port support | ||
| 338 | # | ||
| 339 | CONFIG_PARPORT=m | ||
| 340 | CONFIG_PARPORT_PC=m | ||
| 341 | # CONFIG_PARPORT_SERIAL is not set | ||
| 342 | # CONFIG_PARPORT_PC_FIFO is not set | ||
| 343 | # CONFIG_PARPORT_PC_SUPERIO is not set | ||
| 344 | # CONFIG_PARPORT_GSC is not set | ||
| 345 | # CONFIG_PARPORT_1284 is not set | ||
| 346 | |||
| 347 | # | ||
| 348 | # Plug and Play support | ||
| 349 | # | ||
| 350 | |||
| 351 | # | ||
| 352 | # Block devices | ||
| 353 | # | ||
| 354 | CONFIG_BLK_DEV_FD=m | ||
| 355 | # CONFIG_PARIDE is not set | ||
| 356 | # CONFIG_BLK_CPQ_DA is not set | ||
| 357 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 358 | # CONFIG_BLK_DEV_DAC960 is not set | ||
| 359 | # CONFIG_BLK_DEV_UMEM is not set | ||
| 360 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 361 | CONFIG_BLK_DEV_LOOP=y | ||
| 362 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 363 | CONFIG_BLK_DEV_NBD=m | ||
| 364 | # CONFIG_BLK_DEV_SX8 is not set | ||
| 365 | # CONFIG_BLK_DEV_UB is not set | ||
| 366 | CONFIG_BLK_DEV_RAM=y | ||
| 367 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 368 | CONFIG_BLK_DEV_RAM_SIZE=65536 | ||
| 369 | CONFIG_BLK_DEV_INITRD=y | ||
| 370 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 371 | |||
| 372 | # | ||
| 373 | # IO Schedulers | ||
| 374 | # | ||
| 375 | CONFIG_IOSCHED_NOOP=y | ||
| 376 | CONFIG_IOSCHED_AS=y | ||
| 377 | CONFIG_IOSCHED_DEADLINE=y | ||
| 378 | CONFIG_IOSCHED_CFQ=y | ||
| 379 | # CONFIG_ATA_OVER_ETH is not set | ||
| 380 | |||
| 381 | # | ||
| 382 | # ATA/ATAPI/MFM/RLL support | ||
| 383 | # | ||
| 384 | CONFIG_IDE=y | ||
| 385 | CONFIG_BLK_DEV_IDE=y | ||
| 386 | |||
| 387 | # | ||
| 388 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
| 389 | # | ||
| 390 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
| 391 | CONFIG_BLK_DEV_IDEDISK=y | ||
| 392 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
| 393 | CONFIG_BLK_DEV_IDECD=y | ||
| 394 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
| 395 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
| 396 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
| 397 | # CONFIG_IDE_TASK_IOCTL is not set | ||
| 398 | |||
| 399 | # | ||
| 400 | # IDE chipset support/bugfixes | ||
| 401 | # | ||
| 402 | CONFIG_IDE_GENERIC=y | ||
| 403 | CONFIG_BLK_DEV_IDEPCI=y | ||
| 404 | CONFIG_IDEPCI_SHARE_IRQ=y | ||
| 405 | # CONFIG_BLK_DEV_OFFBOARD is not set | ||
| 406 | CONFIG_BLK_DEV_GENERIC=y | ||
| 407 | # CONFIG_BLK_DEV_OPTI621 is not set | ||
| 408 | CONFIG_BLK_DEV_SL82C105=y | ||
| 409 | CONFIG_BLK_DEV_IDEDMA_PCI=y | ||
| 410 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | ||
| 411 | CONFIG_IDEDMA_PCI_AUTO=y | ||
| 412 | # CONFIG_IDEDMA_ONLYDISK is not set | ||
| 413 | # CONFIG_BLK_DEV_AEC62XX is not set | ||
| 414 | # CONFIG_BLK_DEV_ALI15X3 is not set | ||
| 415 | CONFIG_BLK_DEV_AMD74XX=y | ||
| 416 | # CONFIG_BLK_DEV_CMD64X is not set | ||
| 417 | # CONFIG_BLK_DEV_TRIFLEX is not set | ||
| 418 | # CONFIG_BLK_DEV_CY82C693 is not set | ||
| 419 | # CONFIG_BLK_DEV_CS5520 is not set | ||
| 420 | # CONFIG_BLK_DEV_CS5530 is not set | ||
| 421 | # CONFIG_BLK_DEV_HPT34X is not set | ||
| 422 | # CONFIG_BLK_DEV_HPT366 is not set | ||
| 423 | # CONFIG_BLK_DEV_SC1200 is not set | ||
| 424 | # CONFIG_BLK_DEV_PIIX is not set | ||
| 425 | # CONFIG_BLK_DEV_IT821X is not set | ||
| 426 | # CONFIG_BLK_DEV_NS87415 is not set | ||
| 427 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | ||
| 428 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | ||
| 429 | # CONFIG_BLK_DEV_SVWKS is not set | ||
| 430 | # CONFIG_BLK_DEV_SIIMAGE is not set | ||
| 431 | # CONFIG_BLK_DEV_SLC90E66 is not set | ||
| 432 | # CONFIG_BLK_DEV_TRM290 is not set | ||
| 433 | # CONFIG_BLK_DEV_VIA82CXXX is not set | ||
| 434 | # CONFIG_IDE_ARM is not set | ||
| 435 | CONFIG_BLK_DEV_IDEDMA=y | ||
| 436 | # CONFIG_IDEDMA_IVB is not set | ||
| 437 | CONFIG_IDEDMA_AUTO=y | ||
| 438 | # CONFIG_BLK_DEV_HD is not set | ||
| 439 | |||
| 440 | # | ||
| 441 | # SCSI device support | ||
| 442 | # | ||
| 443 | # CONFIG_RAID_ATTRS is not set | ||
| 444 | CONFIG_SCSI=y | ||
| 445 | CONFIG_SCSI_PROC_FS=y | ||
| 446 | |||
| 447 | # | ||
| 448 | # SCSI support type (disk, tape, CD-ROM) | ||
| 449 | # | ||
| 450 | CONFIG_BLK_DEV_SD=y | ||
| 451 | CONFIG_CHR_DEV_ST=y | ||
| 452 | # CONFIG_CHR_DEV_OSST is not set | ||
| 453 | CONFIG_BLK_DEV_SR=y | ||
| 454 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
| 455 | CONFIG_CHR_DEV_SG=y | ||
| 456 | # CONFIG_CHR_DEV_SCH is not set | ||
| 457 | |||
| 458 | # | ||
| 459 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
| 460 | # | ||
| 461 | CONFIG_SCSI_MULTI_LUN=y | ||
| 462 | CONFIG_SCSI_CONSTANTS=y | ||
| 463 | # CONFIG_SCSI_LOGGING is not set | ||
| 464 | |||
| 465 | # | ||
| 466 | # SCSI Transport Attributes | ||
| 467 | # | ||
| 468 | CONFIG_SCSI_SPI_ATTRS=y | ||
| 469 | CONFIG_SCSI_FC_ATTRS=y | ||
| 470 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
| 471 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 472 | |||
| 473 | # | ||
| 474 | # SCSI low-level drivers | ||
| 475 | # | ||
| 476 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
| 477 | # CONFIG_SCSI_3W_9XXX is not set | ||
| 478 | # CONFIG_SCSI_ACARD is not set | ||
| 479 | # CONFIG_SCSI_AACRAID is not set | ||
| 480 | # CONFIG_SCSI_AIC7XXX is not set | ||
| 481 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
| 482 | # CONFIG_SCSI_AIC79XX is not set | ||
| 483 | # CONFIG_MEGARAID_NEWGEN is not set | ||
| 484 | # CONFIG_MEGARAID_LEGACY is not set | ||
| 485 | # CONFIG_MEGARAID_SAS is not set | ||
| 486 | # CONFIG_SCSI_SATA is not set | ||
| 487 | # CONFIG_SCSI_BUSLOGIC is not set | ||
| 488 | # CONFIG_SCSI_DMX3191D is not set | ||
| 489 | # CONFIG_SCSI_EATA is not set | ||
| 490 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
| 491 | # CONFIG_SCSI_GDTH is not set | ||
| 492 | # CONFIG_SCSI_IPS is not set | ||
| 493 | CONFIG_SCSI_IBMVSCSI=y | ||
| 494 | # CONFIG_SCSI_INITIO is not set | ||
| 495 | # CONFIG_SCSI_INIA100 is not set | ||
| 496 | # CONFIG_SCSI_PPA is not set | ||
| 497 | # CONFIG_SCSI_IMM is not set | ||
| 498 | CONFIG_SCSI_SYM53C8XX_2=y | ||
| 499 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | ||
| 500 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | ||
| 501 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | ||
| 502 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | ||
| 503 | CONFIG_SCSI_IPR=y | ||
| 504 | CONFIG_SCSI_IPR_TRACE=y | ||
| 505 | CONFIG_SCSI_IPR_DUMP=y | ||
| 506 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
| 507 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
| 508 | CONFIG_SCSI_QLA2XXX=y | ||
| 509 | CONFIG_SCSI_QLA21XX=m | ||
| 510 | CONFIG_SCSI_QLA22XX=m | ||
| 511 | CONFIG_SCSI_QLA2300=m | ||
| 512 | CONFIG_SCSI_QLA2322=m | ||
| 513 | CONFIG_SCSI_QLA6312=m | ||
| 514 | CONFIG_SCSI_QLA24XX=m | ||
| 515 | CONFIG_SCSI_LPFC=m | ||
| 516 | # CONFIG_SCSI_DC395x is not set | ||
| 517 | # CONFIG_SCSI_DC390T is not set | ||
| 518 | # CONFIG_SCSI_DEBUG is not set | ||
| 519 | |||
| 520 | # | ||
| 521 | # Multi-device support (RAID and LVM) | ||
| 522 | # | ||
| 523 | CONFIG_MD=y | ||
| 524 | CONFIG_BLK_DEV_MD=y | ||
| 525 | CONFIG_MD_LINEAR=y | ||
| 526 | CONFIG_MD_RAID0=y | ||
| 527 | CONFIG_MD_RAID1=y | ||
| 528 | CONFIG_MD_RAID10=m | ||
| 529 | CONFIG_MD_RAID5=y | ||
| 530 | CONFIG_MD_RAID6=m | ||
| 531 | CONFIG_MD_MULTIPATH=m | ||
| 532 | CONFIG_MD_FAULTY=m | ||
| 533 | CONFIG_BLK_DEV_DM=y | ||
| 534 | CONFIG_DM_CRYPT=m | ||
| 535 | CONFIG_DM_SNAPSHOT=m | ||
| 536 | CONFIG_DM_MIRROR=m | ||
| 537 | CONFIG_DM_ZERO=m | ||
| 538 | CONFIG_DM_MULTIPATH=m | ||
| 539 | CONFIG_DM_MULTIPATH_EMC=m | ||
| 540 | |||
| 541 | # | ||
| 542 | # Fusion MPT device support | ||
| 543 | # | ||
| 544 | # CONFIG_FUSION is not set | ||
| 545 | # CONFIG_FUSION_SPI is not set | ||
| 546 | # CONFIG_FUSION_FC is not set | ||
| 547 | # CONFIG_FUSION_SAS is not set | ||
| 548 | |||
| 549 | # | ||
| 550 | # IEEE 1394 (FireWire) support | ||
| 551 | # | ||
| 552 | # CONFIG_IEEE1394 is not set | ||
| 553 | |||
| 554 | # | ||
| 555 | # I2O device support | ||
| 556 | # | ||
| 557 | # CONFIG_I2O is not set | ||
| 558 | |||
| 559 | # | ||
| 560 | # Macintosh device drivers | ||
| 561 | # | ||
| 562 | |||
| 563 | # | ||
| 564 | # Network device support | ||
| 565 | # | ||
| 566 | CONFIG_NETDEVICES=y | ||
| 567 | CONFIG_DUMMY=m | ||
| 568 | CONFIG_BONDING=m | ||
| 569 | # CONFIG_EQUALIZER is not set | ||
| 570 | CONFIG_TUN=m | ||
| 571 | |||
| 572 | # | ||
| 573 | # ARCnet devices | ||
| 574 | # | ||
| 575 | # CONFIG_ARCNET is not set | ||
| 576 | |||
| 577 | # | ||
| 578 | # PHY device support | ||
| 579 | # | ||
| 580 | # CONFIG_PHYLIB is not set | ||
| 581 | |||
| 582 | # | ||
| 583 | # Ethernet (10 or 100Mbit) | ||
| 584 | # | ||
| 585 | CONFIG_NET_ETHERNET=y | ||
| 586 | CONFIG_MII=y | ||
| 587 | # CONFIG_HAPPYMEAL is not set | ||
| 588 | # CONFIG_SUNGEM is not set | ||
| 589 | # CONFIG_CASSINI is not set | ||
| 590 | CONFIG_NET_VENDOR_3COM=y | ||
| 591 | CONFIG_VORTEX=y | ||
| 592 | # CONFIG_TYPHOON is not set | ||
| 593 | |||
| 594 | # | ||
| 595 | # Tulip family network device support | ||
| 596 | # | ||
| 597 | # CONFIG_NET_TULIP is not set | ||
| 598 | # CONFIG_HP100 is not set | ||
| 599 | CONFIG_IBMVETH=y | ||
| 600 | CONFIG_NET_PCI=y | ||
| 601 | CONFIG_PCNET32=y | ||
| 602 | # CONFIG_AMD8111_ETH is not set | ||
| 603 | # CONFIG_ADAPTEC_STARFIRE is not set | ||
| 604 | # CONFIG_B44 is not set | ||
| 605 | # CONFIG_FORCEDETH is not set | ||
| 606 | # CONFIG_DGRS is not set | ||
| 607 | # CONFIG_EEPRO100 is not set | ||
| 608 | CONFIG_E100=y | ||
| 609 | # CONFIG_FEALNX is not set | ||
| 610 | # CONFIG_NATSEMI is not set | ||
| 611 | # CONFIG_NE2K_PCI is not set | ||
| 612 | # CONFIG_8139CP is not set | ||
| 613 | # CONFIG_8139TOO is not set | ||
| 614 | # CONFIG_SIS900 is not set | ||
| 615 | # CONFIG_EPIC100 is not set | ||
| 616 | # CONFIG_SUNDANCE is not set | ||
| 617 | # CONFIG_VIA_RHINE is not set | ||
| 618 | # CONFIG_NET_POCKET is not set | ||
| 619 | |||
| 620 | # | ||
| 621 | # Ethernet (1000 Mbit) | ||
| 622 | # | ||
| 623 | CONFIG_ACENIC=y | ||
| 624 | CONFIG_ACENIC_OMIT_TIGON_I=y | ||
| 625 | # CONFIG_DL2K is not set | ||
| 626 | CONFIG_E1000=y | ||
| 627 | # CONFIG_E1000_NAPI is not set | ||
| 628 | # CONFIG_NS83820 is not set | ||
| 629 | # CONFIG_HAMACHI is not set | ||
| 630 | # CONFIG_YELLOWFIN is not set | ||
| 631 | # CONFIG_R8169 is not set | ||
| 632 | # CONFIG_SIS190 is not set | ||
| 633 | # CONFIG_SKGE is not set | ||
| 634 | # CONFIG_SK98LIN is not set | ||
| 635 | # CONFIG_VIA_VELOCITY is not set | ||
| 636 | CONFIG_TIGON3=y | ||
| 637 | # CONFIG_BNX2 is not set | ||
| 638 | # CONFIG_MV643XX_ETH is not set | ||
| 639 | |||
| 640 | # | ||
| 641 | # Ethernet (10000 Mbit) | ||
| 642 | # | ||
| 643 | # CONFIG_CHELSIO_T1 is not set | ||
| 644 | CONFIG_IXGB=m | ||
| 645 | # CONFIG_IXGB_NAPI is not set | ||
| 646 | CONFIG_S2IO=m | ||
| 647 | # CONFIG_S2IO_NAPI is not set | ||
| 648 | # CONFIG_2BUFF_MODE is not set | ||
| 649 | |||
| 650 | # | ||
| 651 | # Token Ring devices | ||
| 652 | # | ||
| 653 | CONFIG_TR=y | ||
| 654 | CONFIG_IBMOL=y | ||
| 655 | # CONFIG_3C359 is not set | ||
| 656 | # CONFIG_TMS380TR is not set | ||
| 657 | |||
| 658 | # | ||
| 659 | # Wireless LAN (non-hamradio) | ||
| 660 | # | ||
| 661 | # CONFIG_NET_RADIO is not set | ||
| 662 | |||
| 663 | # | ||
| 664 | # Wan interfaces | ||
| 665 | # | ||
| 666 | # CONFIG_WAN is not set | ||
| 667 | # CONFIG_FDDI is not set | ||
| 668 | # CONFIG_HIPPI is not set | ||
| 669 | # CONFIG_PLIP is not set | ||
| 670 | CONFIG_PPP=m | ||
| 671 | # CONFIG_PPP_MULTILINK is not set | ||
| 672 | # CONFIG_PPP_FILTER is not set | ||
| 673 | CONFIG_PPP_ASYNC=m | ||
| 674 | CONFIG_PPP_SYNC_TTY=m | ||
| 675 | CONFIG_PPP_DEFLATE=m | ||
| 676 | CONFIG_PPP_BSDCOMP=m | ||
| 677 | CONFIG_PPPOE=m | ||
| 678 | # CONFIG_SLIP is not set | ||
| 679 | # CONFIG_NET_FC is not set | ||
| 680 | # CONFIG_SHAPER is not set | ||
| 681 | CONFIG_NETCONSOLE=y | ||
| 682 | CONFIG_NETPOLL=y | ||
| 683 | CONFIG_NETPOLL_RX=y | ||
| 684 | CONFIG_NETPOLL_TRAP=y | ||
| 685 | CONFIG_NET_POLL_CONTROLLER=y | ||
| 686 | |||
| 687 | # | ||
| 688 | # ISDN subsystem | ||
| 689 | # | ||
| 690 | # CONFIG_ISDN is not set | ||
| 691 | |||
| 692 | # | ||
| 693 | # Telephony Support | ||
| 694 | # | ||
| 695 | # CONFIG_PHONE is not set | ||
| 696 | |||
| 697 | # | ||
| 698 | # Input device support | ||
| 699 | # | ||
| 700 | CONFIG_INPUT=y | ||
| 701 | |||
| 702 | # | ||
| 703 | # Userland interfaces | ||
| 704 | # | ||
| 705 | CONFIG_INPUT_MOUSEDEV=y | ||
| 706 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
| 707 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 708 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 709 | # CONFIG_INPUT_JOYDEV is not set | ||
| 710 | # CONFIG_INPUT_TSDEV is not set | ||
| 711 | # CONFIG_INPUT_EVDEV is not set | ||
| 712 | # CONFIG_INPUT_EVBUG is not set | ||
| 713 | |||
| 714 | # | ||
| 715 | # Input Device Drivers | ||
| 716 | # | ||
| 717 | CONFIG_INPUT_KEYBOARD=y | ||
| 718 | CONFIG_KEYBOARD_ATKBD=y | ||
| 719 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
| 720 | # CONFIG_KEYBOARD_LKKBD is not set | ||
| 721 | # CONFIG_KEYBOARD_XTKBD is not set | ||
| 722 | # CONFIG_KEYBOARD_NEWTON is not set | ||
| 723 | CONFIG_INPUT_MOUSE=y | ||
| 724 | CONFIG_MOUSE_PS2=y | ||
| 725 | # CONFIG_MOUSE_SERIAL is not set | ||
| 726 | # CONFIG_MOUSE_VSXXXAA is not set | ||
| 727 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 728 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 729 | CONFIG_INPUT_MISC=y | ||
| 730 | CONFIG_INPUT_PCSPKR=m | ||
| 731 | # CONFIG_INPUT_UINPUT is not set | ||
| 732 | |||
| 733 | # | ||
| 734 | # Hardware I/O ports | ||
| 735 | # | ||
| 736 | CONFIG_SERIO=y | ||
| 737 | CONFIG_SERIO_I8042=y | ||
| 738 | # CONFIG_SERIO_SERPORT is not set | ||
| 739 | # CONFIG_SERIO_PARKBD is not set | ||
| 740 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 741 | CONFIG_SERIO_LIBPS2=y | ||
| 742 | # CONFIG_SERIO_RAW is not set | ||
| 743 | # CONFIG_GAMEPORT is not set | ||
| 744 | |||
| 745 | # | ||
| 746 | # Character devices | ||
| 747 | # | ||
| 748 | CONFIG_VT=y | ||
| 749 | CONFIG_VT_CONSOLE=y | ||
| 750 | CONFIG_HW_CONSOLE=y | ||
| 751 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 752 | |||
| 753 | # | ||
| 754 | # Serial drivers | ||
| 755 | # | ||
| 756 | CONFIG_SERIAL_8250=y | ||
| 757 | CONFIG_SERIAL_8250_CONSOLE=y | ||
| 758 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
| 759 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
| 760 | |||
| 761 | # | ||
| 762 | # Non-8250 serial port support | ||
| 763 | # | ||
| 764 | CONFIG_SERIAL_CORE=y | ||
| 765 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 766 | CONFIG_SERIAL_ICOM=m | ||
| 767 | # CONFIG_SERIAL_JSM is not set | ||
| 768 | CONFIG_UNIX98_PTYS=y | ||
| 769 | CONFIG_LEGACY_PTYS=y | ||
| 770 | CONFIG_LEGACY_PTY_COUNT=256 | ||
| 771 | # CONFIG_PRINTER is not set | ||
| 772 | # CONFIG_PPDEV is not set | ||
| 773 | # CONFIG_TIPAR is not set | ||
| 774 | CONFIG_HVC_CONSOLE=y | ||
| 775 | CONFIG_HVCS=m | ||
| 776 | |||
| 777 | # | ||
| 778 | # IPMI | ||
| 779 | # | ||
| 780 | # CONFIG_IPMI_HANDLER is not set | ||
| 781 | |||
| 782 | # | ||
| 783 | # Watchdog Cards | ||
| 784 | # | ||
| 785 | # CONFIG_WATCHDOG is not set | ||
| 786 | # CONFIG_RTC is not set | ||
| 787 | # CONFIG_DTLK is not set | ||
| 788 | # CONFIG_R3964 is not set | ||
| 789 | # CONFIG_APPLICOM is not set | ||
| 790 | |||
| 791 | # | ||
| 792 | # Ftape, the floppy tape device driver | ||
| 793 | # | ||
| 794 | # CONFIG_AGP is not set | ||
| 795 | # CONFIG_DRM is not set | ||
| 796 | CONFIG_RAW_DRIVER=y | ||
| 797 | CONFIG_MAX_RAW_DEVS=1024 | ||
| 798 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 799 | |||
| 800 | # | ||
| 801 | # TPM devices | ||
| 802 | # | ||
| 803 | # CONFIG_TCG_TPM is not set | ||
| 804 | |||
| 805 | # | ||
| 806 | # I2C support | ||
| 807 | # | ||
| 808 | CONFIG_I2C=y | ||
| 809 | # CONFIG_I2C_CHARDEV is not set | ||
| 810 | |||
| 811 | # | ||
| 812 | # I2C Algorithms | ||
| 813 | # | ||
| 814 | CONFIG_I2C_ALGOBIT=y | ||
| 815 | # CONFIG_I2C_ALGOPCF is not set | ||
| 816 | # CONFIG_I2C_ALGOPCA is not set | ||
| 817 | |||
| 818 | # | ||
| 819 | # I2C Hardware Bus support | ||
| 820 | # | ||
| 821 | # CONFIG_I2C_ALI1535 is not set | ||
| 822 | # CONFIG_I2C_ALI1563 is not set | ||
| 823 | # CONFIG_I2C_ALI15X3 is not set | ||
| 824 | # CONFIG_I2C_AMD756 is not set | ||
| 825 | # CONFIG_I2C_AMD8111 is not set | ||
| 826 | # CONFIG_I2C_I801 is not set | ||
| 827 | # CONFIG_I2C_I810 is not set | ||
| 828 | # CONFIG_I2C_PIIX4 is not set | ||
| 829 | # CONFIG_I2C_NFORCE2 is not set | ||
| 830 | # CONFIG_I2C_PARPORT is not set | ||
| 831 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 832 | # CONFIG_I2C_PROSAVAGE is not set | ||
| 833 | # CONFIG_I2C_SAVAGE4 is not set | ||
| 834 | # CONFIG_SCx200_ACB is not set | ||
| 835 | # CONFIG_I2C_SIS5595 is not set | ||
| 836 | # CONFIG_I2C_SIS630 is not set | ||
| 837 | # CONFIG_I2C_SIS96X is not set | ||
| 838 | # CONFIG_I2C_STUB is not set | ||
| 839 | # CONFIG_I2C_VIA is not set | ||
| 840 | # CONFIG_I2C_VIAPRO is not set | ||
| 841 | # CONFIG_I2C_VOODOO3 is not set | ||
| 842 | # CONFIG_I2C_PCA_ISA is not set | ||
| 843 | |||
| 844 | # | ||
| 845 | # Miscellaneous I2C Chip support | ||
| 846 | # | ||
| 847 | # CONFIG_SENSORS_DS1337 is not set | ||
| 848 | # CONFIG_SENSORS_DS1374 is not set | ||
| 849 | # CONFIG_SENSORS_EEPROM is not set | ||
| 850 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 851 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 852 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 853 | # CONFIG_SENSORS_RTC8564 is not set | ||
| 854 | # CONFIG_SENSORS_MAX6875 is not set | ||
| 855 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 856 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 857 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 858 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 859 | |||
| 860 | # | ||
| 861 | # Dallas's 1-wire bus | ||
| 862 | # | ||
| 863 | # CONFIG_W1 is not set | ||
| 864 | |||
| 865 | # | ||
| 866 | # Hardware Monitoring support | ||
| 867 | # | ||
| 868 | # CONFIG_HWMON is not set | ||
| 869 | # CONFIG_HWMON_VID is not set | ||
| 870 | |||
| 871 | # | ||
| 872 | # Misc devices | ||
| 873 | # | ||
| 874 | |||
| 875 | # | ||
| 876 | # Multimedia Capabilities Port drivers | ||
| 877 | # | ||
| 878 | |||
| 879 | # | ||
| 880 | # Multimedia devices | ||
| 881 | # | ||
| 882 | # CONFIG_VIDEO_DEV is not set | ||
| 883 | |||
| 884 | # | ||
| 885 | # Digital Video Broadcasting Devices | ||
| 886 | # | ||
| 887 | # CONFIG_DVB is not set | ||
| 888 | |||
| 889 | # | ||
| 890 | # Graphics support | ||
| 891 | # | ||
| 892 | CONFIG_FB=y | ||
| 893 | CONFIG_FB_CFB_FILLRECT=y | ||
| 894 | CONFIG_FB_CFB_COPYAREA=y | ||
| 895 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 896 | CONFIG_FB_SOFT_CURSOR=y | ||
| 897 | CONFIG_FB_MACMODES=y | ||
| 898 | CONFIG_FB_MODE_HELPERS=y | ||
| 899 | CONFIG_FB_TILEBLITTING=y | ||
| 900 | # CONFIG_FB_CIRRUS is not set | ||
| 901 | # CONFIG_FB_PM2 is not set | ||
| 902 | # CONFIG_FB_CYBER2000 is not set | ||
| 903 | CONFIG_FB_OF=y | ||
| 904 | # CONFIG_FB_CT65550 is not set | ||
| 905 | # CONFIG_FB_ASILIANT is not set | ||
| 906 | # CONFIG_FB_IMSTT is not set | ||
| 907 | # CONFIG_FB_VGA16 is not set | ||
| 908 | # CONFIG_FB_NVIDIA is not set | ||
| 909 | # CONFIG_FB_RIVA is not set | ||
| 910 | CONFIG_FB_MATROX=y | ||
| 911 | CONFIG_FB_MATROX_MILLENIUM=y | ||
| 912 | CONFIG_FB_MATROX_MYSTIQUE=y | ||
| 913 | CONFIG_FB_MATROX_G=y | ||
| 914 | # CONFIG_FB_MATROX_I2C is not set | ||
| 915 | CONFIG_FB_MATROX_MULTIHEAD=y | ||
| 916 | # CONFIG_FB_RADEON_OLD is not set | ||
| 917 | CONFIG_FB_RADEON=y | ||
| 918 | CONFIG_FB_RADEON_I2C=y | ||
| 919 | # CONFIG_FB_RADEON_DEBUG is not set | ||
| 920 | # CONFIG_FB_ATY128 is not set | ||
| 921 | # CONFIG_FB_ATY is not set | ||
| 922 | # CONFIG_FB_SAVAGE is not set | ||
| 923 | # CONFIG_FB_SIS is not set | ||
| 924 | # CONFIG_FB_NEOMAGIC is not set | ||
| 925 | # CONFIG_FB_KYRO is not set | ||
| 926 | # CONFIG_FB_3DFX is not set | ||
| 927 | # CONFIG_FB_VOODOO1 is not set | ||
| 928 | # CONFIG_FB_CYBLA is not set | ||
| 929 | # CONFIG_FB_TRIDENT is not set | ||
| 930 | # CONFIG_FB_S1D13XXX is not set | ||
| 931 | # CONFIG_FB_VIRTUAL is not set | ||
| 932 | |||
| 933 | # | ||
| 934 | # Console display driver support | ||
| 935 | # | ||
| 936 | # CONFIG_VGA_CONSOLE is not set | ||
| 937 | CONFIG_DUMMY_CONSOLE=y | ||
| 938 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 939 | # CONFIG_FONTS is not set | ||
| 940 | CONFIG_FONT_8x8=y | ||
| 941 | CONFIG_FONT_8x16=y | ||
| 942 | |||
| 943 | # | ||
| 944 | # Logo configuration | ||
| 945 | # | ||
| 946 | CONFIG_LOGO=y | ||
| 947 | CONFIG_LOGO_LINUX_MONO=y | ||
| 948 | CONFIG_LOGO_LINUX_VGA16=y | ||
| 949 | CONFIG_LOGO_LINUX_CLUT224=y | ||
| 950 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
| 951 | CONFIG_BACKLIGHT_CLASS_DEVICE=m | ||
| 952 | CONFIG_BACKLIGHT_DEVICE=y | ||
| 953 | CONFIG_LCD_CLASS_DEVICE=m | ||
| 954 | CONFIG_LCD_DEVICE=y | ||
| 955 | |||
| 956 | # | ||
| 957 | # Sound | ||
| 958 | # | ||
| 959 | # CONFIG_SOUND is not set | ||
| 960 | |||
| 961 | # | ||
| 962 | # USB support | ||
| 963 | # | ||
| 964 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 965 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 966 | CONFIG_USB=y | ||
| 967 | # CONFIG_USB_DEBUG is not set | ||
| 968 | |||
| 969 | # | ||
| 970 | # Miscellaneous USB options | ||
| 971 | # | ||
| 972 | CONFIG_USB_DEVICEFS=y | ||
| 973 | # CONFIG_USB_BANDWIDTH is not set | ||
| 974 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
| 975 | # CONFIG_USB_OTG is not set | ||
| 976 | |||
| 977 | # | ||
| 978 | # USB Host Controller Drivers | ||
| 979 | # | ||
| 980 | CONFIG_USB_EHCI_HCD=y | ||
| 981 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
| 982 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | ||
| 983 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 984 | CONFIG_USB_OHCI_HCD=y | ||
| 985 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
| 986 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
| 987 | # CONFIG_USB_UHCI_HCD is not set | ||
| 988 | # CONFIG_USB_SL811_HCD is not set | ||
| 989 | |||
| 990 | # | ||
| 991 | # USB Device Class drivers | ||
| 992 | # | ||
| 993 | # CONFIG_USB_BLUETOOTH_TTY is not set | ||
| 994 | # CONFIG_USB_ACM is not set | ||
| 995 | # CONFIG_USB_PRINTER is not set | ||
| 996 | |||
| 997 | # | ||
| 998 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
| 999 | # | ||
| 1000 | CONFIG_USB_STORAGE=y | ||
| 1001 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
| 1002 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
| 1003 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
| 1004 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
| 1005 | # CONFIG_USB_STORAGE_DPCM is not set | ||
| 1006 | # CONFIG_USB_STORAGE_USBAT is not set | ||
| 1007 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
| 1008 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
| 1009 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
| 1010 | |||
| 1011 | # | ||
| 1012 | # USB Input Devices | ||
| 1013 | # | ||
| 1014 | CONFIG_USB_HID=y | ||
| 1015 | CONFIG_USB_HIDINPUT=y | ||
| 1016 | # CONFIG_HID_FF is not set | ||
| 1017 | CONFIG_USB_HIDDEV=y | ||
| 1018 | # CONFIG_USB_AIPTEK is not set | ||
| 1019 | # CONFIG_USB_WACOM is not set | ||
| 1020 | # CONFIG_USB_ACECAD is not set | ||
| 1021 | # CONFIG_USB_KBTAB is not set | ||
| 1022 | # CONFIG_USB_POWERMATE is not set | ||
| 1023 | # CONFIG_USB_MTOUCH is not set | ||
| 1024 | # CONFIG_USB_ITMTOUCH is not set | ||
| 1025 | # CONFIG_USB_EGALAX is not set | ||
| 1026 | # CONFIG_USB_YEALINK is not set | ||
| 1027 | # CONFIG_USB_XPAD is not set | ||
| 1028 | # CONFIG_USB_ATI_REMOTE is not set | ||
| 1029 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
| 1030 | # CONFIG_USB_APPLETOUCH is not set | ||
| 1031 | |||
| 1032 | # | ||
| 1033 | # USB Imaging devices | ||
| 1034 | # | ||
| 1035 | # CONFIG_USB_MDC800 is not set | ||
| 1036 | # CONFIG_USB_MICROTEK is not set | ||
| 1037 | |||
| 1038 | # | ||
| 1039 | # USB Multimedia devices | ||
| 1040 | # | ||
| 1041 | # CONFIG_USB_DABUSB is not set | ||
| 1042 | |||
| 1043 | # | ||
| 1044 | # Video4Linux support is needed for USB Multimedia device support | ||
| 1045 | # | ||
| 1046 | |||
| 1047 | # | ||
| 1048 | # USB Network Adapters | ||
| 1049 | # | ||
| 1050 | # CONFIG_USB_CATC is not set | ||
| 1051 | # CONFIG_USB_KAWETH is not set | ||
| 1052 | # CONFIG_USB_PEGASUS is not set | ||
| 1053 | # CONFIG_USB_RTL8150 is not set | ||
| 1054 | # CONFIG_USB_USBNET is not set | ||
| 1055 | CONFIG_USB_MON=y | ||
| 1056 | |||
| 1057 | # | ||
| 1058 | # USB port drivers | ||
| 1059 | # | ||
| 1060 | # CONFIG_USB_USS720 is not set | ||
| 1061 | |||
| 1062 | # | ||
| 1063 | # USB Serial Converter support | ||
| 1064 | # | ||
| 1065 | # CONFIG_USB_SERIAL is not set | ||
| 1066 | |||
| 1067 | # | ||
| 1068 | # USB Miscellaneous drivers | ||
| 1069 | # | ||
| 1070 | # CONFIG_USB_EMI62 is not set | ||
| 1071 | # CONFIG_USB_EMI26 is not set | ||
| 1072 | # CONFIG_USB_AUERSWALD is not set | ||
| 1073 | # CONFIG_USB_RIO500 is not set | ||
| 1074 | # CONFIG_USB_LEGOTOWER is not set | ||
| 1075 | # CONFIG_USB_LCD is not set | ||
| 1076 | # CONFIG_USB_LED is not set | ||
| 1077 | # CONFIG_USB_CYTHERM is not set | ||
| 1078 | # CONFIG_USB_PHIDGETKIT is not set | ||
| 1079 | # CONFIG_USB_PHIDGETSERVO is not set | ||
| 1080 | # CONFIG_USB_IDMOUSE is not set | ||
| 1081 | # CONFIG_USB_SISUSBVGA is not set | ||
| 1082 | # CONFIG_USB_LD is not set | ||
| 1083 | # CONFIG_USB_TEST is not set | ||
| 1084 | |||
| 1085 | # | ||
| 1086 | # USB DSL modem support | ||
| 1087 | # | ||
| 1088 | |||
| 1089 | # | ||
| 1090 | # USB Gadget Support | ||
| 1091 | # | ||
| 1092 | # CONFIG_USB_GADGET is not set | ||
| 1093 | |||
| 1094 | # | ||
| 1095 | # MMC/SD Card support | ||
| 1096 | # | ||
| 1097 | # CONFIG_MMC is not set | ||
| 1098 | |||
| 1099 | # | ||
| 1100 | # InfiniBand support | ||
| 1101 | # | ||
| 1102 | CONFIG_INFINIBAND=m | ||
| 1103 | # CONFIG_INFINIBAND_USER_MAD is not set | ||
| 1104 | # CONFIG_INFINIBAND_USER_ACCESS is not set | ||
| 1105 | CONFIG_INFINIBAND_MTHCA=m | ||
| 1106 | # CONFIG_INFINIBAND_MTHCA_DEBUG is not set | ||
| 1107 | CONFIG_INFINIBAND_IPOIB=m | ||
| 1108 | # CONFIG_INFINIBAND_IPOIB_DEBUG is not set | ||
| 1109 | |||
| 1110 | # | ||
| 1111 | # SN Devices | ||
| 1112 | # | ||
| 1113 | |||
| 1114 | # | ||
| 1115 | # File systems | ||
| 1116 | # | ||
| 1117 | CONFIG_EXT2_FS=y | ||
| 1118 | CONFIG_EXT2_FS_XATTR=y | ||
| 1119 | CONFIG_EXT2_FS_POSIX_ACL=y | ||
| 1120 | CONFIG_EXT2_FS_SECURITY=y | ||
| 1121 | CONFIG_EXT2_FS_XIP=y | ||
| 1122 | CONFIG_FS_XIP=y | ||
| 1123 | CONFIG_EXT3_FS=y | ||
| 1124 | CONFIG_EXT3_FS_XATTR=y | ||
| 1125 | CONFIG_EXT3_FS_POSIX_ACL=y | ||
| 1126 | CONFIG_EXT3_FS_SECURITY=y | ||
| 1127 | CONFIG_JBD=y | ||
| 1128 | # CONFIG_JBD_DEBUG is not set | ||
| 1129 | CONFIG_FS_MBCACHE=y | ||
| 1130 | CONFIG_REISERFS_FS=y | ||
| 1131 | # CONFIG_REISERFS_CHECK is not set | ||
| 1132 | # CONFIG_REISERFS_PROC_INFO is not set | ||
| 1133 | CONFIG_REISERFS_FS_XATTR=y | ||
| 1134 | CONFIG_REISERFS_FS_POSIX_ACL=y | ||
| 1135 | CONFIG_REISERFS_FS_SECURITY=y | ||
| 1136 | CONFIG_JFS_FS=m | ||
| 1137 | CONFIG_JFS_POSIX_ACL=y | ||
| 1138 | CONFIG_JFS_SECURITY=y | ||
| 1139 | # CONFIG_JFS_DEBUG is not set | ||
| 1140 | # CONFIG_JFS_STATISTICS is not set | ||
| 1141 | CONFIG_FS_POSIX_ACL=y | ||
| 1142 | CONFIG_XFS_FS=m | ||
| 1143 | CONFIG_XFS_EXPORT=y | ||
| 1144 | # CONFIG_XFS_QUOTA is not set | ||
| 1145 | CONFIG_XFS_SECURITY=y | ||
| 1146 | CONFIG_XFS_POSIX_ACL=y | ||
| 1147 | # CONFIG_XFS_RT is not set | ||
| 1148 | # CONFIG_MINIX_FS is not set | ||
| 1149 | # CONFIG_ROMFS_FS is not set | ||
| 1150 | CONFIG_INOTIFY=y | ||
| 1151 | # CONFIG_QUOTA is not set | ||
| 1152 | CONFIG_DNOTIFY=y | ||
| 1153 | CONFIG_AUTOFS_FS=m | ||
| 1154 | # CONFIG_AUTOFS4_FS is not set | ||
| 1155 | # CONFIG_FUSE_FS is not set | ||
| 1156 | |||
| 1157 | # | ||
| 1158 | # CD-ROM/DVD Filesystems | ||
| 1159 | # | ||
| 1160 | CONFIG_ISO9660_FS=y | ||
| 1161 | CONFIG_JOLIET=y | ||
| 1162 | CONFIG_ZISOFS=y | ||
| 1163 | CONFIG_ZISOFS_FS=y | ||
| 1164 | CONFIG_UDF_FS=m | ||
| 1165 | CONFIG_UDF_NLS=y | ||
| 1166 | |||
| 1167 | # | ||
| 1168 | # DOS/FAT/NT Filesystems | ||
| 1169 | # | ||
| 1170 | CONFIG_FAT_FS=y | ||
| 1171 | CONFIG_MSDOS_FS=y | ||
| 1172 | CONFIG_VFAT_FS=y | ||
| 1173 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 1174 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1175 | # CONFIG_NTFS_FS is not set | ||
| 1176 | |||
| 1177 | # | ||
| 1178 | # Pseudo filesystems | ||
| 1179 | # | ||
| 1180 | CONFIG_PROC_FS=y | ||
| 1181 | CONFIG_PROC_KCORE=y | ||
| 1182 | CONFIG_SYSFS=y | ||
| 1183 | CONFIG_TMPFS=y | ||
| 1184 | CONFIG_HUGETLBFS=y | ||
| 1185 | CONFIG_HUGETLB_PAGE=y | ||
| 1186 | CONFIG_RAMFS=y | ||
| 1187 | # CONFIG_RELAYFS_FS is not set | ||
| 1188 | |||
| 1189 | # | ||
| 1190 | # Miscellaneous filesystems | ||
| 1191 | # | ||
| 1192 | # CONFIG_ADFS_FS is not set | ||
| 1193 | # CONFIG_AFFS_FS is not set | ||
| 1194 | # CONFIG_HFS_FS is not set | ||
| 1195 | # CONFIG_HFSPLUS_FS is not set | ||
| 1196 | # CONFIG_BEFS_FS is not set | ||
| 1197 | # CONFIG_BFS_FS is not set | ||
| 1198 | # CONFIG_EFS_FS is not set | ||
| 1199 | CONFIG_CRAMFS=y | ||
| 1200 | # CONFIG_VXFS_FS is not set | ||
| 1201 | # CONFIG_HPFS_FS is not set | ||
| 1202 | # CONFIG_QNX4FS_FS is not set | ||
| 1203 | # CONFIG_SYSV_FS is not set | ||
| 1204 | # CONFIG_UFS_FS is not set | ||
| 1205 | |||
| 1206 | # | ||
| 1207 | # Network File Systems | ||
| 1208 | # | ||
| 1209 | CONFIG_NFS_FS=y | ||
| 1210 | CONFIG_NFS_V3=y | ||
| 1211 | CONFIG_NFS_V3_ACL=y | ||
| 1212 | CONFIG_NFS_V4=y | ||
| 1213 | # CONFIG_NFS_DIRECTIO is not set | ||
| 1214 | CONFIG_NFSD=y | ||
| 1215 | CONFIG_NFSD_V2_ACL=y | ||
| 1216 | CONFIG_NFSD_V3=y | ||
| 1217 | CONFIG_NFSD_V3_ACL=y | ||
| 1218 | CONFIG_NFSD_V4=y | ||
| 1219 | CONFIG_NFSD_TCP=y | ||
| 1220 | CONFIG_LOCKD=y | ||
| 1221 | CONFIG_LOCKD_V4=y | ||
| 1222 | CONFIG_EXPORTFS=y | ||
| 1223 | CONFIG_NFS_ACL_SUPPORT=y | ||
| 1224 | CONFIG_NFS_COMMON=y | ||
| 1225 | CONFIG_SUNRPC=y | ||
| 1226 | CONFIG_SUNRPC_GSS=y | ||
| 1227 | CONFIG_RPCSEC_GSS_KRB5=y | ||
| 1228 | CONFIG_RPCSEC_GSS_SPKM3=m | ||
| 1229 | # CONFIG_SMB_FS is not set | ||
| 1230 | CONFIG_CIFS=m | ||
| 1231 | # CONFIG_CIFS_STATS is not set | ||
| 1232 | CONFIG_CIFS_XATTR=y | ||
| 1233 | CONFIG_CIFS_POSIX=y | ||
| 1234 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
| 1235 | # CONFIG_NCP_FS is not set | ||
| 1236 | # CONFIG_CODA_FS is not set | ||
| 1237 | # CONFIG_AFS_FS is not set | ||
| 1238 | # CONFIG_9P_FS is not set | ||
| 1239 | |||
| 1240 | # | ||
| 1241 | # Partition Types | ||
| 1242 | # | ||
| 1243 | # CONFIG_PARTITION_ADVANCED is not set | ||
| 1244 | CONFIG_MSDOS_PARTITION=y | ||
| 1245 | |||
| 1246 | # | ||
| 1247 | # Native Language Support | ||
| 1248 | # | ||
| 1249 | CONFIG_NLS=y | ||
| 1250 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 1251 | CONFIG_NLS_CODEPAGE_437=y | ||
| 1252 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 1253 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 1254 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 1255 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 1256 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 1257 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 1258 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 1259 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 1260 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 1261 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 1262 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 1263 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 1264 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 1265 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 1266 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 1267 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 1268 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 1269 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 1270 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 1271 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 1272 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 1273 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 1274 | CONFIG_NLS_ASCII=y | ||
| 1275 | CONFIG_NLS_ISO8859_1=y | ||
| 1276 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 1277 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 1278 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 1279 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 1280 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 1281 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 1282 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 1283 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 1284 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 1285 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 1286 | # CONFIG_NLS_KOI8_R is not set | ||
| 1287 | # CONFIG_NLS_KOI8_U is not set | ||
| 1288 | # CONFIG_NLS_UTF8 is not set | ||
| 1289 | |||
| 1290 | # | ||
| 1291 | # Profiling support | ||
| 1292 | # | ||
| 1293 | CONFIG_PROFILING=y | ||
| 1294 | CONFIG_OPROFILE=y | ||
| 1295 | |||
| 1296 | # | ||
| 1297 | # Kernel hacking | ||
| 1298 | # | ||
| 1299 | # CONFIG_PRINTK_TIME is not set | ||
| 1300 | CONFIG_DEBUG_KERNEL=y | ||
| 1301 | CONFIG_MAGIC_SYSRQ=y | ||
| 1302 | CONFIG_LOG_BUF_SHIFT=17 | ||
| 1303 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1304 | # CONFIG_SCHEDSTATS is not set | ||
| 1305 | # CONFIG_DEBUG_SLAB is not set | ||
| 1306 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 1307 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 1308 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 1309 | # CONFIG_DEBUG_INFO is not set | ||
| 1310 | CONFIG_DEBUG_FS=y | ||
| 1311 | CONFIG_DEBUG_STACKOVERFLOW=y | ||
| 1312 | # CONFIG_KPROBES is not set | ||
| 1313 | CONFIG_DEBUG_STACK_USAGE=y | ||
| 1314 | CONFIG_DEBUGGER=y | ||
| 1315 | CONFIG_XMON=y | ||
| 1316 | CONFIG_XMON_DEFAULT=y | ||
| 1317 | # CONFIG_PPCDBG is not set | ||
| 1318 | CONFIG_IRQSTACKS=y | ||
| 1319 | |||
| 1320 | # | ||
| 1321 | # Security options | ||
| 1322 | # | ||
| 1323 | # CONFIG_KEYS is not set | ||
| 1324 | # CONFIG_SECURITY is not set | ||
| 1325 | |||
| 1326 | # | ||
| 1327 | # Cryptographic options | ||
| 1328 | # | ||
| 1329 | CONFIG_CRYPTO=y | ||
| 1330 | CONFIG_CRYPTO_HMAC=y | ||
| 1331 | CONFIG_CRYPTO_NULL=m | ||
| 1332 | CONFIG_CRYPTO_MD4=m | ||
| 1333 | CONFIG_CRYPTO_MD5=y | ||
| 1334 | CONFIG_CRYPTO_SHA1=m | ||
| 1335 | CONFIG_CRYPTO_SHA256=m | ||
| 1336 | CONFIG_CRYPTO_SHA512=m | ||
| 1337 | CONFIG_CRYPTO_WP512=m | ||
| 1338 | CONFIG_CRYPTO_TGR192=m | ||
| 1339 | CONFIG_CRYPTO_DES=y | ||
| 1340 | CONFIG_CRYPTO_BLOWFISH=m | ||
| 1341 | CONFIG_CRYPTO_TWOFISH=m | ||
| 1342 | CONFIG_CRYPTO_SERPENT=m | ||
| 1343 | CONFIG_CRYPTO_AES=m | ||
| 1344 | CONFIG_CRYPTO_CAST5=m | ||
| 1345 | CONFIG_CRYPTO_CAST6=m | ||
| 1346 | CONFIG_CRYPTO_TEA=m | ||
| 1347 | CONFIG_CRYPTO_ARC4=m | ||
| 1348 | CONFIG_CRYPTO_KHAZAD=m | ||
| 1349 | CONFIG_CRYPTO_ANUBIS=m | ||
| 1350 | CONFIG_CRYPTO_DEFLATE=m | ||
| 1351 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
| 1352 | CONFIG_CRYPTO_CRC32C=m | ||
| 1353 | CONFIG_CRYPTO_TEST=m | ||
| 1354 | |||
| 1355 | # | ||
| 1356 | # Hardware crypto devices | ||
| 1357 | # | ||
| 1358 | |||
| 1359 | # | ||
| 1360 | # Library routines | ||
| 1361 | # | ||
| 1362 | CONFIG_CRC_CCITT=m | ||
| 1363 | # CONFIG_CRC16 is not set | ||
| 1364 | CONFIG_CRC32=y | ||
| 1365 | CONFIG_LIBCRC32C=m | ||
| 1366 | CONFIG_ZLIB_INFLATE=y | ||
| 1367 | CONFIG_ZLIB_DEFLATE=m | ||
| 1368 | CONFIG_TEXTSEARCH=y | ||
| 1369 | CONFIG_TEXTSEARCH_KMP=m | ||
| 1370 | CONFIG_TEXTSEARCH_BM=m | ||
| 1371 | CONFIG_TEXTSEARCH_FSM=m | ||
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index 572d4f5eaacb..b3ae2993efb8 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile | |||
| @@ -13,12 +13,15 @@ endif | |||
| 13 | obj-y := semaphore.o cputable.o ptrace.o syscalls.o \ | 13 | obj-y := semaphore.o cputable.o ptrace.o syscalls.o \ |
| 14 | signal_32.o pmc.o | 14 | signal_32.o pmc.o |
| 15 | obj-$(CONFIG_PPC64) += setup_64.o binfmt_elf32.o sys_ppc32.o \ | 15 | obj-$(CONFIG_PPC64) += setup_64.o binfmt_elf32.o sys_ppc32.o \ |
| 16 | ptrace32.o systbl.o | 16 | signal_64.o ptrace32.o systbl.o |
| 17 | obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o | 17 | obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o |
| 18 | obj-$(CONFIG_POWER4) += idle_power4.o | 18 | obj-$(CONFIG_POWER4) += idle_power4.o |
| 19 | obj-$(CONFIG_PPC_OF) += of_device.o | 19 | obj-$(CONFIG_PPC_OF) += of_device.o |
| 20 | obj-$(CONFIG_PPC_RTAS) += rtas.o | 20 | obj-$(CONFIG_PPC_RTAS) += rtas.o |
| 21 | obj-$(CONFIG_RTAS_FLASH) += rtas_flash.o | ||
| 22 | obj-$(CONFIG_RTAS_PROC) += rtas-proc.o | ||
| 21 | obj-$(CONFIG_IBMVIO) += vio.o | 23 | obj-$(CONFIG_IBMVIO) += vio.o |
| 24 | obj-$(CONFIG_GENERIC_TBSYNC) += smp-tbsync.o | ||
| 22 | 25 | ||
| 23 | ifeq ($(CONFIG_PPC_MERGE),y) | 26 | ifeq ($(CONFIG_PPC_MERGE),y) |
| 24 | 27 | ||
| @@ -38,6 +41,7 @@ obj-$(CONFIG_PPC_OF) += prom_init.o | |||
| 38 | obj-$(CONFIG_MODULES) += ppc_ksyms.o | 41 | obj-$(CONFIG_MODULES) += ppc_ksyms.o |
| 39 | obj-$(CONFIG_BOOTX_TEXT) += btext.o | 42 | obj-$(CONFIG_BOOTX_TEXT) += btext.o |
| 40 | obj-$(CONFIG_6xx) += idle_6xx.o | 43 | obj-$(CONFIG_6xx) += idle_6xx.o |
| 44 | obj-$(CONFIG_SMP) += smp.o | ||
| 41 | 45 | ||
| 42 | ifeq ($(CONFIG_PPC_ISERIES),y) | 46 | ifeq ($(CONFIG_PPC_ISERIES),y) |
| 43 | $(obj)/head_64.o: $(obj)/lparmap.s | 47 | $(obj)/head_64.o: $(obj)/lparmap.s |
| @@ -46,8 +50,9 @@ endif | |||
| 46 | 50 | ||
| 47 | else | 51 | else |
| 48 | # stuff used from here for ARCH=ppc or ARCH=ppc64 | 52 | # stuff used from here for ARCH=ppc or ARCH=ppc64 |
| 53 | smpobj-$(CONFIG_SMP) += smp.o | ||
| 49 | obj-$(CONFIG_PPC64) += traps.o process.o init_task.o time.o \ | 54 | obj-$(CONFIG_PPC64) += traps.o process.o init_task.o time.o \ |
| 50 | setup-common.o | 55 | setup-common.o $(smpobj-y) |
| 51 | 56 | ||
| 52 | 57 | ||
| 53 | endif | 58 | endif |
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index 330cd783206f..bc5a3689cc05 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c | |||
| @@ -40,7 +40,7 @@ | |||
| 40 | #ifdef CONFIG_PPC64 | 40 | #ifdef CONFIG_PPC64 |
| 41 | #include <asm/paca.h> | 41 | #include <asm/paca.h> |
| 42 | #include <asm/lppaca.h> | 42 | #include <asm/lppaca.h> |
| 43 | #include <asm/iSeries/HvLpEvent.h> | 43 | #include <asm/iseries/hv_lp_event.h> |
| 44 | #include <asm/cache.h> | 44 | #include <asm/cache.h> |
| 45 | #include <asm/systemcfg.h> | 45 | #include <asm/systemcfg.h> |
| 46 | #include <asm/compat.h> | 46 | #include <asm/compat.h> |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 984a10630714..2d22bf03484e 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
| @@ -279,7 +279,7 @@ _GLOBAL(ppc32_rt_sigsuspend) | |||
| 279 | bne syscall_exit | 279 | bne syscall_exit |
| 280 | /* If sigsuspend() returns zero, we are going into a signal handler. We | 280 | /* If sigsuspend() returns zero, we are going into a signal handler. We |
| 281 | may need to call audit_syscall_exit() to mark the exit from sigsuspend() */ | 281 | may need to call audit_syscall_exit() to mark the exit from sigsuspend() */ |
| 282 | #ifdef CONFIG_AUDIT | 282 | #ifdef CONFIG_AUDITSYSCALL |
| 283 | ld r3,PACACURRENT(r13) | 283 | ld r3,PACACURRENT(r13) |
| 284 | ld r4,AUDITCONTEXT(r3) | 284 | ld r4,AUDITCONTEXT(r3) |
| 285 | cmpdi 0,r4,0 | 285 | cmpdi 0,r4,0 |
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S index 147215a0d6c0..45d81976987f 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S | |||
| @@ -35,7 +35,7 @@ | |||
| 35 | #include <asm/cputable.h> | 35 | #include <asm/cputable.h> |
| 36 | #include <asm/setup.h> | 36 | #include <asm/setup.h> |
| 37 | #include <asm/hvcall.h> | 37 | #include <asm/hvcall.h> |
| 38 | #include <asm/iSeries/LparMap.h> | 38 | #include <asm/iseries/lpar_map.h> |
| 39 | #include <asm/thread_info.h> | 39 | #include <asm/thread_info.h> |
| 40 | 40 | ||
| 41 | #ifdef CONFIG_PPC_ISERIES | 41 | #ifdef CONFIG_PPC_ISERIES |
| @@ -1914,24 +1914,6 @@ _GLOBAL(hmt_start_secondary) | |||
| 1914 | blr | 1914 | blr |
| 1915 | #endif | 1915 | #endif |
| 1916 | 1916 | ||
| 1917 | #if defined(CONFIG_KEXEC) || defined(CONFIG_SMP) | ||
| 1918 | _GLOBAL(smp_release_cpus) | ||
| 1919 | /* All secondary cpus are spinning on a common | ||
| 1920 | * spinloop, release them all now so they can start | ||
| 1921 | * to spin on their individual paca spinloops. | ||
| 1922 | * For non SMP kernels, the secondary cpus never | ||
| 1923 | * get out of the common spinloop. | ||
| 1924 | * XXX This does nothing useful on iSeries, secondaries are | ||
| 1925 | * already waiting on their paca. | ||
| 1926 | */ | ||
| 1927 | li r3,1 | ||
| 1928 | LOADADDR(r5,__secondary_hold_spinloop) | ||
| 1929 | std r3,0(r5) | ||
| 1930 | sync | ||
| 1931 | blr | ||
| 1932 | #endif /* CONFIG_SMP */ | ||
| 1933 | |||
| 1934 | |||
| 1935 | /* | 1917 | /* |
| 1936 | * We put a few things here that have to be page-aligned. | 1918 | * We put a few things here that have to be page-aligned. |
| 1937 | * This stuff goes at the beginning of the bss, which is page-aligned. | 1919 | * This stuff goes at the beginning of the bss, which is page-aligned. |
diff --git a/arch/powerpc/kernel/lparmap.c b/arch/powerpc/kernel/lparmap.c index b81de286df5e..eded971d1bf9 100644 --- a/arch/powerpc/kernel/lparmap.c +++ b/arch/powerpc/kernel/lparmap.c | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | */ | 8 | */ |
| 9 | #include <asm/mmu.h> | 9 | #include <asm/mmu.h> |
| 10 | #include <asm/page.h> | 10 | #include <asm/page.h> |
| 11 | #include <asm/iSeries/LparMap.h> | 11 | #include <asm/iseries/lpar_map.h> |
| 12 | 12 | ||
| 13 | const struct LparMap __attribute__((__section__(".text"))) xLparMap = { | 13 | const struct LparMap __attribute__((__section__(".text"))) xLparMap = { |
| 14 | .xNumberEsids = HvEsidsToMap, | 14 | .xNumberEsids = HvEsidsToMap, |
diff --git a/arch/powerpc/kernel/ppc32.h b/arch/powerpc/kernel/ppc32.h new file mode 100644 index 000000000000..90e562771791 --- /dev/null +++ b/arch/powerpc/kernel/ppc32.h | |||
| @@ -0,0 +1,138 @@ | |||
| 1 | #ifndef _PPC64_PPC32_H | ||
| 2 | #define _PPC64_PPC32_H | ||
| 3 | |||
| 4 | #include <linux/compat.h> | ||
| 5 | #include <asm/siginfo.h> | ||
| 6 | #include <asm/signal.h> | ||
| 7 | |||
| 8 | /* | ||
| 9 | * Data types and macros for providing 32b PowerPC support. | ||
| 10 | * | ||
| 11 | * This program is free software; you can redistribute it and/or | ||
| 12 | * modify it under the terms of the GNU General Public License | ||
| 13 | * as published by the Free Software Foundation; either version | ||
| 14 | * 2 of the License, or (at your option) any later version. | ||
| 15 | */ | ||
| 16 | |||
| 17 | /* These are here to support 32-bit syscalls on a 64-bit kernel. */ | ||
| 18 | |||
| 19 | typedef struct compat_siginfo { | ||
| 20 | int si_signo; | ||
| 21 | int si_errno; | ||
| 22 | int si_code; | ||
| 23 | |||
| 24 | union { | ||
| 25 | int _pad[SI_PAD_SIZE32]; | ||
| 26 | |||
| 27 | /* kill() */ | ||
| 28 | struct { | ||
| 29 | compat_pid_t _pid; /* sender's pid */ | ||
| 30 | compat_uid_t _uid; /* sender's uid */ | ||
| 31 | } _kill; | ||
| 32 | |||
| 33 | /* POSIX.1b timers */ | ||
| 34 | struct { | ||
| 35 | compat_timer_t _tid; /* timer id */ | ||
| 36 | int _overrun; /* overrun count */ | ||
| 37 | compat_sigval_t _sigval; /* same as below */ | ||
| 38 | int _sys_private; /* not to be passed to user */ | ||
| 39 | } _timer; | ||
| 40 | |||
| 41 | /* POSIX.1b signals */ | ||
| 42 | struct { | ||
| 43 | compat_pid_t _pid; /* sender's pid */ | ||
| 44 | compat_uid_t _uid; /* sender's uid */ | ||
| 45 | compat_sigval_t _sigval; | ||
| 46 | } _rt; | ||
| 47 | |||
| 48 | /* SIGCHLD */ | ||
| 49 | struct { | ||
| 50 | compat_pid_t _pid; /* which child */ | ||
| 51 | compat_uid_t _uid; /* sender's uid */ | ||
| 52 | int _status; /* exit code */ | ||
| 53 | compat_clock_t _utime; | ||
| 54 | compat_clock_t _stime; | ||
| 55 | } _sigchld; | ||
| 56 | |||
| 57 | /* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGEMT */ | ||
| 58 | struct { | ||
| 59 | unsigned int _addr; /* faulting insn/memory ref. */ | ||
| 60 | } _sigfault; | ||
| 61 | |||
| 62 | /* SIGPOLL */ | ||
| 63 | struct { | ||
| 64 | int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ | ||
| 65 | int _fd; | ||
| 66 | } _sigpoll; | ||
| 67 | } _sifields; | ||
| 68 | } compat_siginfo_t; | ||
| 69 | |||
| 70 | #define __old_sigaction32 old_sigaction32 | ||
| 71 | |||
| 72 | struct __old_sigaction32 { | ||
| 73 | compat_uptr_t sa_handler; | ||
| 74 | compat_old_sigset_t sa_mask; | ||
| 75 | unsigned int sa_flags; | ||
| 76 | compat_uptr_t sa_restorer; /* not used by Linux/SPARC yet */ | ||
| 77 | }; | ||
| 78 | |||
| 79 | |||
| 80 | |||
| 81 | struct sigaction32 { | ||
| 82 | compat_uptr_t sa_handler; /* Really a pointer, but need to deal with 32 bits */ | ||
| 83 | unsigned int sa_flags; | ||
| 84 | compat_uptr_t sa_restorer; /* Another 32 bit pointer */ | ||
| 85 | compat_sigset_t sa_mask; /* A 32 bit mask */ | ||
| 86 | }; | ||
| 87 | |||
| 88 | typedef struct sigaltstack_32 { | ||
| 89 | unsigned int ss_sp; | ||
| 90 | int ss_flags; | ||
| 91 | compat_size_t ss_size; | ||
| 92 | } stack_32_t; | ||
| 93 | |||
| 94 | struct pt_regs32 { | ||
| 95 | unsigned int gpr[32]; | ||
| 96 | unsigned int nip; | ||
| 97 | unsigned int msr; | ||
| 98 | unsigned int orig_gpr3; /* Used for restarting system calls */ | ||
| 99 | unsigned int ctr; | ||
| 100 | unsigned int link; | ||
| 101 | unsigned int xer; | ||
| 102 | unsigned int ccr; | ||
| 103 | unsigned int mq; /* 601 only (not used at present) */ | ||
| 104 | unsigned int trap; /* Reason for being here */ | ||
| 105 | unsigned int dar; /* Fault registers */ | ||
| 106 | unsigned int dsisr; | ||
| 107 | unsigned int result; /* Result of a system call */ | ||
| 108 | }; | ||
| 109 | |||
| 110 | struct sigcontext32 { | ||
| 111 | unsigned int _unused[4]; | ||
| 112 | int signal; | ||
| 113 | compat_uptr_t handler; | ||
| 114 | unsigned int oldmask; | ||
| 115 | compat_uptr_t regs; /* 4 byte pointer to the pt_regs32 structure. */ | ||
| 116 | }; | ||
| 117 | |||
| 118 | struct mcontext32 { | ||
| 119 | elf_gregset_t32 mc_gregs; | ||
| 120 | elf_fpregset_t mc_fregs; | ||
| 121 | unsigned int mc_pad[2]; | ||
| 122 | elf_vrregset_t32 mc_vregs __attribute__((__aligned__(16))); | ||
| 123 | }; | ||
| 124 | |||
| 125 | struct ucontext32 { | ||
| 126 | unsigned int uc_flags; | ||
| 127 | unsigned int uc_link; | ||
| 128 | stack_32_t uc_stack; | ||
| 129 | int uc_pad[7]; | ||
| 130 | compat_uptr_t uc_regs; /* points to uc_mcontext field */ | ||
| 131 | compat_sigset_t uc_sigmask; /* mask last for extensibility */ | ||
| 132 | /* glibc has 1024-bit signal masks, ours are 64-bit */ | ||
| 133 | int uc_maskext[30]; | ||
| 134 | int uc_pad2[3]; | ||
| 135 | struct mcontext32 uc_mcontext; | ||
| 136 | }; | ||
| 137 | |||
| 138 | #endif /* _PPC64_PPC32_H */ | ||
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c index 8bc540337ba0..47d6f7e2ea9f 100644 --- a/arch/powerpc/kernel/ppc_ksyms.c +++ b/arch/powerpc/kernel/ppc_ksyms.c | |||
| @@ -81,15 +81,6 @@ EXPORT_SYMBOL(_prep_type); | |||
| 81 | EXPORT_SYMBOL(ucSystemType); | 81 | EXPORT_SYMBOL(ucSystemType); |
| 82 | #endif | 82 | #endif |
| 83 | 83 | ||
| 84 | #if !defined(__INLINE_BITOPS) | ||
| 85 | EXPORT_SYMBOL(set_bit); | ||
| 86 | EXPORT_SYMBOL(clear_bit); | ||
| 87 | EXPORT_SYMBOL(change_bit); | ||
| 88 | EXPORT_SYMBOL(test_and_set_bit); | ||
| 89 | EXPORT_SYMBOL(test_and_clear_bit); | ||
| 90 | EXPORT_SYMBOL(test_and_change_bit); | ||
| 91 | #endif /* __INLINE_BITOPS */ | ||
| 92 | |||
| 93 | EXPORT_SYMBOL(strcpy); | 84 | EXPORT_SYMBOL(strcpy); |
| 94 | EXPORT_SYMBOL(strncpy); | 85 | EXPORT_SYMBOL(strncpy); |
| 95 | EXPORT_SYMBOL(strcat); | 86 | EXPORT_SYMBOL(strcat); |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 8f85dabe4df3..96843211cc5c 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
| @@ -48,8 +48,8 @@ | |||
| 48 | #include <asm/prom.h> | 48 | #include <asm/prom.h> |
| 49 | #ifdef CONFIG_PPC64 | 49 | #ifdef CONFIG_PPC64 |
| 50 | #include <asm/firmware.h> | 50 | #include <asm/firmware.h> |
| 51 | #include <asm/plpar_wrappers.h> | ||
| 52 | #include <asm/time.h> | 51 | #include <asm/time.h> |
| 52 | #include <asm/machdep.h> | ||
| 53 | #endif | 53 | #endif |
| 54 | 54 | ||
| 55 | extern unsigned long _get_SP(void); | 55 | extern unsigned long _get_SP(void); |
| @@ -201,27 +201,15 @@ int dump_spe(struct pt_regs *regs, elf_vrregset_t *evrregs) | |||
| 201 | } | 201 | } |
| 202 | #endif /* CONFIG_SPE */ | 202 | #endif /* CONFIG_SPE */ |
| 203 | 203 | ||
| 204 | static void set_dabr_spr(unsigned long val) | ||
| 205 | { | ||
| 206 | mtspr(SPRN_DABR, val); | ||
| 207 | } | ||
| 208 | |||
| 209 | int set_dabr(unsigned long dabr) | 204 | int set_dabr(unsigned long dabr) |
| 210 | { | 205 | { |
| 211 | int ret = 0; | ||
| 212 | |||
| 213 | #ifdef CONFIG_PPC64 | 206 | #ifdef CONFIG_PPC64 |
| 214 | if (firmware_has_feature(FW_FEATURE_XDABR)) { | 207 | if (ppc_md.set_dabr) |
| 215 | /* We want to catch accesses from kernel and userspace */ | 208 | return ppc_md.set_dabr(dabr); |
| 216 | unsigned long flags = H_DABRX_KERNEL|H_DABRX_USER; | ||
| 217 | ret = plpar_set_xdabr(dabr, flags); | ||
| 218 | } else if (firmware_has_feature(FW_FEATURE_DABR)) { | ||
| 219 | ret = plpar_set_dabr(dabr); | ||
| 220 | } else | ||
| 221 | #endif | 209 | #endif |
| 222 | set_dabr_spr(dabr); | ||
| 223 | 210 | ||
| 224 | return ret; | 211 | mtspr(SPRN_DABR, dabr); |
| 212 | return 0; | ||
| 225 | } | 213 | } |
| 226 | 214 | ||
| 227 | #ifdef CONFIG_PPC64 | 215 | #ifdef CONFIG_PPC64 |
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index 2eccd0e159e3..eec2da695508 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c | |||
| @@ -1285,7 +1285,7 @@ static int __init early_init_dt_scan_memory(unsigned long node, | |||
| 1285 | 1285 | ||
| 1286 | endp = reg + (l / sizeof(cell_t)); | 1286 | endp = reg + (l / sizeof(cell_t)); |
| 1287 | 1287 | ||
| 1288 | DBG("memory scan node %s ..., reg size %ld, data: %x %x %x %x, ...\n", | 1288 | DBG("memory scan node %s, reg size %ld, data: %x %x %x %x,\n", |
| 1289 | uname, l, reg[0], reg[1], reg[2], reg[3]); | 1289 | uname, l, reg[0], reg[1], reg[2], reg[3]); |
| 1290 | 1290 | ||
| 1291 | while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) { | 1291 | while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) { |
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 9750b3cd8ecd..c758b6624d7b 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c | |||
| @@ -2000,7 +2000,7 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4, | |||
| 2000 | #endif | 2000 | #endif |
| 2001 | 2001 | ||
| 2002 | /* | 2002 | /* |
| 2003 | * On pSeries and BPA, copy the CPU hold code | 2003 | * Copy the CPU hold code |
| 2004 | */ | 2004 | */ |
| 2005 | if (RELOC(of_platform) != PLATFORM_POWERMAC) | 2005 | if (RELOC(of_platform) != PLATFORM_POWERMAC) |
| 2006 | copy_and_flush(0, KERNELBASE + offset, 0x100, 0); | 2006 | copy_and_flush(0, KERNELBASE + offset, 0x100, 0); |
diff --git a/arch/ppc64/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c index 5bdd5b079d96..5bdd5b079d96 100644 --- a/arch/ppc64/kernel/rtas-proc.c +++ b/arch/powerpc/kernel/rtas-proc.c | |||
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index 4d22eeeeb91d..b7fc2d884950 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c | |||
| @@ -43,6 +43,13 @@ char rtas_data_buf[RTAS_DATA_BUF_SIZE] __cacheline_aligned; | |||
| 43 | unsigned long rtas_rmo_buf; | 43 | unsigned long rtas_rmo_buf; |
| 44 | 44 | ||
| 45 | /* | 45 | /* |
| 46 | * If non-NULL, this gets called when the kernel terminates. | ||
| 47 | * This is done like this so rtas_flash can be a module. | ||
| 48 | */ | ||
| 49 | void (*rtas_flash_term_hook)(int); | ||
| 50 | EXPORT_SYMBOL(rtas_flash_term_hook); | ||
| 51 | |||
| 52 | /* | ||
| 46 | * call_rtas_display_status and call_rtas_display_status_delay | 53 | * call_rtas_display_status and call_rtas_display_status_delay |
| 47 | * are designed only for very early low-level debugging, which | 54 | * are designed only for very early low-level debugging, which |
| 48 | * is why the token is hard-coded to 10. | 55 | * is why the token is hard-coded to 10. |
| @@ -206,6 +213,7 @@ void rtas_progress(char *s, unsigned short hex) | |||
| 206 | 213 | ||
| 207 | spin_unlock(&progress_lock); | 214 | spin_unlock(&progress_lock); |
| 208 | } | 215 | } |
| 216 | EXPORT_SYMBOL(rtas_progress); /* needed by rtas_flash module */ | ||
| 209 | 217 | ||
| 210 | int rtas_token(const char *service) | 218 | int rtas_token(const char *service) |
| 211 | { | 219 | { |
| @@ -492,6 +500,8 @@ int rtas_set_indicator(int indicator, int index, int new_value) | |||
| 492 | 500 | ||
| 493 | void rtas_restart(char *cmd) | 501 | void rtas_restart(char *cmd) |
| 494 | { | 502 | { |
| 503 | if (rtas_flash_term_hook) | ||
| 504 | rtas_flash_term_hook(SYS_RESTART); | ||
| 495 | printk("RTAS system-reboot returned %d\n", | 505 | printk("RTAS system-reboot returned %d\n", |
| 496 | rtas_call(rtas_token("system-reboot"), 0, 1, NULL)); | 506 | rtas_call(rtas_token("system-reboot"), 0, 1, NULL)); |
| 497 | for (;;); | 507 | for (;;); |
| @@ -499,6 +509,8 @@ void rtas_restart(char *cmd) | |||
| 499 | 509 | ||
| 500 | void rtas_power_off(void) | 510 | void rtas_power_off(void) |
| 501 | { | 511 | { |
| 512 | if (rtas_flash_term_hook) | ||
| 513 | rtas_flash_term_hook(SYS_POWER_OFF); | ||
| 502 | /* allow power on only with power button press */ | 514 | /* allow power on only with power button press */ |
| 503 | printk("RTAS power-off returned %d\n", | 515 | printk("RTAS power-off returned %d\n", |
| 504 | rtas_call(rtas_token("power-off"), 2, 1, NULL, -1, -1)); | 516 | rtas_call(rtas_token("power-off"), 2, 1, NULL, -1, -1)); |
| @@ -507,7 +519,12 @@ void rtas_power_off(void) | |||
| 507 | 519 | ||
| 508 | void rtas_halt(void) | 520 | void rtas_halt(void) |
| 509 | { | 521 | { |
| 510 | rtas_power_off(); | 522 | if (rtas_flash_term_hook) |
| 523 | rtas_flash_term_hook(SYS_HALT); | ||
| 524 | /* allow power on only with power button press */ | ||
| 525 | printk("RTAS power-off returned %d\n", | ||
| 526 | rtas_call(rtas_token("power-off"), 2, 1, NULL, -1, -1)); | ||
| 527 | for (;;); | ||
| 511 | } | 528 | } |
| 512 | 529 | ||
| 513 | /* Must be in the RMO region, so we place it here */ | 530 | /* Must be in the RMO region, so we place it here */ |
diff --git a/arch/ppc64/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c index 923e2e201a70..50500093c97f 100644 --- a/arch/ppc64/kernel/rtas_flash.c +++ b/arch/powerpc/kernel/rtas_flash.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include <asm/delay.h> | 19 | #include <asm/delay.h> |
| 20 | #include <asm/uaccess.h> | 20 | #include <asm/uaccess.h> |
| 21 | #include <asm/rtas.h> | 21 | #include <asm/rtas.h> |
| 22 | #include <asm/abs_addr.h> | ||
| 22 | 23 | ||
| 23 | #define MODULE_VERS "1.0" | 24 | #define MODULE_VERS "1.0" |
| 24 | #define MODULE_NAME "rtas_flash" | 25 | #define MODULE_NAME "rtas_flash" |
| @@ -71,10 +72,36 @@ | |||
| 71 | #define VALIDATE_BUF_SIZE 4096 | 72 | #define VALIDATE_BUF_SIZE 4096 |
| 72 | #define RTAS_MSG_MAXLEN 64 | 73 | #define RTAS_MSG_MAXLEN 64 |
| 73 | 74 | ||
| 75 | struct flash_block { | ||
| 76 | char *data; | ||
| 77 | unsigned long length; | ||
| 78 | }; | ||
| 79 | |||
| 80 | /* This struct is very similar but not identical to | ||
| 81 | * that needed by the rtas flash update. | ||
| 82 | * All we need to do for rtas is rewrite num_blocks | ||
| 83 | * into a version/length and translate the pointers | ||
| 84 | * to absolute. | ||
| 85 | */ | ||
| 86 | #define FLASH_BLOCKS_PER_NODE ((PAGE_SIZE - 16) / sizeof(struct flash_block)) | ||
| 87 | struct flash_block_list { | ||
| 88 | unsigned long num_blocks; | ||
| 89 | struct flash_block_list *next; | ||
| 90 | struct flash_block blocks[FLASH_BLOCKS_PER_NODE]; | ||
| 91 | }; | ||
| 92 | struct flash_block_list_header { /* just the header of flash_block_list */ | ||
| 93 | unsigned long num_blocks; | ||
| 94 | struct flash_block_list *next; | ||
| 95 | }; | ||
| 96 | |||
| 97 | static struct flash_block_list_header rtas_firmware_flash_list = {0, NULL}; | ||
| 98 | |||
| 99 | #define FLASH_BLOCK_LIST_VERSION (1UL) | ||
| 100 | |||
| 74 | /* Local copy of the flash block list. | 101 | /* Local copy of the flash block list. |
| 75 | * We only allow one open of the flash proc file and create this | 102 | * We only allow one open of the flash proc file and create this |
| 76 | * list as we go. This list will be put in the kernel's | 103 | * list as we go. This list will be put in the |
| 77 | * rtas_firmware_flash_list global var once it is fully read. | 104 | * rtas_firmware_flash_list var once it is fully read. |
| 78 | * | 105 | * |
| 79 | * For convenience as we build the list we use virtual addrs, | 106 | * For convenience as we build the list we use virtual addrs, |
| 80 | * we do not fill in the version number, and the length field | 107 | * we do not fill in the version number, and the length field |
| @@ -562,6 +589,86 @@ static int validate_flash_release(struct inode *inode, struct file *file) | |||
| 562 | return 0; | 589 | return 0; |
| 563 | } | 590 | } |
| 564 | 591 | ||
| 592 | static void rtas_flash_firmware(int reboot_type) | ||
| 593 | { | ||
| 594 | unsigned long image_size; | ||
| 595 | struct flash_block_list *f, *next, *flist; | ||
| 596 | unsigned long rtas_block_list; | ||
| 597 | int i, status, update_token; | ||
| 598 | |||
| 599 | if (rtas_firmware_flash_list.next == NULL) | ||
| 600 | return; /* nothing to do */ | ||
| 601 | |||
| 602 | if (reboot_type != SYS_RESTART) { | ||
| 603 | printk(KERN_ALERT "FLASH: firmware flash requires a reboot\n"); | ||
| 604 | printk(KERN_ALERT "FLASH: the firmware image will NOT be flashed\n"); | ||
| 605 | return; | ||
| 606 | } | ||
| 607 | |||
| 608 | update_token = rtas_token("ibm,update-flash-64-and-reboot"); | ||
| 609 | if (update_token == RTAS_UNKNOWN_SERVICE) { | ||
| 610 | printk(KERN_ALERT "FLASH: ibm,update-flash-64-and-reboot " | ||
| 611 | "is not available -- not a service partition?\n"); | ||
| 612 | printk(KERN_ALERT "FLASH: firmware will not be flashed\n"); | ||
| 613 | return; | ||
| 614 | } | ||
| 615 | |||
| 616 | /* NOTE: the "first" block list is a global var with no data | ||
| 617 | * blocks in the kernel data segment. We do this because | ||
| 618 | * we want to ensure this block_list addr is under 4GB. | ||
| 619 | */ | ||
| 620 | rtas_firmware_flash_list.num_blocks = 0; | ||
| 621 | flist = (struct flash_block_list *)&rtas_firmware_flash_list; | ||
| 622 | rtas_block_list = virt_to_abs(flist); | ||
| 623 | if (rtas_block_list >= 4UL*1024*1024*1024) { | ||
| 624 | printk(KERN_ALERT "FLASH: kernel bug...flash list header addr above 4GB\n"); | ||
| 625 | return; | ||
| 626 | } | ||
| 627 | |||
| 628 | printk(KERN_ALERT "FLASH: preparing saved firmware image for flash\n"); | ||
| 629 | /* Update the block_list in place. */ | ||
| 630 | image_size = 0; | ||
| 631 | for (f = flist; f; f = next) { | ||
| 632 | /* Translate data addrs to absolute */ | ||
| 633 | for (i = 0; i < f->num_blocks; i++) { | ||
| 634 | f->blocks[i].data = (char *)virt_to_abs(f->blocks[i].data); | ||
| 635 | image_size += f->blocks[i].length; | ||
| 636 | } | ||
| 637 | next = f->next; | ||
| 638 | /* Don't translate NULL pointer for last entry */ | ||
| 639 | if (f->next) | ||
| 640 | f->next = (struct flash_block_list *)virt_to_abs(f->next); | ||
| 641 | else | ||
| 642 | f->next = NULL; | ||
| 643 | /* make num_blocks into the version/length field */ | ||
| 644 | f->num_blocks = (FLASH_BLOCK_LIST_VERSION << 56) | ((f->num_blocks+1)*16); | ||
| 645 | } | ||
| 646 | |||
| 647 | printk(KERN_ALERT "FLASH: flash image is %ld bytes\n", image_size); | ||
| 648 | printk(KERN_ALERT "FLASH: performing flash and reboot\n"); | ||
| 649 | rtas_progress("Flashing \n", 0x0); | ||
| 650 | rtas_progress("Please Wait... ", 0x0); | ||
| 651 | printk(KERN_ALERT "FLASH: this will take several minutes. Do not power off!\n"); | ||
| 652 | status = rtas_call(update_token, 1, 1, NULL, rtas_block_list); | ||
| 653 | switch (status) { /* should only get "bad" status */ | ||
| 654 | case 0: | ||
| 655 | printk(KERN_ALERT "FLASH: success\n"); | ||
| 656 | break; | ||
| 657 | case -1: | ||
| 658 | printk(KERN_ALERT "FLASH: hardware error. Firmware may not be not flashed\n"); | ||
| 659 | break; | ||
| 660 | case -3: | ||
| 661 | printk(KERN_ALERT "FLASH: image is corrupt or not correct for this platform. Firmware not flashed\n"); | ||
| 662 | break; | ||
| 663 | case -4: | ||
| 664 | printk(KERN_ALERT "FLASH: flash failed when partially complete. System may not reboot\n"); | ||
| 665 | break; | ||
| 666 | default: | ||
| 667 | printk(KERN_ALERT "FLASH: unknown flash return code %d\n", status); | ||
| 668 | break; | ||
| 669 | } | ||
| 670 | } | ||
| 671 | |||
| 565 | static void remove_flash_pde(struct proc_dir_entry *dp) | 672 | static void remove_flash_pde(struct proc_dir_entry *dp) |
| 566 | { | 673 | { |
| 567 | if (dp) { | 674 | if (dp) { |
| @@ -701,6 +808,7 @@ int __init rtas_flash_init(void) | |||
| 701 | if (rc != 0) | 808 | if (rc != 0) |
| 702 | goto cleanup; | 809 | goto cleanup; |
| 703 | 810 | ||
| 811 | rtas_flash_term_hook = rtas_flash_firmware; | ||
| 704 | return 0; | 812 | return 0; |
| 705 | 813 | ||
| 706 | cleanup: | 814 | cleanup: |
| @@ -714,6 +822,7 @@ cleanup: | |||
| 714 | 822 | ||
| 715 | void __exit rtas_flash_cleanup(void) | 823 | void __exit rtas_flash_cleanup(void) |
| 716 | { | 824 | { |
| 825 | rtas_flash_term_hook = NULL; | ||
| 717 | remove_flash_pde(firmware_flash_pde); | 826 | remove_flash_pde(firmware_flash_pde); |
| 718 | remove_flash_pde(firmware_update_pde); | 827 | remove_flash_pde(firmware_update_pde); |
| 719 | remove_flash_pde(validate_pde); | 828 | remove_flash_pde(validate_pde); |
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index 1292460fcde2..d43fa8c0e5ac 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c | |||
| @@ -170,12 +170,8 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | #ifdef CONFIG_SMP | 172 | #ifdef CONFIG_SMP |
| 173 | #ifdef CONFIG_PPC64 /* XXX for now */ | ||
| 174 | pvr = per_cpu(pvr, cpu_id); | 173 | pvr = per_cpu(pvr, cpu_id); |
| 175 | #else | 174 | #else |
| 176 | pvr = cpu_data[cpu_id].pvr; | ||
| 177 | #endif | ||
| 178 | #else | ||
| 179 | pvr = mfspr(SPRN_PVR); | 175 | pvr = mfspr(SPRN_PVR); |
| 180 | #endif | 176 | #endif |
| 181 | maj = (pvr >> 8) & 0xFF; | 177 | maj = (pvr >> 8) & 0xFF; |
| @@ -201,11 +197,11 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
| 201 | #ifdef CONFIG_TAU_AVERAGE | 197 | #ifdef CONFIG_TAU_AVERAGE |
| 202 | /* more straightforward, but potentially misleading */ | 198 | /* more straightforward, but potentially misleading */ |
| 203 | seq_printf(m, "temperature \t: %u C (uncalibrated)\n", | 199 | seq_printf(m, "temperature \t: %u C (uncalibrated)\n", |
| 204 | cpu_temp(i)); | 200 | cpu_temp(cpu_id)); |
| 205 | #else | 201 | #else |
| 206 | /* show the actual temp sensor range */ | 202 | /* show the actual temp sensor range */ |
| 207 | u32 temp; | 203 | u32 temp; |
| 208 | temp = cpu_temp_both(i); | 204 | temp = cpu_temp_both(cpu_id); |
| 209 | seq_printf(m, "temperature \t: %u-%u C (uncalibrated)\n", | 205 | seq_printf(m, "temperature \t: %u-%u C (uncalibrated)\n", |
| 210 | temp & 0xff, temp >> 16); | 206 | temp & 0xff, temp >> 16); |
| 211 | #endif | 207 | #endif |
| @@ -408,3 +404,118 @@ static int __init set_preferred_console(void) | |||
| 408 | } | 404 | } |
| 409 | console_initcall(set_preferred_console); | 405 | console_initcall(set_preferred_console); |
| 410 | #endif /* CONFIG_PPC_MULTIPLATFORM */ | 406 | #endif /* CONFIG_PPC_MULTIPLATFORM */ |
| 407 | |||
| 408 | #ifdef CONFIG_SMP | ||
| 409 | |||
| 410 | /** | ||
| 411 | * setup_cpu_maps - initialize the following cpu maps: | ||
| 412 | * cpu_possible_map | ||
| 413 | * cpu_present_map | ||
| 414 | * cpu_sibling_map | ||
| 415 | * | ||
| 416 | * Having the possible map set up early allows us to restrict allocations | ||
| 417 | * of things like irqstacks to num_possible_cpus() rather than NR_CPUS. | ||
| 418 | * | ||
| 419 | * We do not initialize the online map here; cpus set their own bits in | ||
| 420 | * cpu_online_map as they come up. | ||
| 421 | * | ||
| 422 | * This function is valid only for Open Firmware systems. finish_device_tree | ||
| 423 | * must be called before using this. | ||
| 424 | * | ||
| 425 | * While we're here, we may as well set the "physical" cpu ids in the paca. | ||
| 426 | */ | ||
| 427 | void __init smp_setup_cpu_maps(void) | ||
| 428 | { | ||
| 429 | struct device_node *dn = NULL; | ||
| 430 | int cpu = 0; | ||
| 431 | int swap_cpuid = 0; | ||
| 432 | |||
| 433 | while ((dn = of_find_node_by_type(dn, "cpu")) && cpu < NR_CPUS) { | ||
| 434 | int *intserv; | ||
| 435 | int j, len = sizeof(u32), nthreads = 1; | ||
| 436 | |||
| 437 | intserv = (int *)get_property(dn, "ibm,ppc-interrupt-server#s", | ||
| 438 | &len); | ||
| 439 | if (intserv) | ||
| 440 | nthreads = len / sizeof(int); | ||
| 441 | else { | ||
| 442 | intserv = (int *) get_property(dn, "reg", NULL); | ||
| 443 | if (!intserv) | ||
| 444 | intserv = &cpu; /* assume logical == phys */ | ||
| 445 | } | ||
| 446 | |||
| 447 | for (j = 0; j < nthreads && cpu < NR_CPUS; j++) { | ||
| 448 | cpu_set(cpu, cpu_present_map); | ||
| 449 | set_hard_smp_processor_id(cpu, intserv[j]); | ||
| 450 | |||
| 451 | if (intserv[j] == boot_cpuid_phys) | ||
| 452 | swap_cpuid = cpu; | ||
| 453 | cpu_set(cpu, cpu_possible_map); | ||
| 454 | cpu++; | ||
| 455 | } | ||
| 456 | } | ||
| 457 | |||
| 458 | /* Swap CPU id 0 with boot_cpuid_phys, so we can always assume that | ||
| 459 | * boot cpu is logical 0. | ||
| 460 | */ | ||
| 461 | if (boot_cpuid_phys != get_hard_smp_processor_id(0)) { | ||
| 462 | u32 tmp; | ||
| 463 | tmp = get_hard_smp_processor_id(0); | ||
| 464 | set_hard_smp_processor_id(0, boot_cpuid_phys); | ||
| 465 | set_hard_smp_processor_id(swap_cpuid, tmp); | ||
| 466 | } | ||
| 467 | |||
| 468 | #ifdef CONFIG_PPC64 | ||
| 469 | /* | ||
| 470 | * On pSeries LPAR, we need to know how many cpus | ||
| 471 | * could possibly be added to this partition. | ||
| 472 | */ | ||
| 473 | if (systemcfg->platform == PLATFORM_PSERIES_LPAR && | ||
| 474 | (dn = of_find_node_by_path("/rtas"))) { | ||
| 475 | int num_addr_cell, num_size_cell, maxcpus; | ||
| 476 | unsigned int *ireg; | ||
| 477 | |||
| 478 | num_addr_cell = prom_n_addr_cells(dn); | ||
| 479 | num_size_cell = prom_n_size_cells(dn); | ||
| 480 | |||
| 481 | ireg = (unsigned int *) | ||
| 482 | get_property(dn, "ibm,lrdr-capacity", NULL); | ||
| 483 | |||
| 484 | if (!ireg) | ||
| 485 | goto out; | ||
| 486 | |||
| 487 | maxcpus = ireg[num_addr_cell + num_size_cell]; | ||
| 488 | |||
| 489 | /* Double maxcpus for processors which have SMT capability */ | ||
| 490 | if (cpu_has_feature(CPU_FTR_SMT)) | ||
| 491 | maxcpus *= 2; | ||
| 492 | |||
| 493 | if (maxcpus > NR_CPUS) { | ||
| 494 | printk(KERN_WARNING | ||
| 495 | "Partition configured for %d cpus, " | ||
| 496 | "operating system maximum is %d.\n", | ||
| 497 | maxcpus, NR_CPUS); | ||
| 498 | maxcpus = NR_CPUS; | ||
| 499 | } else | ||
| 500 | printk(KERN_INFO "Partition configured for %d cpus.\n", | ||
| 501 | maxcpus); | ||
| 502 | |||
| 503 | for (cpu = 0; cpu < maxcpus; cpu++) | ||
| 504 | cpu_set(cpu, cpu_possible_map); | ||
| 505 | out: | ||
| 506 | of_node_put(dn); | ||
| 507 | } | ||
| 508 | |||
| 509 | /* | ||
| 510 | * Do the sibling map; assume only two threads per processor. | ||
| 511 | */ | ||
| 512 | for_each_cpu(cpu) { | ||
| 513 | cpu_set(cpu, cpu_sibling_map[cpu]); | ||
| 514 | if (cpu_has_feature(CPU_FTR_SMT)) | ||
| 515 | cpu_set(cpu ^ 0x1, cpu_sibling_map[cpu]); | ||
| 516 | } | ||
| 517 | |||
| 518 | systemcfg->processorCount = num_present_cpus(); | ||
| 519 | #endif /* CONFIG_PPC64 */ | ||
| 520 | } | ||
| 521 | #endif /* CONFIG_SMP */ | ||
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c index 9680ae99b084..b45eedbb4b3a 100644 --- a/arch/powerpc/kernel/setup_32.c +++ b/arch/powerpc/kernel/setup_32.c | |||
| @@ -288,6 +288,8 @@ void __init setup_arch(char **cmdline_p) | |||
| 288 | unflatten_device_tree(); | 288 | unflatten_device_tree(); |
| 289 | finish_device_tree(); | 289 | finish_device_tree(); |
| 290 | 290 | ||
| 291 | smp_setup_cpu_maps(); | ||
| 292 | |||
| 291 | #ifdef CONFIG_BOOTX_TEXT | 293 | #ifdef CONFIG_BOOTX_TEXT |
| 292 | init_boot_display(); | 294 | init_boot_display(); |
| 293 | #endif | 295 | #endif |
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 40c48100bf1b..6b52cce872be 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c | |||
| @@ -56,7 +56,7 @@ | |||
| 56 | #include <asm/page.h> | 56 | #include <asm/page.h> |
| 57 | #include <asm/mmu.h> | 57 | #include <asm/mmu.h> |
| 58 | #include <asm/lmb.h> | 58 | #include <asm/lmb.h> |
| 59 | #include <asm/iSeries/ItLpNaca.h> | 59 | #include <asm/iseries/it_lp_naca.h> |
| 60 | #include <asm/firmware.h> | 60 | #include <asm/firmware.h> |
| 61 | #include <asm/systemcfg.h> | 61 | #include <asm/systemcfg.h> |
| 62 | #include <asm/xmon.h> | 62 | #include <asm/xmon.h> |
| @@ -103,8 +103,6 @@ extern void htab_initialize(void); | |||
| 103 | extern void early_init_devtree(void *flat_dt); | 103 | extern void early_init_devtree(void *flat_dt); |
| 104 | extern void unflatten_device_tree(void); | 104 | extern void unflatten_device_tree(void); |
| 105 | 105 | ||
| 106 | extern void smp_release_cpus(void); | ||
| 107 | |||
| 108 | int have_of = 1; | 106 | int have_of = 1; |
| 109 | int boot_cpuid = 0; | 107 | int boot_cpuid = 0; |
| 110 | int boot_cpuid_phys = 0; | 108 | int boot_cpuid_phys = 0; |
| @@ -183,120 +181,14 @@ static int __init early_smt_enabled(char *p) | |||
| 183 | } | 181 | } |
| 184 | early_param("smt-enabled", early_smt_enabled); | 182 | early_param("smt-enabled", early_smt_enabled); |
| 185 | 183 | ||
| 186 | /** | 184 | #else |
| 187 | * setup_cpu_maps - initialize the following cpu maps: | 185 | #define check_smt_enabled() |
| 188 | * cpu_possible_map | ||
| 189 | * cpu_present_map | ||
| 190 | * cpu_sibling_map | ||
| 191 | * | ||
| 192 | * Having the possible map set up early allows us to restrict allocations | ||
| 193 | * of things like irqstacks to num_possible_cpus() rather than NR_CPUS. | ||
| 194 | * | ||
| 195 | * We do not initialize the online map here; cpus set their own bits in | ||
| 196 | * cpu_online_map as they come up. | ||
| 197 | * | ||
| 198 | * This function is valid only for Open Firmware systems. finish_device_tree | ||
| 199 | * must be called before using this. | ||
| 200 | * | ||
| 201 | * While we're here, we may as well set the "physical" cpu ids in the paca. | ||
| 202 | */ | ||
| 203 | static void __init setup_cpu_maps(void) | ||
| 204 | { | ||
| 205 | struct device_node *dn = NULL; | ||
| 206 | int cpu = 0; | ||
| 207 | int swap_cpuid = 0; | ||
| 208 | |||
| 209 | check_smt_enabled(); | ||
| 210 | |||
| 211 | while ((dn = of_find_node_by_type(dn, "cpu")) && cpu < NR_CPUS) { | ||
| 212 | u32 *intserv; | ||
| 213 | int j, len = sizeof(u32), nthreads; | ||
| 214 | |||
| 215 | intserv = (u32 *)get_property(dn, "ibm,ppc-interrupt-server#s", | ||
| 216 | &len); | ||
| 217 | if (!intserv) | ||
| 218 | intserv = (u32 *)get_property(dn, "reg", NULL); | ||
| 219 | |||
| 220 | nthreads = len / sizeof(u32); | ||
| 221 | |||
| 222 | for (j = 0; j < nthreads && cpu < NR_CPUS; j++) { | ||
| 223 | cpu_set(cpu, cpu_present_map); | ||
| 224 | set_hard_smp_processor_id(cpu, intserv[j]); | ||
| 225 | |||
| 226 | if (intserv[j] == boot_cpuid_phys) | ||
| 227 | swap_cpuid = cpu; | ||
| 228 | cpu_set(cpu, cpu_possible_map); | ||
| 229 | cpu++; | ||
| 230 | } | ||
| 231 | } | ||
| 232 | |||
| 233 | /* Swap CPU id 0 with boot_cpuid_phys, so we can always assume that | ||
| 234 | * boot cpu is logical 0. | ||
| 235 | */ | ||
| 236 | if (boot_cpuid_phys != get_hard_smp_processor_id(0)) { | ||
| 237 | u32 tmp; | ||
| 238 | tmp = get_hard_smp_processor_id(0); | ||
| 239 | set_hard_smp_processor_id(0, boot_cpuid_phys); | ||
| 240 | set_hard_smp_processor_id(swap_cpuid, tmp); | ||
| 241 | } | ||
| 242 | |||
| 243 | /* | ||
| 244 | * On pSeries LPAR, we need to know how many cpus | ||
| 245 | * could possibly be added to this partition. | ||
| 246 | */ | ||
| 247 | if (systemcfg->platform == PLATFORM_PSERIES_LPAR && | ||
| 248 | (dn = of_find_node_by_path("/rtas"))) { | ||
| 249 | int num_addr_cell, num_size_cell, maxcpus; | ||
| 250 | unsigned int *ireg; | ||
| 251 | |||
| 252 | num_addr_cell = prom_n_addr_cells(dn); | ||
| 253 | num_size_cell = prom_n_size_cells(dn); | ||
| 254 | |||
| 255 | ireg = (unsigned int *) | ||
| 256 | get_property(dn, "ibm,lrdr-capacity", NULL); | ||
| 257 | |||
| 258 | if (!ireg) | ||
| 259 | goto out; | ||
| 260 | |||
| 261 | maxcpus = ireg[num_addr_cell + num_size_cell]; | ||
| 262 | |||
| 263 | /* Double maxcpus for processors which have SMT capability */ | ||
| 264 | if (cpu_has_feature(CPU_FTR_SMT)) | ||
| 265 | maxcpus *= 2; | ||
| 266 | |||
| 267 | if (maxcpus > NR_CPUS) { | ||
| 268 | printk(KERN_WARNING | ||
| 269 | "Partition configured for %d cpus, " | ||
| 270 | "operating system maximum is %d.\n", | ||
| 271 | maxcpus, NR_CPUS); | ||
| 272 | maxcpus = NR_CPUS; | ||
| 273 | } else | ||
| 274 | printk(KERN_INFO "Partition configured for %d cpus.\n", | ||
| 275 | maxcpus); | ||
| 276 | |||
| 277 | for (cpu = 0; cpu < maxcpus; cpu++) | ||
| 278 | cpu_set(cpu, cpu_possible_map); | ||
| 279 | out: | ||
| 280 | of_node_put(dn); | ||
| 281 | } | ||
| 282 | |||
| 283 | /* | ||
| 284 | * Do the sibling map; assume only two threads per processor. | ||
| 285 | */ | ||
| 286 | for_each_cpu(cpu) { | ||
| 287 | cpu_set(cpu, cpu_sibling_map[cpu]); | ||
| 288 | if (cpu_has_feature(CPU_FTR_SMT)) | ||
| 289 | cpu_set(cpu ^ 0x1, cpu_sibling_map[cpu]); | ||
| 290 | } | ||
| 291 | |||
| 292 | systemcfg->processorCount = num_present_cpus(); | ||
| 293 | } | ||
| 294 | #endif /* CONFIG_SMP */ | 186 | #endif /* CONFIG_SMP */ |
| 295 | 187 | ||
| 296 | extern struct machdep_calls pSeries_md; | 188 | extern struct machdep_calls pSeries_md; |
| 297 | extern struct machdep_calls pmac_md; | 189 | extern struct machdep_calls pmac_md; |
| 298 | extern struct machdep_calls maple_md; | 190 | extern struct machdep_calls maple_md; |
| 299 | extern struct machdep_calls bpa_md; | 191 | extern struct machdep_calls cell_md; |
| 300 | extern struct machdep_calls iseries_md; | 192 | extern struct machdep_calls iseries_md; |
| 301 | 193 | ||
| 302 | /* Ultimately, stuff them in an elf section like initcalls... */ | 194 | /* Ultimately, stuff them in an elf section like initcalls... */ |
| @@ -310,8 +202,8 @@ static struct machdep_calls __initdata *machines[] = { | |||
| 310 | #ifdef CONFIG_PPC_MAPLE | 202 | #ifdef CONFIG_PPC_MAPLE |
| 311 | &maple_md, | 203 | &maple_md, |
| 312 | #endif /* CONFIG_PPC_MAPLE */ | 204 | #endif /* CONFIG_PPC_MAPLE */ |
| 313 | #ifdef CONFIG_PPC_BPA | 205 | #ifdef CONFIG_PPC_CELL |
| 314 | &bpa_md, | 206 | &cell_md, |
| 315 | #endif | 207 | #endif |
| 316 | #ifdef CONFIG_PPC_ISERIES | 208 | #ifdef CONFIG_PPC_ISERIES |
| 317 | &iseries_md, | 209 | &iseries_md, |
| @@ -400,6 +292,29 @@ void __init early_setup(unsigned long dt_ptr) | |||
| 400 | } | 292 | } |
| 401 | 293 | ||
| 402 | 294 | ||
| 295 | #if defined(CONFIG_SMP) || defined(CONFIG_KEXEC) | ||
| 296 | void smp_release_cpus(void) | ||
| 297 | { | ||
| 298 | extern unsigned long __secondary_hold_spinloop; | ||
| 299 | |||
| 300 | DBG(" -> smp_release_cpus()\n"); | ||
| 301 | |||
| 302 | /* All secondary cpus are spinning on a common spinloop, release them | ||
| 303 | * all now so they can start to spin on their individual paca | ||
| 304 | * spinloops. For non SMP kernels, the secondary cpus never get out | ||
| 305 | * of the common spinloop. | ||
| 306 | * This is useless but harmless on iSeries, secondaries are already | ||
| 307 | * waiting on their paca spinloops. */ | ||
| 308 | |||
| 309 | __secondary_hold_spinloop = 1; | ||
| 310 | mb(); | ||
| 311 | |||
| 312 | DBG(" <- smp_release_cpus()\n"); | ||
| 313 | } | ||
| 314 | #else | ||
| 315 | #define smp_release_cpus() | ||
| 316 | #endif /* CONFIG_SMP || CONFIG_KEXEC */ | ||
| 317 | |||
| 403 | /* | 318 | /* |
| 404 | * Initialize some remaining members of the ppc64_caches and systemcfg structures | 319 | * Initialize some remaining members of the ppc64_caches and systemcfg structures |
| 405 | * (at least until we get rid of them completely). This is mostly some | 320 | * (at least until we get rid of them completely). This is mostly some |
| @@ -589,17 +504,13 @@ void __init setup_system(void) | |||
| 589 | 504 | ||
| 590 | parse_early_param(); | 505 | parse_early_param(); |
| 591 | 506 | ||
| 592 | #ifdef CONFIG_SMP | 507 | check_smt_enabled(); |
| 593 | /* | 508 | smp_setup_cpu_maps(); |
| 594 | * iSeries has already initialized the cpu maps at this point. | ||
| 595 | */ | ||
| 596 | setup_cpu_maps(); | ||
| 597 | 509 | ||
| 598 | /* Release secondary cpus out of their spinloops at 0x60 now that | 510 | /* Release secondary cpus out of their spinloops at 0x60 now that |
| 599 | * we can map physical -> logical CPU ids | 511 | * we can map physical -> logical CPU ids |
| 600 | */ | 512 | */ |
| 601 | smp_release_cpus(); | 513 | smp_release_cpus(); |
| 602 | #endif | ||
| 603 | 514 | ||
| 604 | printk("Starting Linux PPC64 %s\n", system_utsname.version); | 515 | printk("Starting Linux PPC64 %s\n", system_utsname.version); |
| 605 | 516 | ||
| @@ -631,23 +542,6 @@ static int ppc64_panic_event(struct notifier_block *this, | |||
| 631 | return NOTIFY_DONE; | 542 | return NOTIFY_DONE; |
| 632 | } | 543 | } |
| 633 | 544 | ||
| 634 | #ifdef CONFIG_PPC_ISERIES | ||
| 635 | /* | ||
| 636 | * On iSeries we just parse the mem=X option from the command line. | ||
| 637 | * On pSeries it's a bit more complicated, see prom_init_mem() | ||
| 638 | */ | ||
| 639 | static int __init early_parsemem(char *p) | ||
| 640 | { | ||
| 641 | if (!p) | ||
| 642 | return 0; | ||
| 643 | |||
| 644 | memory_limit = ALIGN(memparse(p, &p), PAGE_SIZE); | ||
| 645 | |||
| 646 | return 0; | ||
| 647 | } | ||
| 648 | early_param("mem", early_parsemem); | ||
| 649 | #endif /* CONFIG_PPC_ISERIES */ | ||
| 650 | |||
| 651 | #ifdef CONFIG_IRQSTACKS | 545 | #ifdef CONFIG_IRQSTACKS |
| 652 | static void __init irqstack_early_init(void) | 546 | static void __init irqstack_early_init(void) |
| 653 | { | 547 | { |
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index 444c3e81884c..876c57c11365 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c | |||
| @@ -43,7 +43,7 @@ | |||
| 43 | #include <asm/uaccess.h> | 43 | #include <asm/uaccess.h> |
| 44 | #include <asm/cacheflush.h> | 44 | #include <asm/cacheflush.h> |
| 45 | #ifdef CONFIG_PPC64 | 45 | #ifdef CONFIG_PPC64 |
| 46 | #include <asm/ppc32.h> | 46 | #include "ppc32.h" |
| 47 | #include <asm/ppcdebug.h> | 47 | #include <asm/ppcdebug.h> |
| 48 | #include <asm/unistd.h> | 48 | #include <asm/unistd.h> |
| 49 | #include <asm/vdso.h> | 49 | #include <asm/vdso.h> |
diff --git a/arch/ppc64/kernel/signal.c b/arch/powerpc/kernel/signal_64.c index ec9d0984b6a0..ec9d0984b6a0 100644 --- a/arch/ppc64/kernel/signal.c +++ b/arch/powerpc/kernel/signal_64.c | |||
diff --git a/arch/ppc64/kernel/smp-tbsync.c b/arch/powerpc/kernel/smp-tbsync.c index 7d8ec9996b3e..9adef3bddad4 100644 --- a/arch/ppc64/kernel/smp-tbsync.c +++ b/arch/powerpc/kernel/smp-tbsync.c | |||
| @@ -22,11 +22,11 @@ enum { | |||
| 22 | }; | 22 | }; |
| 23 | 23 | ||
| 24 | static struct { | 24 | static struct { |
| 25 | volatile long tb; | 25 | volatile u64 tb; |
| 26 | volatile long mark; | 26 | volatile u64 mark; |
| 27 | volatile int cmd; | 27 | volatile int cmd; |
| 28 | volatile int handshake; | 28 | volatile int handshake; |
| 29 | int filler[3]; | 29 | int filler[2]; |
| 30 | 30 | ||
| 31 | volatile int ack; | 31 | volatile int ack; |
| 32 | int filler2[7]; | 32 | int filler2[7]; |
| @@ -36,89 +36,80 @@ static struct { | |||
| 36 | 36 | ||
| 37 | static volatile int running; | 37 | static volatile int running; |
| 38 | 38 | ||
| 39 | static void __devinit | 39 | static void __devinit enter_contest(u64 mark, long add) |
| 40 | enter_contest( long mark, long add ) | ||
| 41 | { | 40 | { |
| 42 | while( (long)(mftb() - mark) < 0 ) | 41 | while (get_tb() < mark) |
| 43 | tbsync->race_result = add; | 42 | tbsync->race_result = add; |
| 44 | } | 43 | } |
| 45 | 44 | ||
| 46 | void __devinit | 45 | void __devinit smp_generic_take_timebase(void) |
| 47 | smp_generic_take_timebase( void ) | ||
| 48 | { | 46 | { |
| 49 | int cmd; | 47 | int cmd; |
| 50 | long tb; | 48 | u64 tb; |
| 51 | 49 | ||
| 52 | local_irq_disable(); | 50 | local_irq_disable(); |
| 53 | while( !running ) | 51 | while (!running) |
| 54 | ; | 52 | barrier(); |
| 55 | rmb(); | 53 | rmb(); |
| 56 | 54 | ||
| 57 | for( ;; ) { | 55 | for (;;) { |
| 58 | tbsync->ack = 1; | 56 | tbsync->ack = 1; |
| 59 | while( !tbsync->handshake ) | 57 | while (!tbsync->handshake) |
| 60 | ; | 58 | barrier(); |
| 61 | rmb(); | 59 | rmb(); |
| 62 | 60 | ||
| 63 | cmd = tbsync->cmd; | 61 | cmd = tbsync->cmd; |
| 64 | tb = tbsync->tb; | 62 | tb = tbsync->tb; |
| 63 | mb(); | ||
| 65 | tbsync->ack = 0; | 64 | tbsync->ack = 0; |
| 66 | if( cmd == kExit ) | 65 | if (cmd == kExit) |
| 67 | return; | 66 | break; |
| 68 | 67 | ||
| 69 | if( cmd == kSetAndTest ) { | 68 | while (tbsync->handshake) |
| 70 | while( tbsync->handshake ) | 69 | barrier(); |
| 71 | ; | 70 | if (cmd == kSetAndTest) |
| 72 | asm volatile ("mttbl %0" :: "r" (tb & 0xfffffffful) ); | 71 | set_tb(tb >> 32, tb & 0xfffffffful); |
| 73 | asm volatile ("mttbu %0" :: "r" (tb >> 32) ); | 72 | enter_contest(tbsync->mark, -1); |
| 74 | } else { | ||
| 75 | while( tbsync->handshake ) | ||
| 76 | ; | ||
| 77 | } | ||
| 78 | enter_contest( tbsync->mark, -1 ); | ||
| 79 | } | 73 | } |
| 80 | local_irq_enable(); | 74 | local_irq_enable(); |
| 81 | } | 75 | } |
| 82 | 76 | ||
| 83 | static int __devinit | 77 | static int __devinit start_contest(int cmd, long offset, int num) |
| 84 | start_contest( int cmd, long offset, long num ) | ||
| 85 | { | 78 | { |
| 86 | int i, score=0; | 79 | int i, score=0; |
| 87 | long tb, mark; | 80 | u64 tb; |
| 81 | long mark; | ||
| 88 | 82 | ||
| 89 | tbsync->cmd = cmd; | 83 | tbsync->cmd = cmd; |
| 90 | 84 | ||
| 91 | local_irq_disable(); | 85 | local_irq_disable(); |
| 92 | for( i=-3; i<num; ) { | 86 | for (i = -3; i < num; ) { |
| 93 | tb = (long)mftb() + 400; | 87 | tb = get_tb() + 400; |
| 94 | tbsync->tb = tb + offset; | 88 | tbsync->tb = tb + offset; |
| 95 | tbsync->mark = mark = tb + 400; | 89 | tbsync->mark = mark = tb + 400; |
| 96 | 90 | ||
| 97 | wmb(); | 91 | wmb(); |
| 98 | 92 | ||
| 99 | tbsync->handshake = 1; | 93 | tbsync->handshake = 1; |
| 100 | while( tbsync->ack ) | 94 | while (tbsync->ack) |
| 101 | ; | 95 | barrier(); |
| 102 | 96 | ||
| 103 | while( (long)(mftb() - tb) <= 0 ) | 97 | while (get_tb() <= tb) |
| 104 | ; | 98 | barrier(); |
| 105 | tbsync->handshake = 0; | 99 | tbsync->handshake = 0; |
| 106 | enter_contest( mark, 1 ); | 100 | enter_contest(mark, 1); |
| 107 | 101 | ||
| 108 | while( !tbsync->ack ) | 102 | while (!tbsync->ack) |
| 109 | ; | 103 | barrier(); |
| 110 | 104 | ||
| 111 | if ((tbsync->tb ^ (long)mftb()) & 0x8000000000000000ul) | 105 | if (i++ > 0) |
| 112 | continue; | ||
| 113 | if( i++ > 0 ) | ||
| 114 | score += tbsync->race_result; | 106 | score += tbsync->race_result; |
| 115 | } | 107 | } |
| 116 | local_irq_enable(); | 108 | local_irq_enable(); |
| 117 | return score; | 109 | return score; |
| 118 | } | 110 | } |
| 119 | 111 | ||
| 120 | void __devinit | 112 | void __devinit smp_generic_give_timebase(void) |
| 121 | smp_generic_give_timebase( void ) | ||
| 122 | { | 113 | { |
| 123 | int i, score, score2, old, min=0, max=5000, offset=1000; | 114 | int i, score, score2, old, min=0, max=5000, offset=1000; |
| 124 | 115 | ||
| @@ -130,14 +121,14 @@ smp_generic_give_timebase( void ) | |||
| 130 | mb(); | 121 | mb(); |
| 131 | running = 1; | 122 | running = 1; |
| 132 | 123 | ||
| 133 | while( !tbsync->ack ) | 124 | while (!tbsync->ack) |
| 134 | ; | 125 | barrier(); |
| 135 | 126 | ||
| 136 | printk("Got ack\n"); | 127 | printk("Got ack\n"); |
| 137 | 128 | ||
| 138 | /* binary search */ | 129 | /* binary search */ |
| 139 | for( old=-1 ; old != offset ; offset=(min+max)/2 ) { | 130 | for (old = -1; old != offset ; offset = (min+max) / 2) { |
| 140 | score = start_contest( kSetAndTest, offset, NUM_ITER ); | 131 | score = start_contest(kSetAndTest, offset, NUM_ITER); |
| 141 | 132 | ||
| 142 | printk("score %d, offset %d\n", score, offset ); | 133 | printk("score %d, offset %d\n", score, offset ); |
| 143 | 134 | ||
| @@ -147,21 +138,22 @@ smp_generic_give_timebase( void ) | |||
| 147 | min = offset; | 138 | min = offset; |
| 148 | old = offset; | 139 | old = offset; |
| 149 | } | 140 | } |
| 150 | score = start_contest( kSetAndTest, min, NUM_ITER ); | 141 | score = start_contest(kSetAndTest, min, NUM_ITER); |
| 151 | score2 = start_contest( kSetAndTest, max, NUM_ITER ); | 142 | score2 = start_contest(kSetAndTest, max, NUM_ITER); |
| 152 | 143 | ||
| 153 | printk( "Min %d (score %d), Max %d (score %d)\n", min, score, max, score2 ); | 144 | printk("Min %d (score %d), Max %d (score %d)\n", |
| 154 | score = abs( score ); | 145 | min, score, max, score2); |
| 155 | score2 = abs( score2 ); | 146 | score = abs(score); |
| 147 | score2 = abs(score2); | ||
| 156 | offset = (score < score2) ? min : max; | 148 | offset = (score < score2) ? min : max; |
| 157 | 149 | ||
| 158 | /* guard against inaccurate mttb */ | 150 | /* guard against inaccurate mttb */ |
| 159 | for( i=0; i<10; i++ ) { | 151 | for (i = 0; i < 10; i++) { |
| 160 | start_contest( kSetAndTest, offset, NUM_ITER/10 ); | 152 | start_contest(kSetAndTest, offset, NUM_ITER/10); |
| 161 | 153 | ||
| 162 | if( (score2=start_contest(kTest, offset, NUM_ITER)) < 0 ) | 154 | if ((score2 = start_contest(kTest, offset, NUM_ITER)) < 0) |
| 163 | score2 = -score2; | 155 | score2 = -score2; |
| 164 | if( score2 <= score || score2 < 20 ) | 156 | if (score2 <= score || score2 < 20) |
| 165 | break; | 157 | break; |
| 166 | } | 158 | } |
| 167 | printk("Final offset: %d (%d/%d)\n", offset, score2, NUM_ITER ); | 159 | printk("Final offset: %d (%d/%d)\n", offset, score2, NUM_ITER ); |
| @@ -170,10 +162,10 @@ smp_generic_give_timebase( void ) | |||
| 170 | tbsync->cmd = kExit; | 162 | tbsync->cmd = kExit; |
| 171 | wmb(); | 163 | wmb(); |
| 172 | tbsync->handshake = 1; | 164 | tbsync->handshake = 1; |
| 173 | while( tbsync->ack ) | 165 | while (tbsync->ack) |
| 174 | ; | 166 | barrier(); |
| 175 | tbsync->handshake = 0; | 167 | tbsync->handshake = 0; |
| 176 | kfree( tbsync ); | 168 | kfree(tbsync); |
| 177 | tbsync = NULL; | 169 | tbsync = NULL; |
| 178 | running = 0; | 170 | running = 0; |
| 179 | } | 171 | } |
diff --git a/arch/ppc64/kernel/smp.c b/arch/powerpc/kernel/smp.c index 017c12919832..1794a694a928 100644 --- a/arch/ppc64/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
| @@ -39,13 +39,18 @@ | |||
| 39 | #include <asm/pgtable.h> | 39 | #include <asm/pgtable.h> |
| 40 | #include <asm/prom.h> | 40 | #include <asm/prom.h> |
| 41 | #include <asm/smp.h> | 41 | #include <asm/smp.h> |
| 42 | #include <asm/paca.h> | ||
| 43 | #include <asm/time.h> | 42 | #include <asm/time.h> |
| 43 | #include <asm/xmon.h> | ||
| 44 | #include <asm/machdep.h> | 44 | #include <asm/machdep.h> |
| 45 | #include <asm/cputable.h> | 45 | #include <asm/cputable.h> |
| 46 | #include <asm/system.h> | 46 | #include <asm/system.h> |
| 47 | #include <asm/abs_addr.h> | ||
| 48 | #include <asm/mpic.h> | 47 | #include <asm/mpic.h> |
| 48 | #ifdef CONFIG_PPC64 | ||
| 49 | #include <asm/paca.h> | ||
| 50 | #endif | ||
| 51 | |||
| 52 | int smp_hw_index[NR_CPUS]; | ||
| 53 | struct thread_info *secondary_ti; | ||
| 49 | 54 | ||
| 50 | #ifdef DEBUG | 55 | #ifdef DEBUG |
| 51 | #define DBG(fmt...) udbg_printf(fmt) | 56 | #define DBG(fmt...) udbg_printf(fmt) |
| @@ -60,6 +65,7 @@ cpumask_t cpu_sibling_map[NR_CPUS] = { [0 ... NR_CPUS-1] = CPU_MASK_NONE }; | |||
| 60 | EXPORT_SYMBOL(cpu_online_map); | 65 | EXPORT_SYMBOL(cpu_online_map); |
| 61 | EXPORT_SYMBOL(cpu_possible_map); | 66 | EXPORT_SYMBOL(cpu_possible_map); |
| 62 | 67 | ||
| 68 | /* SMP operations for this machine */ | ||
| 63 | struct smp_ops_t *smp_ops; | 69 | struct smp_ops_t *smp_ops; |
| 64 | 70 | ||
| 65 | static volatile unsigned int cpu_callin_map[NR_CPUS]; | 71 | static volatile unsigned int cpu_callin_map[NR_CPUS]; |
| @@ -89,7 +95,9 @@ void __devinit smp_mpic_setup_cpu(int cpu) | |||
| 89 | { | 95 | { |
| 90 | mpic_setup_this_cpu(); | 96 | mpic_setup_this_cpu(); |
| 91 | } | 97 | } |
| 98 | #endif /* CONFIG_MPIC */ | ||
| 92 | 99 | ||
| 100 | #ifdef CONFIG_PPC64 | ||
| 93 | void __devinit smp_generic_kick_cpu(int nr) | 101 | void __devinit smp_generic_kick_cpu(int nr) |
| 94 | { | 102 | { |
| 95 | BUG_ON(nr < 0 || nr >= NR_CPUS); | 103 | BUG_ON(nr < 0 || nr >= NR_CPUS); |
| @@ -102,8 +110,7 @@ void __devinit smp_generic_kick_cpu(int nr) | |||
| 102 | paca[nr].cpu_start = 1; | 110 | paca[nr].cpu_start = 1; |
| 103 | smp_mb(); | 111 | smp_mb(); |
| 104 | } | 112 | } |
| 105 | 113 | #endif | |
| 106 | #endif /* CONFIG_MPIC */ | ||
| 107 | 114 | ||
| 108 | void smp_message_recv(int msg, struct pt_regs *regs) | 115 | void smp_message_recv(int msg, struct pt_regs *regs) |
| 109 | { | 116 | { |
| @@ -111,15 +118,10 @@ void smp_message_recv(int msg, struct pt_regs *regs) | |||
| 111 | case PPC_MSG_CALL_FUNCTION: | 118 | case PPC_MSG_CALL_FUNCTION: |
| 112 | smp_call_function_interrupt(); | 119 | smp_call_function_interrupt(); |
| 113 | break; | 120 | break; |
| 114 | case PPC_MSG_RESCHEDULE: | 121 | case PPC_MSG_RESCHEDULE: |
| 115 | /* XXX Do we have to do this? */ | 122 | /* XXX Do we have to do this? */ |
| 116 | set_need_resched(); | 123 | set_need_resched(); |
| 117 | break; | 124 | break; |
| 118 | #if 0 | ||
| 119 | case PPC_MSG_MIGRATE_TASK: | ||
| 120 | /* spare */ | ||
| 121 | break; | ||
| 122 | #endif | ||
| 123 | #ifdef CONFIG_DEBUGGER | 125 | #ifdef CONFIG_DEBUGGER |
| 124 | case PPC_MSG_DEBUGGER_BREAK: | 126 | case PPC_MSG_DEBUGGER_BREAK: |
| 125 | debugger_ipi(regs); | 127 | debugger_ipi(regs); |
| @@ -171,8 +173,8 @@ static struct call_data_struct { | |||
| 171 | int wait; | 173 | int wait; |
| 172 | } *call_data; | 174 | } *call_data; |
| 173 | 175 | ||
| 174 | /* delay of at least 8 seconds on 1GHz cpu */ | 176 | /* delay of at least 8 seconds */ |
| 175 | #define SMP_CALL_TIMEOUT (1UL << (30 + 3)) | 177 | #define SMP_CALL_TIMEOUT 8 |
| 176 | 178 | ||
| 177 | /* | 179 | /* |
| 178 | * This function sends a 'generic call function' IPI to all other CPUs | 180 | * This function sends a 'generic call function' IPI to all other CPUs |
| @@ -194,7 +196,7 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | |||
| 194 | { | 196 | { |
| 195 | struct call_data_struct data; | 197 | struct call_data_struct data; |
| 196 | int ret = -1, cpus; | 198 | int ret = -1, cpus; |
| 197 | unsigned long timeout; | 199 | u64 timeout; |
| 198 | 200 | ||
| 199 | /* Can deadlock when called with interrupts disabled */ | 201 | /* Can deadlock when called with interrupts disabled */ |
| 200 | WARN_ON(irqs_disabled()); | 202 | WARN_ON(irqs_disabled()); |
| @@ -220,11 +222,12 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | |||
| 220 | /* Send a message to all other CPUs and wait for them to respond */ | 222 | /* Send a message to all other CPUs and wait for them to respond */ |
| 221 | smp_ops->message_pass(MSG_ALL_BUT_SELF, PPC_MSG_CALL_FUNCTION); | 223 | smp_ops->message_pass(MSG_ALL_BUT_SELF, PPC_MSG_CALL_FUNCTION); |
| 222 | 224 | ||
| 225 | timeout = get_tb() + (u64) SMP_CALL_TIMEOUT * tb_ticks_per_sec; | ||
| 226 | |||
| 223 | /* Wait for response */ | 227 | /* Wait for response */ |
| 224 | timeout = SMP_CALL_TIMEOUT; | ||
| 225 | while (atomic_read(&data.started) != cpus) { | 228 | while (atomic_read(&data.started) != cpus) { |
| 226 | HMT_low(); | 229 | HMT_low(); |
| 227 | if (--timeout == 0) { | 230 | if (get_tb() >= timeout) { |
| 228 | printk("smp_call_function on cpu %d: other cpus not " | 231 | printk("smp_call_function on cpu %d: other cpus not " |
| 229 | "responding (%d)\n", smp_processor_id(), | 232 | "responding (%d)\n", smp_processor_id(), |
| 230 | atomic_read(&data.started)); | 233 | atomic_read(&data.started)); |
| @@ -234,10 +237,9 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | |||
| 234 | } | 237 | } |
| 235 | 238 | ||
| 236 | if (wait) { | 239 | if (wait) { |
| 237 | timeout = SMP_CALL_TIMEOUT; | ||
| 238 | while (atomic_read(&data.finished) != cpus) { | 240 | while (atomic_read(&data.finished) != cpus) { |
| 239 | HMT_low(); | 241 | HMT_low(); |
| 240 | if (--timeout == 0) { | 242 | if (get_tb() >= timeout) { |
| 241 | printk("smp_call_function on cpu %d: other " | 243 | printk("smp_call_function on cpu %d: other " |
| 242 | "cpus not finishing (%d/%d)\n", | 244 | "cpus not finishing (%d/%d)\n", |
| 243 | smp_processor_id(), | 245 | smp_processor_id(), |
| @@ -251,7 +253,7 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | |||
| 251 | 253 | ||
| 252 | ret = 0; | 254 | ret = 0; |
| 253 | 255 | ||
| 254 | out: | 256 | out: |
| 255 | call_data = NULL; | 257 | call_data = NULL; |
| 256 | HMT_medium(); | 258 | HMT_medium(); |
| 257 | spin_unlock(&call_lock); | 259 | spin_unlock(&call_lock); |
| @@ -313,8 +315,11 @@ static void __init smp_create_idle(unsigned int cpu) | |||
| 313 | p = fork_idle(cpu); | 315 | p = fork_idle(cpu); |
| 314 | if (IS_ERR(p)) | 316 | if (IS_ERR(p)) |
| 315 | panic("failed fork for CPU %u: %li", cpu, PTR_ERR(p)); | 317 | panic("failed fork for CPU %u: %li", cpu, PTR_ERR(p)); |
| 318 | #ifdef CONFIG_PPC64 | ||
| 316 | paca[cpu].__current = p; | 319 | paca[cpu].__current = p; |
| 320 | #endif | ||
| 317 | current_set[cpu] = p->thread_info; | 321 | current_set[cpu] = p->thread_info; |
| 322 | p->thread_info->cpu = cpu; | ||
| 318 | } | 323 | } |
| 319 | 324 | ||
| 320 | void __init smp_prepare_cpus(unsigned int max_cpus) | 325 | void __init smp_prepare_cpus(unsigned int max_cpus) |
| @@ -333,18 +338,6 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
| 333 | smp_store_cpu_info(boot_cpuid); | 338 | smp_store_cpu_info(boot_cpuid); |
| 334 | cpu_callin_map[boot_cpuid] = 1; | 339 | cpu_callin_map[boot_cpuid] = 1; |
| 335 | 340 | ||
| 336 | #ifndef CONFIG_PPC_ISERIES | ||
| 337 | paca[boot_cpuid].next_jiffy_update_tb = tb_last_stamp = get_tb(); | ||
| 338 | |||
| 339 | /* | ||
| 340 | * Should update do_gtod.stamp_xsec. | ||
| 341 | * For now we leave it which means the time can be some | ||
| 342 | * number of msecs off until someone does a settimeofday() | ||
| 343 | */ | ||
| 344 | do_gtod.varp->tb_orig_stamp = tb_last_stamp; | ||
| 345 | systemcfg->tb_orig_stamp = tb_last_stamp; | ||
| 346 | #endif | ||
| 347 | |||
| 348 | max_cpus = smp_ops->probe(); | 341 | max_cpus = smp_ops->probe(); |
| 349 | 342 | ||
| 350 | smp_space_timers(max_cpus); | 343 | smp_space_timers(max_cpus); |
| @@ -359,8 +352,9 @@ void __devinit smp_prepare_boot_cpu(void) | |||
| 359 | BUG_ON(smp_processor_id() != boot_cpuid); | 352 | BUG_ON(smp_processor_id() != boot_cpuid); |
| 360 | 353 | ||
| 361 | cpu_set(boot_cpuid, cpu_online_map); | 354 | cpu_set(boot_cpuid, cpu_online_map); |
| 362 | 355 | #ifdef CONFIG_PPC64 | |
| 363 | paca[boot_cpuid].__current = current; | 356 | paca[boot_cpuid].__current = current; |
| 357 | #endif | ||
| 364 | current_set[boot_cpuid] = current->thread_info; | 358 | current_set[boot_cpuid] = current->thread_info; |
| 365 | } | 359 | } |
| 366 | 360 | ||
| @@ -444,13 +438,16 @@ int __devinit __cpu_up(unsigned int cpu) | |||
| 444 | { | 438 | { |
| 445 | int c; | 439 | int c; |
| 446 | 440 | ||
| 441 | secondary_ti = current_set[cpu]; | ||
| 447 | if (!cpu_enable(cpu)) | 442 | if (!cpu_enable(cpu)) |
| 448 | return 0; | 443 | return 0; |
| 449 | 444 | ||
| 450 | if (smp_ops->cpu_bootable && !smp_ops->cpu_bootable(cpu)) | 445 | if (smp_ops->cpu_bootable && !smp_ops->cpu_bootable(cpu)) |
| 451 | return -EINVAL; | 446 | return -EINVAL; |
| 452 | 447 | ||
| 448 | #ifdef CONFIG_PPC64 | ||
| 453 | paca[cpu].default_decr = tb_ticks_per_jiffy; | 449 | paca[cpu].default_decr = tb_ticks_per_jiffy; |
| 450 | #endif | ||
| 454 | 451 | ||
| 455 | /* Make sure callin-map entry is 0 (can be leftover a CPU | 452 | /* Make sure callin-map entry is 0 (can be leftover a CPU |
| 456 | * hotplug | 453 | * hotplug |
| @@ -513,7 +510,7 @@ int __devinit start_secondary(void *unused) | |||
| 513 | current->active_mm = &init_mm; | 510 | current->active_mm = &init_mm; |
| 514 | 511 | ||
| 515 | smp_store_cpu_info(cpu); | 512 | smp_store_cpu_info(cpu); |
| 516 | set_dec(paca[cpu].default_decr); | 513 | set_dec(tb_ticks_per_jiffy); |
| 517 | cpu_callin_map[cpu] = 1; | 514 | cpu_callin_map[cpu] = 1; |
| 518 | 515 | ||
| 519 | smp_ops->setup_cpu(cpu); | 516 | smp_ops->setup_cpu(cpu); |
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index 23436b6c1881..6996a593dcb3 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
| @@ -66,8 +66,8 @@ | |||
| 66 | #include <asm/firmware.h> | 66 | #include <asm/firmware.h> |
| 67 | #endif | 67 | #endif |
| 68 | #ifdef CONFIG_PPC_ISERIES | 68 | #ifdef CONFIG_PPC_ISERIES |
| 69 | #include <asm/iSeries/ItLpQueue.h> | 69 | #include <asm/iseries/it_lp_queue.h> |
| 70 | #include <asm/iSeries/HvCallXm.h> | 70 | #include <asm/iseries/hv_call_xm.h> |
| 71 | #endif | 71 | #endif |
| 72 | 72 | ||
| 73 | /* keep track of when we need to update the rtc */ | 73 | /* keep track of when we need to update the rtc */ |
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 5d638ecddbd0..07e5ee40b870 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
| @@ -147,8 +147,8 @@ int die(const char *str, struct pt_regs *regs, long err) | |||
| 147 | printk("POWERMAC "); | 147 | printk("POWERMAC "); |
| 148 | nl = 1; | 148 | nl = 1; |
| 149 | break; | 149 | break; |
| 150 | case PLATFORM_BPA: | 150 | case PLATFORM_CELL: |
| 151 | printk("BPA "); | 151 | printk("CELL "); |
| 152 | nl = 1; | 152 | nl = 1; |
| 153 | break; | 153 | break; |
| 154 | } | 154 | } |
| @@ -749,22 +749,22 @@ static int check_bug_trap(struct pt_regs *regs) | |||
| 749 | if (bug->line & BUG_WARNING_TRAP) { | 749 | if (bug->line & BUG_WARNING_TRAP) { |
| 750 | /* this is a WARN_ON rather than BUG/BUG_ON */ | 750 | /* this is a WARN_ON rather than BUG/BUG_ON */ |
| 751 | #ifdef CONFIG_XMON | 751 | #ifdef CONFIG_XMON |
| 752 | xmon_printf(KERN_ERR "Badness in %s at %s:%d\n", | 752 | xmon_printf(KERN_ERR "Badness in %s at %s:%ld\n", |
| 753 | bug->function, bug->file, | 753 | bug->function, bug->file, |
| 754 | bug->line & ~BUG_WARNING_TRAP); | 754 | bug->line & ~BUG_WARNING_TRAP); |
| 755 | #endif /* CONFIG_XMON */ | 755 | #endif /* CONFIG_XMON */ |
| 756 | printk(KERN_ERR "Badness in %s at %s:%d\n", | 756 | printk(KERN_ERR "Badness in %s at %s:%ld\n", |
| 757 | bug->function, bug->file, | 757 | bug->function, bug->file, |
| 758 | bug->line & ~BUG_WARNING_TRAP); | 758 | bug->line & ~BUG_WARNING_TRAP); |
| 759 | dump_stack(); | 759 | dump_stack(); |
| 760 | return 1; | 760 | return 1; |
| 761 | } | 761 | } |
| 762 | #ifdef CONFIG_XMON | 762 | #ifdef CONFIG_XMON |
| 763 | xmon_printf(KERN_CRIT "kernel BUG in %s at %s:%d!\n", | 763 | xmon_printf(KERN_CRIT "kernel BUG in %s at %s:%ld!\n", |
| 764 | bug->function, bug->file, bug->line); | 764 | bug->function, bug->file, bug->line); |
| 765 | xmon(regs); | 765 | xmon(regs); |
| 766 | #endif /* CONFIG_XMON */ | 766 | #endif /* CONFIG_XMON */ |
| 767 | printk(KERN_CRIT "kernel BUG in %s at %s:%d!\n", | 767 | printk(KERN_CRIT "kernel BUG in %s at %s:%ld!\n", |
| 768 | bug->function, bug->file, bug->line); | 768 | bug->function, bug->file, bug->line); |
| 769 | 769 | ||
| 770 | return 0; | 770 | return 0; |
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index d4dfcfbce272..7fa7b15fd8e6 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
| @@ -3,9 +3,12 @@ | |||
| 3 | #include <asm/page.h> | 3 | #include <asm/page.h> |
| 4 | #else | 4 | #else |
| 5 | #define PAGE_SIZE 4096 | 5 | #define PAGE_SIZE 4096 |
| 6 | #define KERNELBASE CONFIG_KERNEL_START | ||
| 6 | #endif | 7 | #endif |
| 7 | #include <asm-generic/vmlinux.lds.h> | 8 | #include <asm-generic/vmlinux.lds.h> |
| 8 | 9 | ||
| 10 | ENTRY(_stext) | ||
| 11 | |||
| 9 | #ifdef CONFIG_PPC64 | 12 | #ifdef CONFIG_PPC64 |
| 10 | OUTPUT_ARCH(powerpc:common64) | 13 | OUTPUT_ARCH(powerpc:common64) |
| 11 | jiffies = jiffies_64; | 14 | jiffies = jiffies_64; |
| @@ -21,33 +24,9 @@ SECTIONS | |||
| 21 | *(.exit.data) | 24 | *(.exit.data) |
| 22 | } | 25 | } |
| 23 | 26 | ||
| 27 | . = KERNELBASE; | ||
| 24 | 28 | ||
| 25 | /* Read-only sections, merged into text segment: */ | 29 | /* Read-only sections, merged into text segment: */ |
| 26 | #ifdef CONFIG_PPC32 | ||
| 27 | . = + SIZEOF_HEADERS; | ||
| 28 | .interp : { *(.interp) } | ||
| 29 | .hash : { *(.hash) } | ||
| 30 | .dynsym : { *(.dynsym) } | ||
| 31 | .dynstr : { *(.dynstr) } | ||
| 32 | .rel.text : { *(.rel.text) } | ||
| 33 | .rela.text : { *(.rela.text) } | ||
| 34 | .rel.data : { *(.rel.data) } | ||
| 35 | .rela.data : { *(.rela.data) } | ||
| 36 | .rel.rodata : { *(.rel.rodata) } | ||
| 37 | .rela.rodata : { *(.rela.rodata) } | ||
| 38 | .rel.got : { *(.rel.got) } | ||
| 39 | .rela.got : { *(.rela.got) } | ||
| 40 | .rel.ctors : { *(.rel.ctors) } | ||
| 41 | .rela.ctors : { *(.rela.ctors) } | ||
| 42 | .rel.dtors : { *(.rel.dtors) } | ||
| 43 | .rela.dtors : { *(.rela.dtors) } | ||
| 44 | .rel.bss : { *(.rel.bss) } | ||
| 45 | .rela.bss : { *(.rela.bss) } | ||
| 46 | .rel.plt : { *(.rel.plt) } | ||
| 47 | .rela.plt : { *(.rela.plt) } | ||
| 48 | /* .init : { *(.init) } =0*/ | ||
| 49 | .plt : { *(.plt) } | ||
| 50 | #endif | ||
| 51 | .text : { | 30 | .text : { |
| 52 | *(.text .text.*) | 31 | *(.text .text.*) |
| 53 | SCHED_TEXT | 32 | SCHED_TEXT |
diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile index e6b2be3bcec1..34f5c2e074c9 100644 --- a/arch/powerpc/lib/Makefile +++ b/arch/powerpc/lib/Makefile | |||
| @@ -3,13 +3,14 @@ | |||
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | ifeq ($(CONFIG_PPC_MERGE),y) | 5 | ifeq ($(CONFIG_PPC_MERGE),y) |
| 6 | obj-y := string.o | 6 | obj-y := string.o strcase.o |
| 7 | obj-$(CONFIG_PPC32) += div64.o copy_32.o checksum_32.o | ||
| 7 | endif | 8 | endif |
| 8 | 9 | ||
| 9 | obj-y += strcase.o | 10 | obj-y += bitops.o |
| 10 | obj-$(CONFIG_PPC32) += div64.o copy_32.o checksum_32.o | ||
| 11 | obj-$(CONFIG_PPC64) += checksum_64.o copypage_64.o copyuser_64.o \ | 11 | obj-$(CONFIG_PPC64) += checksum_64.o copypage_64.o copyuser_64.o \ |
| 12 | memcpy_64.o usercopy_64.o mem_64.o | 12 | memcpy_64.o usercopy_64.o mem_64.o string.o \ |
| 13 | strcase.o | ||
| 13 | obj-$(CONFIG_PPC_ISERIES) += e2a.o | 14 | obj-$(CONFIG_PPC_ISERIES) += e2a.o |
| 14 | obj-$(CONFIG_XMON) += sstep.o | 15 | obj-$(CONFIG_XMON) += sstep.o |
| 15 | 16 | ||
diff --git a/arch/ppc64/kernel/bitops.c b/arch/powerpc/lib/bitops.c index ae329e8b4acb..b67ce3004ebf 100644 --- a/arch/ppc64/kernel/bitops.c +++ b/arch/powerpc/lib/bitops.c | |||
| @@ -1,93 +1,97 @@ | |||
| 1 | /* | 1 | #include <linux/types.h> |
| 2 | * These are too big to be inlined. | ||
| 3 | */ | ||
| 4 | |||
| 5 | #include <linux/kernel.h> | ||
| 6 | #include <linux/module.h> | 2 | #include <linux/module.h> |
| 7 | #include <linux/bitops.h> | ||
| 8 | #include <asm/byteorder.h> | 3 | #include <asm/byteorder.h> |
| 4 | #include <asm/bitops.h> | ||
| 9 | 5 | ||
| 10 | unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size, | 6 | /** |
| 11 | unsigned long offset) | 7 | * find_next_bit - find the next set bit in a memory region |
| 8 | * @addr: The address to base the search on | ||
| 9 | * @offset: The bitnumber to start searching at | ||
| 10 | * @size: The maximum size to search | ||
| 11 | */ | ||
| 12 | unsigned long find_next_bit(const unsigned long *addr, unsigned long size, | ||
| 13 | unsigned long offset) | ||
| 12 | { | 14 | { |
| 13 | const unsigned long *p = addr + (offset >> 6); | 15 | const unsigned long *p = addr + BITOP_WORD(offset); |
| 14 | unsigned long result = offset & ~63UL; | 16 | unsigned long result = offset & ~(BITS_PER_LONG-1); |
| 15 | unsigned long tmp; | 17 | unsigned long tmp; |
| 16 | 18 | ||
| 17 | if (offset >= size) | 19 | if (offset >= size) |
| 18 | return size; | 20 | return size; |
| 19 | size -= result; | 21 | size -= result; |
| 20 | offset &= 63UL; | 22 | offset %= BITS_PER_LONG; |
| 21 | if (offset) { | 23 | if (offset) { |
| 22 | tmp = *(p++); | 24 | tmp = *(p++); |
| 23 | tmp |= ~0UL >> (64 - offset); | 25 | tmp &= (~0UL << offset); |
| 24 | if (size < 64) | 26 | if (size < BITS_PER_LONG) |
| 25 | goto found_first; | 27 | goto found_first; |
| 26 | if (~tmp) | 28 | if (tmp) |
| 27 | goto found_middle; | 29 | goto found_middle; |
| 28 | size -= 64; | 30 | size -= BITS_PER_LONG; |
| 29 | result += 64; | 31 | result += BITS_PER_LONG; |
| 30 | } | 32 | } |
| 31 | while (size & ~63UL) { | 33 | while (size & ~(BITS_PER_LONG-1)) { |
| 32 | if (~(tmp = *(p++))) | 34 | if ((tmp = *(p++))) |
| 33 | goto found_middle; | 35 | goto found_middle; |
| 34 | result += 64; | 36 | result += BITS_PER_LONG; |
| 35 | size -= 64; | 37 | size -= BITS_PER_LONG; |
| 36 | } | 38 | } |
| 37 | if (!size) | 39 | if (!size) |
| 38 | return result; | 40 | return result; |
| 39 | tmp = *p; | 41 | tmp = *p; |
| 40 | 42 | ||
| 41 | found_first: | 43 | found_first: |
| 42 | tmp |= ~0UL << size; | 44 | tmp &= (~0UL >> (64 - size)); |
| 43 | if (tmp == ~0UL) /* Are any bits zero? */ | 45 | if (tmp == 0UL) /* Are any bits set? */ |
| 44 | return result + size; /* Nope. */ | 46 | return result + size; /* Nope. */ |
| 45 | found_middle: | 47 | found_middle: |
| 46 | return result + ffz(tmp); | 48 | return result + __ffs(tmp); |
| 47 | } | 49 | } |
| 50 | EXPORT_SYMBOL(find_next_bit); | ||
| 48 | 51 | ||
| 49 | EXPORT_SYMBOL(find_next_zero_bit); | 52 | /* |
| 50 | 53 | * This implementation of find_{first,next}_zero_bit was stolen from | |
| 51 | unsigned long find_next_bit(const unsigned long *addr, unsigned long size, | 54 | * Linus' asm-alpha/bitops.h. |
| 52 | unsigned long offset) | 55 | */ |
| 56 | unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size, | ||
| 57 | unsigned long offset) | ||
| 53 | { | 58 | { |
| 54 | const unsigned long *p = addr + (offset >> 6); | 59 | const unsigned long *p = addr + BITOP_WORD(offset); |
| 55 | unsigned long result = offset & ~63UL; | 60 | unsigned long result = offset & ~(BITS_PER_LONG-1); |
| 56 | unsigned long tmp; | 61 | unsigned long tmp; |
| 57 | 62 | ||
| 58 | if (offset >= size) | 63 | if (offset >= size) |
| 59 | return size; | 64 | return size; |
| 60 | size -= result; | 65 | size -= result; |
| 61 | offset &= 63UL; | 66 | offset %= BITS_PER_LONG; |
| 62 | if (offset) { | 67 | if (offset) { |
| 63 | tmp = *(p++); | 68 | tmp = *(p++); |
| 64 | tmp &= (~0UL << offset); | 69 | tmp |= ~0UL >> (BITS_PER_LONG - offset); |
| 65 | if (size < 64) | 70 | if (size < BITS_PER_LONG) |
| 66 | goto found_first; | 71 | goto found_first; |
| 67 | if (tmp) | 72 | if (~tmp) |
| 68 | goto found_middle; | 73 | goto found_middle; |
| 69 | size -= 64; | 74 | size -= BITS_PER_LONG; |
| 70 | result += 64; | 75 | result += BITS_PER_LONG; |
| 71 | } | 76 | } |
| 72 | while (size & ~63UL) { | 77 | while (size & ~(BITS_PER_LONG-1)) { |
| 73 | if ((tmp = *(p++))) | 78 | if (~(tmp = *(p++))) |
| 74 | goto found_middle; | 79 | goto found_middle; |
| 75 | result += 64; | 80 | result += BITS_PER_LONG; |
| 76 | size -= 64; | 81 | size -= BITS_PER_LONG; |
| 77 | } | 82 | } |
| 78 | if (!size) | 83 | if (!size) |
| 79 | return result; | 84 | return result; |
| 80 | tmp = *p; | 85 | tmp = *p; |
| 81 | 86 | ||
| 82 | found_first: | 87 | found_first: |
| 83 | tmp &= (~0UL >> (64 - size)); | 88 | tmp |= ~0UL << size; |
| 84 | if (tmp == 0UL) /* Are any bits set? */ | 89 | if (tmp == ~0UL) /* Are any bits zero? */ |
| 85 | return result + size; /* Nope. */ | 90 | return result + size; /* Nope. */ |
| 86 | found_middle: | 91 | found_middle: |
| 87 | return result + __ffs(tmp); | 92 | return result + ffz(tmp); |
| 88 | } | 93 | } |
| 89 | 94 | EXPORT_SYMBOL(find_next_zero_bit); | |
| 90 | EXPORT_SYMBOL(find_next_bit); | ||
| 91 | 95 | ||
| 92 | static inline unsigned int ext2_ilog2(unsigned int x) | 96 | static inline unsigned int ext2_ilog2(unsigned int x) |
| 93 | { | 97 | { |
| @@ -106,8 +110,8 @@ static inline unsigned int ext2_ffz(unsigned int x) | |||
| 106 | return rc; | 110 | return rc; |
| 107 | } | 111 | } |
| 108 | 112 | ||
| 109 | unsigned long find_next_zero_le_bit(const unsigned long *addr, unsigned long size, | 113 | unsigned long find_next_zero_le_bit(const unsigned long *addr, |
| 110 | unsigned long offset) | 114 | unsigned long size, unsigned long offset) |
| 111 | { | 115 | { |
| 112 | const unsigned int *p = ((const unsigned int *)addr) + (offset >> 5); | 116 | const unsigned int *p = ((const unsigned int *)addr) + (offset >> 5); |
| 113 | unsigned int result = offset & ~31; | 117 | unsigned int result = offset & ~31; |
| @@ -143,5 +147,4 @@ found_first: | |||
| 143 | found_middle: | 147 | found_middle: |
| 144 | return result + ext2_ffz(tmp); | 148 | return result + ext2_ffz(tmp); |
| 145 | } | 149 | } |
| 146 | |||
| 147 | EXPORT_SYMBOL(find_next_zero_le_bit); | 150 | EXPORT_SYMBOL(find_next_zero_le_bit); |
diff --git a/arch/powerpc/lib/locks.c b/arch/powerpc/lib/locks.c index 3794715b2972..2a912f411eb4 100644 --- a/arch/powerpc/lib/locks.c +++ b/arch/powerpc/lib/locks.c | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | /* waiting for a spinlock... */ | 22 | /* waiting for a spinlock... */ |
| 23 | #if defined(CONFIG_PPC_SPLPAR) || defined(CONFIG_PPC_ISERIES) | 23 | #if defined(CONFIG_PPC_SPLPAR) || defined(CONFIG_PPC_ISERIES) |
| 24 | #include <asm/hvcall.h> | 24 | #include <asm/hvcall.h> |
| 25 | #include <asm/iSeries/HvCall.h> | 25 | #include <asm/iseries/hv_call.h> |
| 26 | 26 | ||
| 27 | void __spin_yield(raw_spinlock_t *lock) | 27 | void __spin_yield(raw_spinlock_t *lock) |
| 28 | { | 28 | { |
diff --git a/arch/powerpc/platforms/Makefile b/arch/powerpc/platforms/Makefile index 172c0db63504..8836b3a00668 100644 --- a/arch/powerpc/platforms/Makefile +++ b/arch/powerpc/platforms/Makefile | |||
| @@ -11,3 +11,4 @@ obj-$(CONFIG_85xx) += 85xx/ | |||
| 11 | obj-$(CONFIG_PPC_PSERIES) += pseries/ | 11 | obj-$(CONFIG_PPC_PSERIES) += pseries/ |
| 12 | obj-$(CONFIG_PPC_ISERIES) += iseries/ | 12 | obj-$(CONFIG_PPC_ISERIES) += iseries/ |
| 13 | obj-$(CONFIG_PPC_MAPLE) += maple/ | 13 | obj-$(CONFIG_PPC_MAPLE) += maple/ |
| 14 | obj-$(CONFIG_PPC_CELL) += cell/ | ||
diff --git a/arch/powerpc/platforms/cell/Makefile b/arch/powerpc/platforms/cell/Makefile new file mode 100644 index 000000000000..55e094b96bc0 --- /dev/null +++ b/arch/powerpc/platforms/cell/Makefile | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | obj-y += interrupt.o iommu.o setup.o spider-pic.o | ||
| 2 | obj-$(CONFIG_SMP) += smp.o | ||
diff --git a/arch/ppc64/kernel/bpa_iic.c b/arch/powerpc/platforms/cell/interrupt.c index 0aaa878e19d3..7fbe78a9327d 100644 --- a/arch/ppc64/kernel/bpa_iic.c +++ b/arch/powerpc/platforms/cell/interrupt.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * BPA Internal Interrupt Controller | 2 | * Cell Internal Interrupt Controller |
| 3 | * | 3 | * |
| 4 | * (C) Copyright IBM Deutschland Entwicklung GmbH 2005 | 4 | * (C) Copyright IBM Deutschland Entwicklung GmbH 2005 |
| 5 | * | 5 | * |
| @@ -31,7 +31,7 @@ | |||
| 31 | #include <asm/prom.h> | 31 | #include <asm/prom.h> |
| 32 | #include <asm/ptrace.h> | 32 | #include <asm/ptrace.h> |
| 33 | 33 | ||
| 34 | #include "bpa_iic.h" | 34 | #include "interrupt.h" |
| 35 | 35 | ||
| 36 | struct iic_pending_bits { | 36 | struct iic_pending_bits { |
| 37 | u32 data; | 37 | u32 data; |
| @@ -89,7 +89,7 @@ static void iic_end(unsigned int irq) | |||
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | static struct hw_interrupt_type iic_pic = { | 91 | static struct hw_interrupt_type iic_pic = { |
| 92 | .typename = " BPA-IIC ", | 92 | .typename = " CELL-IIC ", |
| 93 | .startup = iic_startup, | 93 | .startup = iic_startup, |
| 94 | .enable = iic_enable, | 94 | .enable = iic_enable, |
| 95 | .disable = iic_disable, | 95 | .disable = iic_disable, |
| @@ -106,7 +106,7 @@ static int iic_external_get_irq(struct iic_pending_bits pending) | |||
| 106 | irq = -1; | 106 | irq = -1; |
| 107 | 107 | ||
| 108 | /* | 108 | /* |
| 109 | * This mapping is specific to the Broadband | 109 | * This mapping is specific to the Cell Broadband |
| 110 | * Engine. We might need to get the numbers | 110 | * Engine. We might need to get the numbers |
| 111 | * from the device tree to support future CPUs. | 111 | * from the device tree to support future CPUs. |
| 112 | */ | 112 | */ |
diff --git a/arch/ppc64/kernel/bpa_iic.h b/arch/powerpc/platforms/cell/interrupt.h index 6833c3022166..37d58e6fd0c6 100644 --- a/arch/ppc64/kernel/bpa_iic.h +++ b/arch/powerpc/platforms/cell/interrupt.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | #ifndef ASM_BPA_IIC_H | 1 | #ifndef ASM_CELL_PIC_H |
| 2 | #define ASM_BPA_IIC_H | 2 | #define ASM_CELL_PIC_H |
| 3 | #ifdef __KERNEL__ | 3 | #ifdef __KERNEL__ |
| 4 | /* | 4 | /* |
| 5 | * Mapping of IIC pending bits into per-node | 5 | * Mapping of IIC pending bits into per-node |
| @@ -21,7 +21,7 @@ | |||
| 21 | * + node number | 21 | * + node number |
| 22 | * * don't care | 22 | * * don't care |
| 23 | * | 23 | * |
| 24 | * A node consists of a Broadband Engine and an optional | 24 | * A node consists of a Cell Broadband Engine and an optional |
| 25 | * south bridge device providing a maximum of 64 IRQs. | 25 | * south bridge device providing a maximum of 64 IRQs. |
| 26 | * The south bridge may be connected to either IOIF0 | 26 | * The south bridge may be connected to either IOIF0 |
| 27 | * or IOIF1. | 27 | * or IOIF1. |
| @@ -59,4 +59,4 @@ extern void spider_init_IRQ(void); | |||
| 59 | extern int spider_get_irq(unsigned long int_pending); | 59 | extern int spider_get_irq(unsigned long int_pending); |
| 60 | 60 | ||
| 61 | #endif | 61 | #endif |
| 62 | #endif /* ASM_BPA_IIC_H */ | 62 | #endif /* ASM_CELL_PIC_H */ |
diff --git a/arch/ppc64/kernel/bpa_iommu.c b/arch/powerpc/platforms/cell/iommu.c index da1b4b7a3269..74f999b4ac9e 100644 --- a/arch/ppc64/kernel/bpa_iommu.c +++ b/arch/powerpc/platforms/cell/iommu.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * IOMMU implementation for Broadband Processor Architecture | 2 | * IOMMU implementation for Cell Broadband Processor Architecture |
| 3 | * We just establish a linear mapping at boot by setting all the | 3 | * We just establish a linear mapping at boot by setting all the |
| 4 | * IOPT cache entries in the CPU. | 4 | * IOPT cache entries in the CPU. |
| 5 | * The mapping functions should be identical to pci_direct_iommu, | 5 | * The mapping functions should be identical to pci_direct_iommu, |
| @@ -41,7 +41,7 @@ | |||
| 41 | #include <asm/system.h> | 41 | #include <asm/system.h> |
| 42 | #include <asm/ppc-pci.h> | 42 | #include <asm/ppc-pci.h> |
| 43 | 43 | ||
| 44 | #include "bpa_iommu.h" | 44 | #include "iommu.h" |
| 45 | 45 | ||
| 46 | static inline unsigned long | 46 | static inline unsigned long |
| 47 | get_iopt_entry(unsigned long real_address, unsigned long ioid, | 47 | get_iopt_entry(unsigned long real_address, unsigned long ioid, |
| @@ -276,7 +276,7 @@ static void iommu_dev_setup_null(struct pci_dev *d) { } | |||
| 276 | * for each DMA window used by any device. For now, we | 276 | * for each DMA window used by any device. For now, we |
| 277 | * happen to know that there is only one DMA window in use, | 277 | * happen to know that there is only one DMA window in use, |
| 278 | * starting at iopt_phys_offset. */ | 278 | * starting at iopt_phys_offset. */ |
| 279 | static void bpa_map_iommu(void) | 279 | static void cell_map_iommu(void) |
| 280 | { | 280 | { |
| 281 | unsigned long address; | 281 | unsigned long address; |
| 282 | void __iomem *base; | 282 | void __iomem *base; |
| @@ -309,7 +309,7 @@ static void bpa_map_iommu(void) | |||
| 309 | } | 309 | } |
| 310 | 310 | ||
| 311 | 311 | ||
| 312 | static void *bpa_alloc_coherent(struct device *hwdev, size_t size, | 312 | static void *cell_alloc_coherent(struct device *hwdev, size_t size, |
| 313 | dma_addr_t *dma_handle, gfp_t flag) | 313 | dma_addr_t *dma_handle, gfp_t flag) |
| 314 | { | 314 | { |
| 315 | void *ret; | 315 | void *ret; |
| @@ -317,65 +317,65 @@ static void *bpa_alloc_coherent(struct device *hwdev, size_t size, | |||
| 317 | ret = (void *)__get_free_pages(flag, get_order(size)); | 317 | ret = (void *)__get_free_pages(flag, get_order(size)); |
| 318 | if (ret != NULL) { | 318 | if (ret != NULL) { |
| 319 | memset(ret, 0, size); | 319 | memset(ret, 0, size); |
| 320 | *dma_handle = virt_to_abs(ret) | BPA_DMA_VALID; | 320 | *dma_handle = virt_to_abs(ret) | CELL_DMA_VALID; |
| 321 | } | 321 | } |
| 322 | return ret; | 322 | return ret; |
| 323 | } | 323 | } |
| 324 | 324 | ||
| 325 | static void bpa_free_coherent(struct device *hwdev, size_t size, | 325 | static void cell_free_coherent(struct device *hwdev, size_t size, |
| 326 | void *vaddr, dma_addr_t dma_handle) | 326 | void *vaddr, dma_addr_t dma_handle) |
| 327 | { | 327 | { |
| 328 | free_pages((unsigned long)vaddr, get_order(size)); | 328 | free_pages((unsigned long)vaddr, get_order(size)); |
| 329 | } | 329 | } |
| 330 | 330 | ||
| 331 | static dma_addr_t bpa_map_single(struct device *hwdev, void *ptr, | 331 | static dma_addr_t cell_map_single(struct device *hwdev, void *ptr, |
| 332 | size_t size, enum dma_data_direction direction) | 332 | size_t size, enum dma_data_direction direction) |
| 333 | { | 333 | { |
| 334 | return virt_to_abs(ptr) | BPA_DMA_VALID; | 334 | return virt_to_abs(ptr) | CELL_DMA_VALID; |
| 335 | } | 335 | } |
| 336 | 336 | ||
| 337 | static void bpa_unmap_single(struct device *hwdev, dma_addr_t dma_addr, | 337 | static void cell_unmap_single(struct device *hwdev, dma_addr_t dma_addr, |
| 338 | size_t size, enum dma_data_direction direction) | 338 | size_t size, enum dma_data_direction direction) |
| 339 | { | 339 | { |
| 340 | } | 340 | } |
| 341 | 341 | ||
| 342 | static int bpa_map_sg(struct device *hwdev, struct scatterlist *sg, | 342 | static int cell_map_sg(struct device *hwdev, struct scatterlist *sg, |
| 343 | int nents, enum dma_data_direction direction) | 343 | int nents, enum dma_data_direction direction) |
| 344 | { | 344 | { |
| 345 | int i; | 345 | int i; |
| 346 | 346 | ||
| 347 | for (i = 0; i < nents; i++, sg++) { | 347 | for (i = 0; i < nents; i++, sg++) { |
| 348 | sg->dma_address = (page_to_phys(sg->page) + sg->offset) | 348 | sg->dma_address = (page_to_phys(sg->page) + sg->offset) |
| 349 | | BPA_DMA_VALID; | 349 | | CELL_DMA_VALID; |
| 350 | sg->dma_length = sg->length; | 350 | sg->dma_length = sg->length; |
| 351 | } | 351 | } |
| 352 | 352 | ||
| 353 | return nents; | 353 | return nents; |
| 354 | } | 354 | } |
| 355 | 355 | ||
| 356 | static void bpa_unmap_sg(struct device *hwdev, struct scatterlist *sg, | 356 | static void cell_unmap_sg(struct device *hwdev, struct scatterlist *sg, |
| 357 | int nents, enum dma_data_direction direction) | 357 | int nents, enum dma_data_direction direction) |
| 358 | { | 358 | { |
| 359 | } | 359 | } |
| 360 | 360 | ||
| 361 | static int bpa_dma_supported(struct device *dev, u64 mask) | 361 | static int cell_dma_supported(struct device *dev, u64 mask) |
| 362 | { | 362 | { |
| 363 | return mask < 0x100000000ull; | 363 | return mask < 0x100000000ull; |
| 364 | } | 364 | } |
| 365 | 365 | ||
| 366 | void bpa_init_iommu(void) | 366 | void cell_init_iommu(void) |
| 367 | { | 367 | { |
| 368 | bpa_map_iommu(); | 368 | cell_map_iommu(); |
| 369 | 369 | ||
| 370 | /* Direct I/O, IOMMU off */ | 370 | /* Direct I/O, IOMMU off */ |
| 371 | ppc_md.iommu_dev_setup = iommu_dev_setup_null; | 371 | ppc_md.iommu_dev_setup = iommu_dev_setup_null; |
| 372 | ppc_md.iommu_bus_setup = iommu_bus_setup_null; | 372 | ppc_md.iommu_bus_setup = iommu_bus_setup_null; |
| 373 | 373 | ||
| 374 | pci_dma_ops.alloc_coherent = bpa_alloc_coherent; | 374 | pci_dma_ops.alloc_coherent = cell_alloc_coherent; |
| 375 | pci_dma_ops.free_coherent = bpa_free_coherent; | 375 | pci_dma_ops.free_coherent = cell_free_coherent; |
| 376 | pci_dma_ops.map_single = bpa_map_single; | 376 | pci_dma_ops.map_single = cell_map_single; |
| 377 | pci_dma_ops.unmap_single = bpa_unmap_single; | 377 | pci_dma_ops.unmap_single = cell_unmap_single; |
| 378 | pci_dma_ops.map_sg = bpa_map_sg; | 378 | pci_dma_ops.map_sg = cell_map_sg; |
| 379 | pci_dma_ops.unmap_sg = bpa_unmap_sg; | 379 | pci_dma_ops.unmap_sg = cell_unmap_sg; |
| 380 | pci_dma_ops.dma_supported = bpa_dma_supported; | 380 | pci_dma_ops.dma_supported = cell_dma_supported; |
| 381 | } | 381 | } |
diff --git a/arch/ppc64/kernel/bpa_iommu.h b/arch/powerpc/platforms/cell/iommu.h index e547d77dfa04..490d77abfe85 100644 --- a/arch/ppc64/kernel/bpa_iommu.h +++ b/arch/powerpc/platforms/cell/iommu.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | #ifndef BPA_IOMMU_H | 1 | #ifndef CELL_IOMMU_H |
| 2 | #define BPA_IOMMU_H | 2 | #define CELL_IOMMU_H |
| 3 | 3 | ||
| 4 | /* some constants */ | 4 | /* some constants */ |
| 5 | enum { | 5 | enum { |
| @@ -55,11 +55,11 @@ enum { | |||
| 55 | 55 | ||
| 56 | /* The high bit needs to be set on every DMA address, | 56 | /* The high bit needs to be set on every DMA address, |
| 57 | only 2GB are addressable */ | 57 | only 2GB are addressable */ |
| 58 | BPA_DMA_VALID = 0x80000000, | 58 | CELL_DMA_VALID = 0x80000000, |
| 59 | BPA_DMA_MASK = 0x7fffffff, | 59 | CELL_DMA_MASK = 0x7fffffff, |
| 60 | }; | 60 | }; |
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | void bpa_init_iommu(void); | 63 | void cell_init_iommu(void); |
| 64 | 64 | ||
| 65 | #endif | 65 | #endif |
diff --git a/arch/ppc64/kernel/bpa_setup.c b/arch/powerpc/platforms/cell/setup.c index c2dc8f282eb8..9a495634d0c2 100644 --- a/arch/ppc64/kernel/bpa_setup.c +++ b/arch/powerpc/platforms/cell/setup.c | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * linux/arch/ppc/kernel/bpa_setup.c | 2 | * linux/arch/powerpc/platforms/cell/cell_setup.c |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 1995 Linus Torvalds | 4 | * Copyright (C) 1995 Linus Torvalds |
| 5 | * Adapted from 'alpha' version by Gary Thomas | 5 | * Adapted from 'alpha' version by Gary Thomas |
| 6 | * Modified by Cort Dougan (cort@cs.nmt.edu) | 6 | * Modified by Cort Dougan (cort@cs.nmt.edu) |
| 7 | * Modified by PPC64 Team, IBM Corp | 7 | * Modified by PPC64 Team, IBM Corp |
| 8 | * Modified by BPA Team, IBM Deutschland Entwicklung GmbH | 8 | * Modified by Cell Team, IBM Deutschland Entwicklung GmbH |
| 9 | * | 9 | * |
| 10 | * This program is free software; you can redistribute it and/or | 10 | * This program is free software; you can redistribute it and/or |
| 11 | * modify it under the terms of the GNU General Public License | 11 | * modify it under the terms of the GNU General Public License |
| @@ -46,8 +46,8 @@ | |||
| 46 | #include <asm/ppc-pci.h> | 46 | #include <asm/ppc-pci.h> |
| 47 | #include <asm/irq.h> | 47 | #include <asm/irq.h> |
| 48 | 48 | ||
| 49 | #include "bpa_iic.h" | 49 | #include "interrupt.h" |
| 50 | #include "bpa_iommu.h" | 50 | #include "iommu.h" |
| 51 | 51 | ||
| 52 | #ifdef DEBUG | 52 | #ifdef DEBUG |
| 53 | #define DBG(fmt...) udbg_printf(fmt) | 53 | #define DBG(fmt...) udbg_printf(fmt) |
| @@ -55,7 +55,7 @@ | |||
| 55 | #define DBG(fmt...) | 55 | #define DBG(fmt...) |
| 56 | #endif | 56 | #endif |
| 57 | 57 | ||
| 58 | void bpa_show_cpuinfo(struct seq_file *m) | 58 | void cell_show_cpuinfo(struct seq_file *m) |
| 59 | { | 59 | { |
| 60 | struct device_node *root; | 60 | struct device_node *root; |
| 61 | const char *model = ""; | 61 | const char *model = ""; |
| @@ -63,22 +63,22 @@ void bpa_show_cpuinfo(struct seq_file *m) | |||
| 63 | root = of_find_node_by_path("/"); | 63 | root = of_find_node_by_path("/"); |
| 64 | if (root) | 64 | if (root) |
| 65 | model = get_property(root, "model", NULL); | 65 | model = get_property(root, "model", NULL); |
| 66 | seq_printf(m, "machine\t\t: BPA %s\n", model); | 66 | seq_printf(m, "machine\t\t: CHRP %s\n", model); |
| 67 | of_node_put(root); | 67 | of_node_put(root); |
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | static void bpa_progress(char *s, unsigned short hex) | 70 | static void cell_progress(char *s, unsigned short hex) |
| 71 | { | 71 | { |
| 72 | printk("*** %04x : %s\n", hex, s ? s : ""); | 72 | printk("*** %04x : %s\n", hex, s ? s : ""); |
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | static void __init bpa_setup_arch(void) | 75 | static void __init cell_setup_arch(void) |
| 76 | { | 76 | { |
| 77 | ppc_md.init_IRQ = iic_init_IRQ; | 77 | ppc_md.init_IRQ = iic_init_IRQ; |
| 78 | ppc_md.get_irq = iic_get_irq; | 78 | ppc_md.get_irq = iic_get_irq; |
| 79 | 79 | ||
| 80 | #ifdef CONFIG_SMP | 80 | #ifdef CONFIG_SMP |
| 81 | smp_init_pSeries(); | 81 | smp_init_cell(); |
| 82 | #endif | 82 | #endif |
| 83 | 83 | ||
| 84 | /* init to some ~sane value until calibrate_delay() runs */ | 84 | /* init to some ~sane value until calibrate_delay() runs */ |
| @@ -97,39 +97,39 @@ static void __init bpa_setup_arch(void) | |||
| 97 | conswitchp = &dummy_con; | 97 | conswitchp = &dummy_con; |
| 98 | #endif | 98 | #endif |
| 99 | 99 | ||
| 100 | bpa_nvram_init(); | 100 | mmio_nvram_init(); |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | /* | 103 | /* |
| 104 | * Early initialization. Relocation is on but do not reference unbolted pages | 104 | * Early initialization. Relocation is on but do not reference unbolted pages |
| 105 | */ | 105 | */ |
| 106 | static void __init bpa_init_early(void) | 106 | static void __init cell_init_early(void) |
| 107 | { | 107 | { |
| 108 | DBG(" -> bpa_init_early()\n"); | 108 | DBG(" -> cell_init_early()\n"); |
| 109 | 109 | ||
| 110 | hpte_init_native(); | 110 | hpte_init_native(); |
| 111 | 111 | ||
| 112 | bpa_init_iommu(); | 112 | cell_init_iommu(); |
| 113 | 113 | ||
| 114 | ppc64_interrupt_controller = IC_BPA_IIC; | 114 | ppc64_interrupt_controller = IC_CELL_PIC; |
| 115 | 115 | ||
| 116 | DBG(" <- bpa_init_early()\n"); | 116 | DBG(" <- cell_init_early()\n"); |
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | 119 | ||
| 120 | static int __init bpa_probe(int platform) | 120 | static int __init cell_probe(int platform) |
| 121 | { | 121 | { |
| 122 | if (platform != PLATFORM_BPA) | 122 | if (platform != PLATFORM_CELL) |
| 123 | return 0; | 123 | return 0; |
| 124 | 124 | ||
| 125 | return 1; | 125 | return 1; |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | struct machdep_calls __initdata bpa_md = { | 128 | struct machdep_calls __initdata cell_md = { |
| 129 | .probe = bpa_probe, | 129 | .probe = cell_probe, |
| 130 | .setup_arch = bpa_setup_arch, | 130 | .setup_arch = cell_setup_arch, |
| 131 | .init_early = bpa_init_early, | 131 | .init_early = cell_init_early, |
| 132 | .show_cpuinfo = bpa_show_cpuinfo, | 132 | .show_cpuinfo = cell_show_cpuinfo, |
| 133 | .restart = rtas_restart, | 133 | .restart = rtas_restart, |
| 134 | .power_off = rtas_power_off, | 134 | .power_off = rtas_power_off, |
| 135 | .halt = rtas_halt, | 135 | .halt = rtas_halt, |
| @@ -137,5 +137,5 @@ struct machdep_calls __initdata bpa_md = { | |||
| 137 | .get_rtc_time = rtas_get_rtc_time, | 137 | .get_rtc_time = rtas_get_rtc_time, |
| 138 | .set_rtc_time = rtas_set_rtc_time, | 138 | .set_rtc_time = rtas_set_rtc_time, |
| 139 | .calibrate_decr = generic_calibrate_decr, | 139 | .calibrate_decr = generic_calibrate_decr, |
| 140 | .progress = bpa_progress, | 140 | .progress = cell_progress, |
| 141 | }; | 141 | }; |
diff --git a/arch/powerpc/platforms/cell/smp.c b/arch/powerpc/platforms/cell/smp.c new file mode 100644 index 000000000000..de96eadf419d --- /dev/null +++ b/arch/powerpc/platforms/cell/smp.c | |||
| @@ -0,0 +1,230 @@ | |||
| 1 | /* | ||
| 2 | * SMP support for BPA machines. | ||
| 3 | * | ||
| 4 | * Dave Engebretsen, Peter Bergner, and | ||
| 5 | * Mike Corrigan {engebret|bergner|mikec}@us.ibm.com | ||
| 6 | * | ||
| 7 | * Plus various changes from other IBM teams... | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or | ||
| 10 | * modify it under the terms of the GNU General Public License | ||
| 11 | * as published by the Free Software Foundation; either version | ||
| 12 | * 2 of the License, or (at your option) any later version. | ||
| 13 | */ | ||
| 14 | |||
| 15 | #undef DEBUG | ||
| 16 | |||
| 17 | #include <linux/config.h> | ||
| 18 | #include <linux/kernel.h> | ||
| 19 | #include <linux/module.h> | ||
| 20 | #include <linux/sched.h> | ||
| 21 | #include <linux/smp.h> | ||
| 22 | #include <linux/interrupt.h> | ||
| 23 | #include <linux/delay.h> | ||
| 24 | #include <linux/init.h> | ||
| 25 | #include <linux/spinlock.h> | ||
| 26 | #include <linux/cache.h> | ||
| 27 | #include <linux/err.h> | ||
| 28 | #include <linux/sysdev.h> | ||
| 29 | #include <linux/cpu.h> | ||
| 30 | |||
| 31 | #include <asm/ptrace.h> | ||
| 32 | #include <asm/atomic.h> | ||
| 33 | #include <asm/irq.h> | ||
| 34 | #include <asm/page.h> | ||
| 35 | #include <asm/pgtable.h> | ||
| 36 | #include <asm/io.h> | ||
| 37 | #include <asm/prom.h> | ||
| 38 | #include <asm/smp.h> | ||
| 39 | #include <asm/paca.h> | ||
| 40 | #include <asm/time.h> | ||
| 41 | #include <asm/machdep.h> | ||
| 42 | #include <asm/cputable.h> | ||
| 43 | #include <asm/firmware.h> | ||
| 44 | #include <asm/system.h> | ||
| 45 | #include <asm/rtas.h> | ||
| 46 | |||
| 47 | #include "interrupt.h" | ||
| 48 | |||
| 49 | #ifdef DEBUG | ||
| 50 | #define DBG(fmt...) udbg_printf(fmt) | ||
| 51 | #else | ||
| 52 | #define DBG(fmt...) | ||
| 53 | #endif | ||
| 54 | |||
| 55 | /* | ||
| 56 | * The primary thread of each non-boot processor is recorded here before | ||
| 57 | * smp init. | ||
| 58 | */ | ||
| 59 | static cpumask_t of_spin_map; | ||
| 60 | |||
| 61 | extern void pSeries_secondary_smp_init(unsigned long); | ||
| 62 | |||
| 63 | /** | ||
| 64 | * smp_startup_cpu() - start the given cpu | ||
| 65 | * | ||
| 66 | * At boot time, there is nothing to do for primary threads which were | ||
| 67 | * started from Open Firmware. For anything else, call RTAS with the | ||
| 68 | * appropriate start location. | ||
| 69 | * | ||
| 70 | * Returns: | ||
| 71 | * 0 - failure | ||
| 72 | * 1 - success | ||
| 73 | */ | ||
| 74 | static inline int __devinit smp_startup_cpu(unsigned int lcpu) | ||
| 75 | { | ||
| 76 | int status; | ||
| 77 | unsigned long start_here = __pa((u32)*((unsigned long *) | ||
| 78 | pSeries_secondary_smp_init)); | ||
| 79 | unsigned int pcpu; | ||
| 80 | int start_cpu; | ||
| 81 | |||
| 82 | if (cpu_isset(lcpu, of_spin_map)) | ||
| 83 | /* Already started by OF and sitting in spin loop */ | ||
| 84 | return 1; | ||
| 85 | |||
| 86 | pcpu = get_hard_smp_processor_id(lcpu); | ||
| 87 | |||
| 88 | /* Fixup atomic count: it exited inside IRQ handler. */ | ||
| 89 | paca[lcpu].__current->thread_info->preempt_count = 0; | ||
| 90 | |||
| 91 | /* | ||
| 92 | * If the RTAS start-cpu token does not exist then presume the | ||
| 93 | * cpu is already spinning. | ||
| 94 | */ | ||
| 95 | start_cpu = rtas_token("start-cpu"); | ||
| 96 | if (start_cpu == RTAS_UNKNOWN_SERVICE) | ||
| 97 | return 1; | ||
| 98 | |||
| 99 | status = rtas_call(start_cpu, 3, 1, NULL, pcpu, start_here, lcpu); | ||
| 100 | if (status != 0) { | ||
| 101 | printk(KERN_ERR "start-cpu failed: %i\n", status); | ||
| 102 | return 0; | ||
| 103 | } | ||
| 104 | |||
| 105 | return 1; | ||
| 106 | } | ||
| 107 | |||
| 108 | static void smp_iic_message_pass(int target, int msg) | ||
| 109 | { | ||
| 110 | unsigned int i; | ||
| 111 | |||
| 112 | if (target < NR_CPUS) { | ||
| 113 | iic_cause_IPI(target, msg); | ||
| 114 | } else { | ||
| 115 | for_each_online_cpu(i) { | ||
| 116 | if (target == MSG_ALL_BUT_SELF | ||
| 117 | && i == smp_processor_id()) | ||
| 118 | continue; | ||
| 119 | iic_cause_IPI(i, msg); | ||
| 120 | } | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | static int __init smp_iic_probe(void) | ||
| 125 | { | ||
| 126 | iic_request_IPIs(); | ||
| 127 | |||
| 128 | return cpus_weight(cpu_possible_map); | ||
| 129 | } | ||
| 130 | |||
| 131 | static void __devinit smp_iic_setup_cpu(int cpu) | ||
| 132 | { | ||
| 133 | if (cpu != boot_cpuid) | ||
| 134 | iic_setup_cpu(); | ||
| 135 | } | ||
| 136 | |||
| 137 | static DEFINE_SPINLOCK(timebase_lock); | ||
| 138 | static unsigned long timebase = 0; | ||
| 139 | |||
| 140 | static void __devinit cell_give_timebase(void) | ||
| 141 | { | ||
| 142 | spin_lock(&timebase_lock); | ||
| 143 | rtas_call(rtas_token("freeze-time-base"), 0, 1, NULL); | ||
| 144 | timebase = get_tb(); | ||
| 145 | spin_unlock(&timebase_lock); | ||
| 146 | |||
| 147 | while (timebase) | ||
| 148 | barrier(); | ||
| 149 | rtas_call(rtas_token("thaw-time-base"), 0, 1, NULL); | ||
| 150 | } | ||
| 151 | |||
| 152 | static void __devinit cell_take_timebase(void) | ||
| 153 | { | ||
| 154 | while (!timebase) | ||
| 155 | barrier(); | ||
| 156 | spin_lock(&timebase_lock); | ||
| 157 | set_tb(timebase >> 32, timebase & 0xffffffff); | ||
| 158 | timebase = 0; | ||
| 159 | spin_unlock(&timebase_lock); | ||
| 160 | } | ||
| 161 | |||
| 162 | static void __devinit smp_cell_kick_cpu(int nr) | ||
| 163 | { | ||
| 164 | BUG_ON(nr < 0 || nr >= NR_CPUS); | ||
| 165 | |||
| 166 | if (!smp_startup_cpu(nr)) | ||
| 167 | return; | ||
| 168 | |||
| 169 | /* | ||
| 170 | * The processor is currently spinning, waiting for the | ||
| 171 | * cpu_start field to become non-zero After we set cpu_start, | ||
| 172 | * the processor will continue on to secondary_start | ||
| 173 | */ | ||
| 174 | paca[nr].cpu_start = 1; | ||
| 175 | } | ||
| 176 | |||
| 177 | static int smp_cell_cpu_bootable(unsigned int nr) | ||
| 178 | { | ||
| 179 | /* Special case - we inhibit secondary thread startup | ||
| 180 | * during boot if the user requests it. Odd-numbered | ||
| 181 | * cpus are assumed to be secondary threads. | ||
| 182 | */ | ||
| 183 | if (system_state < SYSTEM_RUNNING && | ||
| 184 | cpu_has_feature(CPU_FTR_SMT) && | ||
| 185 | !smt_enabled_at_boot && nr % 2 != 0) | ||
| 186 | return 0; | ||
| 187 | |||
| 188 | return 1; | ||
| 189 | } | ||
| 190 | static struct smp_ops_t bpa_iic_smp_ops = { | ||
| 191 | .message_pass = smp_iic_message_pass, | ||
| 192 | .probe = smp_iic_probe, | ||
| 193 | .kick_cpu = smp_cell_kick_cpu, | ||
| 194 | .setup_cpu = smp_iic_setup_cpu, | ||
| 195 | .cpu_bootable = smp_cell_cpu_bootable, | ||
| 196 | }; | ||
| 197 | |||
| 198 | /* This is called very early */ | ||
| 199 | void __init smp_init_cell(void) | ||
| 200 | { | ||
| 201 | int i; | ||
| 202 | |||
| 203 | DBG(" -> smp_init_cell()\n"); | ||
| 204 | |||
| 205 | smp_ops = &bpa_iic_smp_ops; | ||
| 206 | |||
| 207 | /* Mark threads which are still spinning in hold loops. */ | ||
| 208 | if (cpu_has_feature(CPU_FTR_SMT)) { | ||
| 209 | for_each_present_cpu(i) { | ||
| 210 | if (i % 2 == 0) | ||
| 211 | /* | ||
| 212 | * Even-numbered logical cpus correspond to | ||
| 213 | * primary threads. | ||
| 214 | */ | ||
| 215 | cpu_set(i, of_spin_map); | ||
| 216 | } | ||
| 217 | } else { | ||
| 218 | of_spin_map = cpu_present_map; | ||
| 219 | } | ||
| 220 | |||
| 221 | cpu_clear(boot_cpuid, of_spin_map); | ||
| 222 | |||
| 223 | /* Non-lpar has additional take/give timebase */ | ||
| 224 | if (rtas_token("freeze-time-base") != RTAS_UNKNOWN_SERVICE) { | ||
| 225 | smp_ops->give_timebase = cell_give_timebase; | ||
| 226 | smp_ops->take_timebase = cell_take_timebase; | ||
| 227 | } | ||
| 228 | |||
| 229 | DBG(" <- smp_init_cell()\n"); | ||
| 230 | } | ||
diff --git a/arch/ppc64/kernel/spider-pic.c b/arch/powerpc/platforms/cell/spider-pic.c index d5c9a02fb119..e74132188bdf 100644 --- a/arch/ppc64/kernel/spider-pic.c +++ b/arch/powerpc/platforms/cell/spider-pic.c | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | #include <asm/prom.h> | 27 | #include <asm/prom.h> |
| 28 | #include <asm/io.h> | 28 | #include <asm/io.h> |
| 29 | 29 | ||
| 30 | #include "bpa_iic.h" | 30 | #include "interrupt.h" |
| 31 | 31 | ||
| 32 | /* register layout taken from Spider spec, table 7.4-4 */ | 32 | /* register layout taken from Spider spec, table 7.4-4 */ |
| 33 | enum { | 33 | enum { |
diff --git a/arch/powerpc/platforms/chrp/nvram.c b/arch/powerpc/platforms/chrp/nvram.c index 4ac7125aa09c..150f67d6f90c 100644 --- a/arch/powerpc/platforms/chrp/nvram.c +++ b/arch/powerpc/platforms/chrp/nvram.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <asm/uaccess.h> | 17 | #include <asm/uaccess.h> |
| 18 | #include <asm/prom.h> | 18 | #include <asm/prom.h> |
| 19 | #include <asm/machdep.h> | 19 | #include <asm/machdep.h> |
| 20 | #include <asm/rtas.h> | ||
| 20 | #include "chrp.h" | 21 | #include "chrp.h" |
| 21 | 22 | ||
| 22 | static unsigned int nvram_size; | 23 | static unsigned int nvram_size; |
| @@ -25,7 +26,8 @@ static DEFINE_SPINLOCK(nvram_lock); | |||
| 25 | 26 | ||
| 26 | static unsigned char chrp_nvram_read(int addr) | 27 | static unsigned char chrp_nvram_read(int addr) |
| 27 | { | 28 | { |
| 28 | unsigned long done, flags; | 29 | unsigned int done; |
| 30 | unsigned long flags; | ||
| 29 | unsigned char ret; | 31 | unsigned char ret; |
| 30 | 32 | ||
| 31 | if (addr >= nvram_size) { | 33 | if (addr >= nvram_size) { |
| @@ -34,7 +36,8 @@ static unsigned char chrp_nvram_read(int addr) | |||
| 34 | return 0xff; | 36 | return 0xff; |
| 35 | } | 37 | } |
| 36 | spin_lock_irqsave(&nvram_lock, flags); | 38 | spin_lock_irqsave(&nvram_lock, flags); |
| 37 | if ((call_rtas("nvram-fetch", 3, 2, &done, addr, __pa(nvram_buf), 1) != 0) || 1 != done) | 39 | if ((rtas_call(rtas_token("nvram-fetch"), 3, 2, &done, addr, |
| 40 | __pa(nvram_buf), 1) != 0) || 1 != done) | ||
| 38 | ret = 0xff; | 41 | ret = 0xff; |
| 39 | else | 42 | else |
| 40 | ret = nvram_buf[0]; | 43 | ret = nvram_buf[0]; |
| @@ -45,7 +48,8 @@ static unsigned char chrp_nvram_read(int addr) | |||
| 45 | 48 | ||
| 46 | static void chrp_nvram_write(int addr, unsigned char val) | 49 | static void chrp_nvram_write(int addr, unsigned char val) |
| 47 | { | 50 | { |
| 48 | unsigned long done, flags; | 51 | unsigned int done; |
| 52 | unsigned long flags; | ||
| 49 | 53 | ||
| 50 | if (addr >= nvram_size) { | 54 | if (addr >= nvram_size) { |
| 51 | printk(KERN_DEBUG "%s: write addr %d > nvram_size %u\n", | 55 | printk(KERN_DEBUG "%s: write addr %d > nvram_size %u\n", |
| @@ -54,7 +58,8 @@ static void chrp_nvram_write(int addr, unsigned char val) | |||
| 54 | } | 58 | } |
| 55 | spin_lock_irqsave(&nvram_lock, flags); | 59 | spin_lock_irqsave(&nvram_lock, flags); |
| 56 | nvram_buf[0] = val; | 60 | nvram_buf[0] = val; |
| 57 | if ((call_rtas("nvram-store", 3, 2, &done, addr, __pa(nvram_buf), 1) != 0) || 1 != done) | 61 | if ((rtas_call(rtas_token("nvram-store"), 3, 2, &done, addr, |
| 62 | __pa(nvram_buf), 1) != 0) || 1 != done) | ||
| 58 | printk(KERN_DEBUG "rtas IO error storing 0x%02x at %d", val, addr); | 63 | printk(KERN_DEBUG "rtas IO error storing 0x%02x at %d", val, addr); |
| 59 | spin_unlock_irqrestore(&nvram_lock, flags); | 64 | spin_unlock_irqrestore(&nvram_lock, flags); |
| 60 | } | 65 | } |
diff --git a/arch/powerpc/platforms/chrp/pegasos_eth.c b/arch/powerpc/platforms/chrp/pegasos_eth.c index a9052305c35d..29c86781c493 100644 --- a/arch/powerpc/platforms/chrp/pegasos_eth.c +++ b/arch/powerpc/platforms/chrp/pegasos_eth.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
| 15 | #include <linux/ioport.h> | 15 | #include <linux/ioport.h> |
| 16 | #include <linux/device.h> | 16 | #include <linux/device.h> |
| 17 | #include <linux/platform_device.h> | ||
| 17 | #include <linux/mv643xx.h> | 18 | #include <linux/mv643xx.h> |
| 18 | #include <linux/pci.h> | 19 | #include <linux/pci.h> |
| 19 | 20 | ||
diff --git a/arch/powerpc/platforms/chrp/smp.c b/arch/powerpc/platforms/chrp/smp.c index 31ee49c25014..bb2315997d45 100644 --- a/arch/powerpc/platforms/chrp/smp.c +++ b/arch/powerpc/platforms/chrp/smp.c | |||
| @@ -35,43 +35,6 @@ | |||
| 35 | #include <asm/smp.h> | 35 | #include <asm/smp.h> |
| 36 | #include <asm/mpic.h> | 36 | #include <asm/mpic.h> |
| 37 | 37 | ||
| 38 | extern unsigned long smp_chrp_cpu_nr; | ||
| 39 | |||
| 40 | static int __init smp_chrp_probe(void) | ||
| 41 | { | ||
| 42 | struct device_node *cpus = NULL; | ||
| 43 | unsigned int *reg; | ||
| 44 | int reglen; | ||
| 45 | int ncpus = 0; | ||
| 46 | int cpuid; | ||
| 47 | unsigned int phys; | ||
| 48 | |||
| 49 | /* Count CPUs in the device-tree */ | ||
| 50 | cpuid = 1; /* the boot cpu is logical cpu 0 */ | ||
| 51 | while ((cpus = of_find_node_by_type(cpus, "cpu")) != NULL) { | ||
| 52 | phys = ncpus; | ||
| 53 | reg = (unsigned int *) get_property(cpus, "reg", ®len); | ||
| 54 | if (reg && reglen >= sizeof(unsigned int)) | ||
| 55 | /* hmmm, not having a reg property would be bad */ | ||
| 56 | phys = *reg; | ||
| 57 | if (phys != boot_cpuid_phys) { | ||
| 58 | set_hard_smp_processor_id(cpuid, phys); | ||
| 59 | ++cpuid; | ||
| 60 | } | ||
| 61 | ++ncpus; | ||
| 62 | } | ||
| 63 | |||
| 64 | printk(KERN_INFO "CHRP SMP probe found %d cpus\n", ncpus); | ||
| 65 | |||
| 66 | /* Nothing more to do if less than 2 of them */ | ||
| 67 | if (ncpus <= 1) | ||
| 68 | return 1; | ||
| 69 | |||
| 70 | mpic_request_ipis(); | ||
| 71 | |||
| 72 | return ncpus; | ||
| 73 | } | ||
| 74 | |||
| 75 | static void __devinit smp_chrp_kick_cpu(int nr) | 38 | static void __devinit smp_chrp_kick_cpu(int nr) |
| 76 | { | 39 | { |
| 77 | *(unsigned long *)KERNELBASE = nr; | 40 | *(unsigned long *)KERNELBASE = nr; |
| @@ -114,7 +77,7 @@ void __devinit smp_chrp_take_timebase(void) | |||
| 114 | /* CHRP with openpic */ | 77 | /* CHRP with openpic */ |
| 115 | struct smp_ops_t chrp_smp_ops = { | 78 | struct smp_ops_t chrp_smp_ops = { |
| 116 | .message_pass = smp_mpic_message_pass, | 79 | .message_pass = smp_mpic_message_pass, |
| 117 | .probe = smp_chrp_probe, | 80 | .probe = smp_mpic_probe, |
| 118 | .kick_cpu = smp_chrp_kick_cpu, | 81 | .kick_cpu = smp_chrp_kick_cpu, |
| 119 | .setup_cpu = smp_chrp_setup_cpu, | 82 | .setup_cpu = smp_chrp_setup_cpu, |
| 120 | .give_timebase = smp_chrp_give_timebase, | 83 | .give_timebase = smp_chrp_give_timebase, |
diff --git a/arch/powerpc/platforms/iseries/call_hpt.h b/arch/powerpc/platforms/iseries/call_hpt.h index 321f3bb7a8f5..a843b0f87b72 100644 --- a/arch/powerpc/platforms/iseries/call_hpt.h +++ b/arch/powerpc/platforms/iseries/call_hpt.h | |||
| @@ -23,8 +23,8 @@ | |||
| 23 | * drive the hypervisor from the OS. | 23 | * drive the hypervisor from the OS. |
| 24 | */ | 24 | */ |
| 25 | 25 | ||
| 26 | #include <asm/iSeries/HvCallSc.h> | 26 | #include <asm/iseries/hv_call_sc.h> |
| 27 | #include <asm/iSeries/HvTypes.h> | 27 | #include <asm/iseries/hv_types.h> |
| 28 | #include <asm/mmu.h> | 28 | #include <asm/mmu.h> |
| 29 | 29 | ||
| 30 | #define HvCallHptGetHptAddress HvCallHpt + 0 | 30 | #define HvCallHptGetHptAddress HvCallHpt + 0 |
diff --git a/arch/powerpc/platforms/iseries/call_pci.h b/arch/powerpc/platforms/iseries/call_pci.h index a86e065b9577..59d4e0ad5cf3 100644 --- a/arch/powerpc/platforms/iseries/call_pci.h +++ b/arch/powerpc/platforms/iseries/call_pci.h | |||
| @@ -25,8 +25,8 @@ | |||
| 25 | #ifndef _PLATFORMS_ISERIES_CALL_PCI_H | 25 | #ifndef _PLATFORMS_ISERIES_CALL_PCI_H |
| 26 | #define _PLATFORMS_ISERIES_CALL_PCI_H | 26 | #define _PLATFORMS_ISERIES_CALL_PCI_H |
| 27 | 27 | ||
| 28 | #include <asm/iSeries/HvCallSc.h> | 28 | #include <asm/iseries/hv_call_sc.h> |
| 29 | #include <asm/iSeries/HvTypes.h> | 29 | #include <asm/iseries/hv_types.h> |
| 30 | 30 | ||
| 31 | /* | 31 | /* |
| 32 | * DSA == Direct Select Address | 32 | * DSA == Direct Select Address |
diff --git a/arch/powerpc/platforms/iseries/call_sm.h b/arch/powerpc/platforms/iseries/call_sm.h index ef223166cf22..c7e251619f48 100644 --- a/arch/powerpc/platforms/iseries/call_sm.h +++ b/arch/powerpc/platforms/iseries/call_sm.h | |||
| @@ -23,8 +23,8 @@ | |||
| 23 | * drive the hypervisor from the OS. | 23 | * drive the hypervisor from the OS. |
| 24 | */ | 24 | */ |
| 25 | 25 | ||
| 26 | #include <asm/iSeries/HvCallSc.h> | 26 | #include <asm/iseries/hv_call_sc.h> |
| 27 | #include <asm/iSeries/HvTypes.h> | 27 | #include <asm/iseries/hv_types.h> |
| 28 | 28 | ||
| 29 | #define HvCallSmGet64BitsOfAccessMap HvCallSm + 11 | 29 | #define HvCallSmGet64BitsOfAccessMap HvCallSm + 11 |
| 30 | 30 | ||
diff --git a/arch/powerpc/platforms/iseries/hvlog.c b/arch/powerpc/platforms/iseries/hvlog.c index f61e2e9ac9ec..62ec73479687 100644 --- a/arch/powerpc/platforms/iseries/hvlog.c +++ b/arch/powerpc/platforms/iseries/hvlog.c | |||
| @@ -9,9 +9,9 @@ | |||
| 9 | 9 | ||
| 10 | #include <asm/page.h> | 10 | #include <asm/page.h> |
| 11 | #include <asm/abs_addr.h> | 11 | #include <asm/abs_addr.h> |
| 12 | #include <asm/iSeries/HvCall.h> | 12 | #include <asm/iseries/hv_call.h> |
| 13 | #include <asm/iSeries/HvCallSc.h> | 13 | #include <asm/iseries/hv_call_sc.h> |
| 14 | #include <asm/iSeries/HvTypes.h> | 14 | #include <asm/iseries/hv_types.h> |
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | void HvCall_writeLogBuffer(const void *buffer, u64 len) | 17 | void HvCall_writeLogBuffer(const void *buffer, u64 len) |
diff --git a/arch/powerpc/platforms/iseries/hvlpconfig.c b/arch/powerpc/platforms/iseries/hvlpconfig.c index dc28621aea0d..663a1affb4bb 100644 --- a/arch/powerpc/platforms/iseries/hvlpconfig.c +++ b/arch/powerpc/platforms/iseries/hvlpconfig.c | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | */ | 17 | */ |
| 18 | 18 | ||
| 19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
| 20 | #include <asm/iSeries/HvLpConfig.h> | 20 | #include <asm/iseries/hv_lp_config.h> |
| 21 | 21 | ||
| 22 | HvLpIndex HvLpConfig_getLpIndex_outline(void) | 22 | HvLpIndex HvLpConfig_getLpIndex_outline(void) |
| 23 | { | 23 | { |
diff --git a/arch/powerpc/platforms/iseries/iommu.c b/arch/powerpc/platforms/iseries/iommu.c index 1db26d8be640..1a6845b5c5a4 100644 --- a/arch/powerpc/platforms/iseries/iommu.c +++ b/arch/powerpc/platforms/iseries/iommu.c | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | #include <asm/machdep.h> | 32 | #include <asm/machdep.h> |
| 33 | #include <asm/abs_addr.h> | 33 | #include <asm/abs_addr.h> |
| 34 | #include <asm/pci-bridge.h> | 34 | #include <asm/pci-bridge.h> |
| 35 | #include <asm/iSeries/HvCallXm.h> | 35 | #include <asm/iseries/hv_call_xm.h> |
| 36 | 36 | ||
| 37 | extern struct list_head iSeries_Global_Device_List; | 37 | extern struct list_head iSeries_Global_Device_List; |
| 38 | 38 | ||
diff --git a/arch/powerpc/platforms/iseries/irq.c b/arch/powerpc/platforms/iseries/irq.c index 937ac99b9d33..c1135912cc05 100644 --- a/arch/powerpc/platforms/iseries/irq.c +++ b/arch/powerpc/platforms/iseries/irq.c | |||
| @@ -36,9 +36,9 @@ | |||
| 36 | #include <linux/spinlock.h> | 36 | #include <linux/spinlock.h> |
| 37 | 37 | ||
| 38 | #include <asm/ppcdebug.h> | 38 | #include <asm/ppcdebug.h> |
| 39 | #include <asm/iSeries/HvTypes.h> | 39 | #include <asm/iseries/hv_types.h> |
| 40 | #include <asm/iSeries/HvLpEvent.h> | 40 | #include <asm/iseries/hv_lp_event.h> |
| 41 | #include <asm/iSeries/HvCallXm.h> | 41 | #include <asm/iseries/hv_call_xm.h> |
| 42 | 42 | ||
| 43 | #include "irq.h" | 43 | #include "irq.h" |
| 44 | #include "call_pci.h" | 44 | #include "call_pci.h" |
diff --git a/arch/powerpc/platforms/iseries/ksyms.c b/arch/powerpc/platforms/iseries/ksyms.c index f271b3539721..a2200842f4e5 100644 --- a/arch/powerpc/platforms/iseries/ksyms.c +++ b/arch/powerpc/platforms/iseries/ksyms.c | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
| 10 | 10 | ||
| 11 | #include <asm/hw_irq.h> | 11 | #include <asm/hw_irq.h> |
| 12 | #include <asm/iSeries/HvCallSc.h> | 12 | #include <asm/iseries/hv_call_sc.h> |
| 13 | 13 | ||
| 14 | EXPORT_SYMBOL(HvCall0); | 14 | EXPORT_SYMBOL(HvCall0); |
| 15 | EXPORT_SYMBOL(HvCall1); | 15 | EXPORT_SYMBOL(HvCall1); |
diff --git a/arch/powerpc/platforms/iseries/lpardata.c b/arch/powerpc/platforms/iseries/lpardata.c index ed2ffee6f731..bb8c91537f35 100644 --- a/arch/powerpc/platforms/iseries/lpardata.c +++ b/arch/powerpc/platforms/iseries/lpardata.c | |||
| @@ -13,16 +13,16 @@ | |||
| 13 | #include <linux/bitops.h> | 13 | #include <linux/bitops.h> |
| 14 | #include <asm/processor.h> | 14 | #include <asm/processor.h> |
| 15 | #include <asm/ptrace.h> | 15 | #include <asm/ptrace.h> |
| 16 | #include <asm/naca.h> | ||
| 17 | #include <asm/abs_addr.h> | 16 | #include <asm/abs_addr.h> |
| 18 | #include <asm/iSeries/ItLpNaca.h> | 17 | #include <asm/iseries/it_lp_naca.h> |
| 19 | #include <asm/lppaca.h> | 18 | #include <asm/lppaca.h> |
| 20 | #include <asm/iSeries/ItLpRegSave.h> | 19 | #include <asm/iseries/it_lp_reg_save.h> |
| 21 | #include <asm/paca.h> | 20 | #include <asm/paca.h> |
| 22 | #include <asm/iSeries/LparMap.h> | 21 | #include <asm/iseries/lpar_map.h> |
| 23 | #include <asm/iSeries/ItExtVpdPanel.h> | 22 | #include <asm/iseries/it_exp_vpd_panel.h> |
| 24 | #include <asm/iSeries/ItLpQueue.h> | 23 | #include <asm/iseries/it_lp_queue.h> |
| 25 | 24 | ||
| 25 | #include "naca.h" | ||
| 26 | #include "vpd_areas.h" | 26 | #include "vpd_areas.h" |
| 27 | #include "spcomm_area.h" | 27 | #include "spcomm_area.h" |
| 28 | #include "ipl_parms.h" | 28 | #include "ipl_parms.h" |
diff --git a/arch/powerpc/platforms/iseries/lpevents.c b/arch/powerpc/platforms/iseries/lpevents.c index 54c7753dbe05..e9fb98bf895f 100644 --- a/arch/powerpc/platforms/iseries/lpevents.c +++ b/arch/powerpc/platforms/iseries/lpevents.c | |||
| @@ -17,10 +17,10 @@ | |||
| 17 | 17 | ||
| 18 | #include <asm/system.h> | 18 | #include <asm/system.h> |
| 19 | #include <asm/paca.h> | 19 | #include <asm/paca.h> |
| 20 | #include <asm/iSeries/ItLpQueue.h> | 20 | #include <asm/iseries/it_lp_queue.h> |
| 21 | #include <asm/iSeries/HvLpEvent.h> | 21 | #include <asm/iseries/hv_lp_event.h> |
| 22 | #include <asm/iSeries/HvCallEvent.h> | 22 | #include <asm/iseries/hv_call_event.h> |
| 23 | #include <asm/iSeries/ItLpNaca.h> | 23 | #include <asm/iseries/it_lp_naca.h> |
| 24 | 24 | ||
| 25 | /* | 25 | /* |
| 26 | * The LpQueue is used to pass event data from the hypervisor to | 26 | * The LpQueue is used to pass event data from the hypervisor to |
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c index e5de31aa0015..49e7e4b85847 100644 --- a/arch/powerpc/platforms/iseries/mf.c +++ b/arch/powerpc/platforms/iseries/mf.c | |||
| @@ -38,10 +38,10 @@ | |||
| 38 | #include <asm/uaccess.h> | 38 | #include <asm/uaccess.h> |
| 39 | #include <asm/paca.h> | 39 | #include <asm/paca.h> |
| 40 | #include <asm/abs_addr.h> | 40 | #include <asm/abs_addr.h> |
| 41 | #include <asm/iSeries/vio.h> | 41 | #include <asm/iseries/vio.h> |
| 42 | #include <asm/iSeries/mf.h> | 42 | #include <asm/iseries/mf.h> |
| 43 | #include <asm/iSeries/HvLpConfig.h> | 43 | #include <asm/iseries/hv_lp_config.h> |
| 44 | #include <asm/iSeries/ItLpQueue.h> | 44 | #include <asm/iseries/it_lp_queue.h> |
| 45 | 45 | ||
| 46 | #include "setup.h" | 46 | #include "setup.h" |
| 47 | 47 | ||
diff --git a/arch/powerpc/platforms/iseries/naca.h b/arch/powerpc/platforms/iseries/naca.h new file mode 100644 index 000000000000..ab2372eb8d2e --- /dev/null +++ b/arch/powerpc/platforms/iseries/naca.h | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | #ifndef _PLATFORMS_ISERIES_NACA_H | ||
| 2 | #define _PLATFORMS_ISERIES_NACA_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | * c 2001 PPC 64 Team, IBM Corp | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or | ||
| 8 | * modify it under the terms of the GNU General Public License | ||
| 9 | * as published by the Free Software Foundation; either version | ||
| 10 | * 2 of the License, or (at your option) any later version. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <asm/types.h> | ||
| 14 | |||
| 15 | struct naca_struct { | ||
| 16 | /* Kernel only data - undefined for user space */ | ||
| 17 | void *xItVpdAreas; /* VPD Data 0x00 */ | ||
| 18 | void *xRamDisk; /* iSeries ramdisk 0x08 */ | ||
| 19 | u64 xRamDiskSize; /* In pages 0x10 */ | ||
| 20 | }; | ||
| 21 | |||
| 22 | extern struct naca_struct naca; | ||
| 23 | |||
| 24 | #endif /* _PLATFORMS_ISERIES_NACA_H */ | ||
diff --git a/arch/powerpc/platforms/iseries/pci.c b/arch/powerpc/platforms/iseries/pci.c index 959e59fd9c11..7d7d5884343f 100644 --- a/arch/powerpc/platforms/iseries/pci.c +++ b/arch/powerpc/platforms/iseries/pci.c | |||
| @@ -36,8 +36,8 @@ | |||
| 36 | #include <asm/iommu.h> | 36 | #include <asm/iommu.h> |
| 37 | #include <asm/abs_addr.h> | 37 | #include <asm/abs_addr.h> |
| 38 | 38 | ||
| 39 | #include <asm/iSeries/HvCallXm.h> | 39 | #include <asm/iseries/hv_call_xm.h> |
| 40 | #include <asm/iSeries/mf.h> | 40 | #include <asm/iseries/mf.h> |
| 41 | 41 | ||
| 42 | #include <asm/ppc-pci.h> | 42 | #include <asm/ppc-pci.h> |
| 43 | 43 | ||
diff --git a/arch/powerpc/platforms/iseries/proc.c b/arch/powerpc/platforms/iseries/proc.c index 6f1929cac66b..e68b6b5fa89f 100644 --- a/arch/powerpc/platforms/iseries/proc.c +++ b/arch/powerpc/platforms/iseries/proc.c | |||
| @@ -24,8 +24,8 @@ | |||
| 24 | #include <asm/processor.h> | 24 | #include <asm/processor.h> |
| 25 | #include <asm/time.h> | 25 | #include <asm/time.h> |
| 26 | #include <asm/lppaca.h> | 26 | #include <asm/lppaca.h> |
| 27 | #include <asm/iSeries/ItLpQueue.h> | 27 | #include <asm/iseries/it_lp_queue.h> |
| 28 | #include <asm/iSeries/HvCallXm.h> | 28 | #include <asm/iseries/hv_call_xm.h> |
| 29 | 29 | ||
| 30 | #include "processor_vpd.h" | 30 | #include "processor_vpd.h" |
| 31 | #include "main_store.h" | 31 | #include "main_store.h" |
diff --git a/arch/powerpc/platforms/iseries/release_data.h b/arch/powerpc/platforms/iseries/release_data.h index c68b9c3e5caf..66189fd2e32d 100644 --- a/arch/powerpc/platforms/iseries/release_data.h +++ b/arch/powerpc/platforms/iseries/release_data.h | |||
| @@ -24,7 +24,7 @@ | |||
| 24 | * address of the OS's NACA). | 24 | * address of the OS's NACA). |
| 25 | */ | 25 | */ |
| 26 | #include <asm/types.h> | 26 | #include <asm/types.h> |
| 27 | #include <asm/naca.h> | 27 | #include "naca.h" |
| 28 | 28 | ||
| 29 | /* | 29 | /* |
| 30 | * When we IPL a secondary partition, we will check if if the | 30 | * When we IPL a secondary partition, we will check if if the |
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c index 1544c6f10a38..fda712b42168 100644 --- a/arch/powerpc/platforms/iseries/setup.c +++ b/arch/powerpc/platforms/iseries/setup.c | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #include <linux/kdev_t.h> | 27 | #include <linux/kdev_t.h> |
| 28 | #include <linux/major.h> | 28 | #include <linux/major.h> |
| 29 | #include <linux/root_dev.h> | 29 | #include <linux/root_dev.h> |
| 30 | #include <linux/kernel.h> | ||
| 30 | 31 | ||
| 31 | #include <asm/processor.h> | 32 | #include <asm/processor.h> |
| 32 | #include <asm/machdep.h> | 33 | #include <asm/machdep.h> |
| @@ -40,19 +41,19 @@ | |||
| 40 | #include <asm/firmware.h> | 41 | #include <asm/firmware.h> |
| 41 | 42 | ||
| 42 | #include <asm/time.h> | 43 | #include <asm/time.h> |
| 43 | #include <asm/naca.h> | ||
| 44 | #include <asm/paca.h> | 44 | #include <asm/paca.h> |
| 45 | #include <asm/cache.h> | 45 | #include <asm/cache.h> |
| 46 | #include <asm/sections.h> | 46 | #include <asm/sections.h> |
| 47 | #include <asm/abs_addr.h> | 47 | #include <asm/abs_addr.h> |
| 48 | #include <asm/iSeries/HvLpConfig.h> | 48 | #include <asm/iseries/hv_lp_config.h> |
| 49 | #include <asm/iSeries/HvCallEvent.h> | 49 | #include <asm/iseries/hv_call_event.h> |
| 50 | #include <asm/iSeries/HvCallXm.h> | 50 | #include <asm/iseries/hv_call_xm.h> |
| 51 | #include <asm/iSeries/ItLpQueue.h> | 51 | #include <asm/iseries/it_lp_queue.h> |
| 52 | #include <asm/iSeries/mf.h> | 52 | #include <asm/iseries/mf.h> |
| 53 | #include <asm/iSeries/HvLpEvent.h> | 53 | #include <asm/iseries/hv_lp_event.h> |
| 54 | #include <asm/iSeries/LparMap.h> | 54 | #include <asm/iseries/lpar_map.h> |
| 55 | 55 | ||
| 56 | #include "naca.h" | ||
| 56 | #include "setup.h" | 57 | #include "setup.h" |
| 57 | #include "irq.h" | 58 | #include "irq.h" |
| 58 | #include "vpd_areas.h" | 59 | #include "vpd_areas.h" |
| @@ -94,6 +95,8 @@ extern unsigned long iSeries_recal_titan; | |||
| 94 | 95 | ||
| 95 | static int mf_initialized; | 96 | static int mf_initialized; |
| 96 | 97 | ||
| 98 | static unsigned long cmd_mem_limit; | ||
| 99 | |||
| 97 | struct MemoryBlock { | 100 | struct MemoryBlock { |
| 98 | unsigned long absStart; | 101 | unsigned long absStart; |
| 99 | unsigned long absEnd; | 102 | unsigned long absEnd; |
| @@ -341,23 +344,6 @@ static void __init iSeries_init_early(void) | |||
| 341 | */ | 344 | */ |
| 342 | iommu_init_early_iSeries(); | 345 | iommu_init_early_iSeries(); |
| 343 | 346 | ||
| 344 | iSeries_get_cmdline(); | ||
| 345 | |||
| 346 | /* Save unparsed command line copy for /proc/cmdline */ | ||
| 347 | strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE); | ||
| 348 | |||
| 349 | /* Parse early parameters, in particular mem=x */ | ||
| 350 | parse_early_param(); | ||
| 351 | |||
| 352 | if (memory_limit) { | ||
| 353 | if (memory_limit < systemcfg->physicalMemorySize) | ||
| 354 | systemcfg->physicalMemorySize = memory_limit; | ||
| 355 | else { | ||
| 356 | printk("Ignoring mem=%lu >= ram_top.\n", memory_limit); | ||
| 357 | memory_limit = 0; | ||
| 358 | } | ||
| 359 | } | ||
| 360 | |||
| 361 | /* Initialize machine-dependency vectors */ | 347 | /* Initialize machine-dependency vectors */ |
| 362 | #ifdef CONFIG_SMP | 348 | #ifdef CONFIG_SMP |
| 363 | smp_init_iSeries(); | 349 | smp_init_iSeries(); |
| @@ -971,6 +957,8 @@ void build_flat_dt(struct iseries_flat_dt *dt) | |||
| 971 | /* /chosen */ | 957 | /* /chosen */ |
| 972 | dt_start_node(dt, "chosen"); | 958 | dt_start_node(dt, "chosen"); |
| 973 | dt_prop_u32(dt, "linux,platform", PLATFORM_ISERIES_LPAR); | 959 | dt_prop_u32(dt, "linux,platform", PLATFORM_ISERIES_LPAR); |
| 960 | if (cmd_mem_limit) | ||
| 961 | dt_prop_u64(dt, "linux,memory-limit", cmd_mem_limit); | ||
| 974 | dt_end_node(dt); | 962 | dt_end_node(dt); |
| 975 | 963 | ||
| 976 | dt_cpus(dt); | 964 | dt_cpus(dt); |
| @@ -990,7 +978,27 @@ void * __init iSeries_early_setup(void) | |||
| 990 | */ | 978 | */ |
| 991 | build_iSeries_Memory_Map(); | 979 | build_iSeries_Memory_Map(); |
| 992 | 980 | ||
| 981 | iSeries_get_cmdline(); | ||
| 982 | |||
| 983 | /* Save unparsed command line copy for /proc/cmdline */ | ||
| 984 | strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE); | ||
| 985 | |||
| 986 | /* Parse early parameters, in particular mem=x */ | ||
| 987 | parse_early_param(); | ||
| 988 | |||
| 993 | build_flat_dt(&iseries_dt); | 989 | build_flat_dt(&iseries_dt); |
| 994 | 990 | ||
| 995 | return (void *) __pa(&iseries_dt); | 991 | return (void *) __pa(&iseries_dt); |
| 996 | } | 992 | } |
| 993 | |||
| 994 | /* | ||
| 995 | * On iSeries we just parse the mem=X option from the command line. | ||
| 996 | * On pSeries it's a bit more complicated, see prom_init_mem() | ||
| 997 | */ | ||
| 998 | static int __init early_parsemem(char *p) | ||
| 999 | { | ||
| 1000 | if (p) | ||
| 1001 | cmd_mem_limit = ALIGN(memparse(p, &p), PAGE_SIZE); | ||
| 1002 | return 0; | ||
| 1003 | } | ||
| 1004 | early_param("mem", early_parsemem); | ||
diff --git a/arch/powerpc/platforms/iseries/smp.c b/arch/powerpc/platforms/iseries/smp.c index f720916682f6..3336bad67724 100644 --- a/arch/powerpc/platforms/iseries/smp.c +++ b/arch/powerpc/platforms/iseries/smp.c | |||
| @@ -38,7 +38,7 @@ | |||
| 38 | #include <asm/io.h> | 38 | #include <asm/io.h> |
| 39 | #include <asm/smp.h> | 39 | #include <asm/smp.h> |
| 40 | #include <asm/paca.h> | 40 | #include <asm/paca.h> |
| 41 | #include <asm/iSeries/HvCall.h> | 41 | #include <asm/iseries/hv_call.h> |
| 42 | #include <asm/time.h> | 42 | #include <asm/time.h> |
| 43 | #include <asm/ppcdebug.h> | 43 | #include <asm/ppcdebug.h> |
| 44 | #include <asm/machdep.h> | 44 | #include <asm/machdep.h> |
diff --git a/arch/powerpc/platforms/iseries/vio.c b/arch/powerpc/platforms/iseries/vio.c index c0f7d2e9153f..c27a66876c2c 100644 --- a/arch/powerpc/platforms/iseries/vio.c +++ b/arch/powerpc/platforms/iseries/vio.c | |||
| @@ -17,10 +17,10 @@ | |||
| 17 | #include <asm/tce.h> | 17 | #include <asm/tce.h> |
| 18 | #include <asm/abs_addr.h> | 18 | #include <asm/abs_addr.h> |
| 19 | #include <asm/page.h> | 19 | #include <asm/page.h> |
| 20 | #include <asm/iSeries/vio.h> | 20 | #include <asm/iseries/vio.h> |
| 21 | #include <asm/iSeries/HvTypes.h> | 21 | #include <asm/iseries/hv_types.h> |
| 22 | #include <asm/iSeries/HvLpConfig.h> | 22 | #include <asm/iseries/hv_lp_config.h> |
| 23 | #include <asm/iSeries/HvCallXm.h> | 23 | #include <asm/iseries/hv_call_xm.h> |
| 24 | 24 | ||
| 25 | struct device *iSeries_vio_dev = &vio_bus_device.dev; | 25 | struct device *iSeries_vio_dev = &vio_bus_device.dev; |
| 26 | EXPORT_SYMBOL(iSeries_vio_dev); | 26 | EXPORT_SYMBOL(iSeries_vio_dev); |
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c index c0c767bd37f1..fe97bfbf7463 100644 --- a/arch/powerpc/platforms/iseries/viopath.c +++ b/arch/powerpc/platforms/iseries/viopath.c | |||
| @@ -41,12 +41,12 @@ | |||
| 41 | 41 | ||
| 42 | #include <asm/system.h> | 42 | #include <asm/system.h> |
| 43 | #include <asm/uaccess.h> | 43 | #include <asm/uaccess.h> |
| 44 | #include <asm/iSeries/HvTypes.h> | 44 | #include <asm/iseries/hv_types.h> |
| 45 | #include <asm/iSeries/ItExtVpdPanel.h> | 45 | #include <asm/iseries/it_exp_vpd_panel.h> |
| 46 | #include <asm/iSeries/HvLpEvent.h> | 46 | #include <asm/iseries/hv_lp_event.h> |
| 47 | #include <asm/iSeries/HvLpConfig.h> | 47 | #include <asm/iseries/hv_lp_config.h> |
| 48 | #include <asm/iSeries/mf.h> | 48 | #include <asm/iseries/mf.h> |
| 49 | #include <asm/iSeries/vio.h> | 49 | #include <asm/iseries/vio.h> |
| 50 | 50 | ||
| 51 | /* Status of the path to each other partition in the system. | 51 | /* Status of the path to each other partition in the system. |
| 52 | * This is overkill, since we will only ever establish connections | 52 | * This is overkill, since we will only ever establish connections |
diff --git a/arch/powerpc/platforms/iseries/vpdinfo.c b/arch/powerpc/platforms/iseries/vpdinfo.c index 9c318849dee7..23a6d1e5b429 100644 --- a/arch/powerpc/platforms/iseries/vpdinfo.c +++ b/arch/powerpc/platforms/iseries/vpdinfo.c | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | #include <asm/resource.h> | 32 | #include <asm/resource.h> |
| 33 | #include <asm/abs_addr.h> | 33 | #include <asm/abs_addr.h> |
| 34 | #include <asm/pci-bridge.h> | 34 | #include <asm/pci-bridge.h> |
| 35 | #include <asm/iSeries/HvTypes.h> | 35 | #include <asm/iseries/hv_types.h> |
| 36 | 36 | ||
| 37 | #include "pci.h" | 37 | #include "pci.h" |
| 38 | #include "call_pci.h" | 38 | #include "call_pci.h" |
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c index 0037a8c8c81f..83a49e80ac29 100644 --- a/arch/powerpc/platforms/powermac/pic.c +++ b/arch/powerpc/platforms/powermac/pic.c | |||
| @@ -576,7 +576,7 @@ void __init pmac_pic_init(void) | |||
| 576 | #endif /* CONFIG_PPC32 */ | 576 | #endif /* CONFIG_PPC32 */ |
| 577 | } | 577 | } |
| 578 | 578 | ||
| 579 | #ifdef CONFIG_PM | 579 | #if defined(CONFIG_PM) && defined(CONFIG_PPC32) |
| 580 | /* | 580 | /* |
| 581 | * These procedures are used in implementing sleep on the powerbooks. | 581 | * These procedures are used in implementing sleep on the powerbooks. |
| 582 | * sleep_save_intrs() saves the states of all interrupt enables | 582 | * sleep_save_intrs() saves the states of all interrupt enables |
| @@ -643,7 +643,7 @@ static int pmacpic_resume(struct sys_device *sysdev) | |||
| 643 | return 0; | 643 | return 0; |
| 644 | } | 644 | } |
| 645 | 645 | ||
| 646 | #endif /* CONFIG_PM */ | 646 | #endif /* CONFIG_PM && CONFIG_PPC32 */ |
| 647 | 647 | ||
| 648 | static struct sysdev_class pmacpic_sysclass = { | 648 | static struct sysdev_class pmacpic_sysclass = { |
| 649 | set_kset_name("pmac_pic"), | 649 | set_kset_name("pmac_pic"), |
| @@ -655,10 +655,10 @@ static struct sys_device device_pmacpic = { | |||
| 655 | }; | 655 | }; |
| 656 | 656 | ||
| 657 | static struct sysdev_driver driver_pmacpic = { | 657 | static struct sysdev_driver driver_pmacpic = { |
| 658 | #ifdef CONFIG_PM | 658 | #if defined(CONFIG_PM) && defined(CONFIG_PPC32) |
| 659 | .suspend = &pmacpic_suspend, | 659 | .suspend = &pmacpic_suspend, |
| 660 | .resume = &pmacpic_resume, | 660 | .resume = &pmacpic_resume, |
| 661 | #endif /* CONFIG_PM */ | 661 | #endif /* CONFIG_PM && CONFIG_PPC32 */ |
| 662 | }; | 662 | }; |
| 663 | 663 | ||
| 664 | static int __init init_pmacpic_sysfs(void) | 664 | static int __init init_pmacpic_sysfs(void) |
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c index 6f62af597291..80b58c1ec412 100644 --- a/arch/powerpc/platforms/powermac/setup.c +++ b/arch/powerpc/platforms/powermac/setup.c | |||
| @@ -75,6 +75,7 @@ | |||
| 75 | #include <asm/smu.h> | 75 | #include <asm/smu.h> |
| 76 | #include <asm/pmc.h> | 76 | #include <asm/pmc.h> |
| 77 | #include <asm/mpic.h> | 77 | #include <asm/mpic.h> |
| 78 | #include <asm/lmb.h> | ||
| 78 | 79 | ||
| 79 | #include "pmac.h" | 80 | #include "pmac.h" |
| 80 | 81 | ||
| @@ -350,7 +351,7 @@ void __init pmac_setup_arch(void) | |||
| 350 | find_via_pmu(); | 351 | find_via_pmu(); |
| 351 | smu_init(); | 352 | smu_init(); |
| 352 | 353 | ||
| 353 | #ifdef CONFIG_NVRAM | 354 | #if defined(CONFIG_NVRAM) || defined(CONFIG_PPC64) |
| 354 | pmac_nvram_init(); | 355 | pmac_nvram_init(); |
| 355 | #endif | 356 | #endif |
| 356 | 357 | ||
diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig index 2d57f588151d..e3fc3407bb1f 100644 --- a/arch/powerpc/platforms/pseries/Kconfig +++ b/arch/powerpc/platforms/pseries/Kconfig | |||
| @@ -21,15 +21,6 @@ config EEH | |||
| 21 | depends on PPC_PSERIES | 21 | depends on PPC_PSERIES |
| 22 | default y if !EMBEDDED | 22 | default y if !EMBEDDED |
| 23 | 23 | ||
| 24 | config RTAS_PROC | ||
| 25 | bool "Proc interface to RTAS" | ||
| 26 | depends on PPC_RTAS | ||
| 27 | default y | ||
| 28 | |||
| 29 | config RTAS_FLASH | ||
| 30 | tristate "Firmware flash interface" | ||
| 31 | depends on PPC64 && RTAS_PROC | ||
| 32 | |||
| 33 | config SCANLOG | 24 | config SCANLOG |
| 34 | tristate "Scanlog dump interface" | 25 | tristate "Scanlog dump interface" |
| 35 | depends on RTAS_PROC && PPC_PSERIES | 26 | depends on RTAS_PROC && PPC_PSERIES |
diff --git a/arch/powerpc/platforms/pseries/Makefile b/arch/powerpc/platforms/pseries/Makefile index 5ef494e3a70f..b9938fece781 100644 --- a/arch/powerpc/platforms/pseries/Makefile +++ b/arch/powerpc/platforms/pseries/Makefile | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | obj-y := pci.o lpar.o hvCall.o nvram.o reconfig.o \ | 1 | obj-y := pci.o lpar.o hvCall.o nvram.o reconfig.o \ |
| 2 | setup.o iommu.o rtas-fw.o ras.o | 2 | setup.o iommu.o ras.o rtasd.o |
| 3 | obj-$(CONFIG_SMP) += smp.o | 3 | obj-$(CONFIG_SMP) += smp.o |
| 4 | obj-$(CONFIG_IBMVIO) += vio.o | 4 | obj-$(CONFIG_IBMVIO) += vio.o |
| 5 | obj-$(CONFIG_XICS) += xics.o | 5 | obj-$(CONFIG_XICS) += xics.o |
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index 9e90d41131d8..513e27231493 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c | |||
| @@ -42,13 +42,14 @@ | |||
| 42 | #include <asm/pci-bridge.h> | 42 | #include <asm/pci-bridge.h> |
| 43 | #include <asm/machdep.h> | 43 | #include <asm/machdep.h> |
| 44 | #include <asm/abs_addr.h> | 44 | #include <asm/abs_addr.h> |
| 45 | #include <asm/plpar_wrappers.h> | ||
| 46 | #include <asm/pSeries_reconfig.h> | 45 | #include <asm/pSeries_reconfig.h> |
| 47 | #include <asm/systemcfg.h> | 46 | #include <asm/systemcfg.h> |
| 48 | #include <asm/firmware.h> | 47 | #include <asm/firmware.h> |
| 49 | #include <asm/tce.h> | 48 | #include <asm/tce.h> |
| 50 | #include <asm/ppc-pci.h> | 49 | #include <asm/ppc-pci.h> |
| 51 | 50 | ||
| 51 | #include "plpar_wrappers.h" | ||
| 52 | |||
| 52 | #define DBG(fmt...) | 53 | #define DBG(fmt...) |
| 53 | 54 | ||
| 54 | extern int is_python(struct device_node *); | 55 | extern int is_python(struct device_node *); |
| @@ -498,7 +499,7 @@ static int iommu_reconfig_notifier(struct notifier_block *nb, unsigned long acti | |||
| 498 | 499 | ||
| 499 | switch (action) { | 500 | switch (action) { |
| 500 | case PSERIES_RECONFIG_REMOVE: | 501 | case PSERIES_RECONFIG_REMOVE: |
| 501 | if (pci->iommu_table && | 502 | if (pci && pci->iommu_table && |
| 502 | get_property(np, "ibm,dma-window", NULL)) | 503 | get_property(np, "ibm,dma-window", NULL)) |
| 503 | iommu_free_table(np); | 504 | iommu_free_table(np); |
| 504 | break; | 505 | break; |
diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c index 268d8362dde7..e384a5a91796 100644 --- a/arch/powerpc/platforms/pseries/lpar.c +++ b/arch/powerpc/platforms/pseries/lpar.c | |||
| @@ -38,7 +38,8 @@ | |||
| 38 | #include <asm/prom.h> | 38 | #include <asm/prom.h> |
| 39 | #include <asm/abs_addr.h> | 39 | #include <asm/abs_addr.h> |
| 40 | #include <asm/cputable.h> | 40 | #include <asm/cputable.h> |
| 41 | #include <asm/plpar_wrappers.h> | 41 | |
| 42 | #include "plpar_wrappers.h" | ||
| 42 | 43 | ||
| 43 | #ifdef DEBUG | 44 | #ifdef DEBUG |
| 44 | #define DBG(fmt...) udbg_printf(fmt) | 45 | #define DBG(fmt...) udbg_printf(fmt) |
| @@ -260,22 +261,18 @@ out: | |||
| 260 | void vpa_init(int cpu) | 261 | void vpa_init(int cpu) |
| 261 | { | 262 | { |
| 262 | int hwcpu = get_hard_smp_processor_id(cpu); | 263 | int hwcpu = get_hard_smp_processor_id(cpu); |
| 263 | unsigned long vpa = (unsigned long)&(paca[cpu].lppaca); | 264 | unsigned long vpa = __pa(&paca[cpu].lppaca); |
| 264 | long ret; | 265 | long ret; |
| 265 | unsigned long flags; | ||
| 266 | |||
| 267 | /* Register the Virtual Processor Area (VPA) */ | ||
| 268 | flags = 1UL << (63 - 18); | ||
| 269 | 266 | ||
| 270 | if (cpu_has_feature(CPU_FTR_ALTIVEC)) | 267 | if (cpu_has_feature(CPU_FTR_ALTIVEC)) |
| 271 | paca[cpu].lppaca.vmxregs_in_use = 1; | 268 | paca[cpu].lppaca.vmxregs_in_use = 1; |
| 272 | 269 | ||
| 273 | ret = register_vpa(flags, hwcpu, __pa(vpa)); | 270 | ret = register_vpa(hwcpu, vpa); |
| 274 | 271 | ||
| 275 | if (ret) | 272 | if (ret) |
| 276 | printk(KERN_ERR "WARNING: vpa_init: VPA registration for " | 273 | printk(KERN_ERR "WARNING: vpa_init: VPA registration for " |
| 277 | "cpu %d (hw %d) of area %lx returns %ld\n", | 274 | "cpu %d (hw %d) of area %lx returns %ld\n", |
| 278 | cpu, hwcpu, __pa(vpa), ret); | 275 | cpu, hwcpu, vpa, ret); |
| 279 | } | 276 | } |
| 280 | 277 | ||
| 281 | long pSeries_lpar_hpte_insert(unsigned long hpte_group, | 278 | long pSeries_lpar_hpte_insert(unsigned long hpte_group, |
diff --git a/arch/powerpc/platforms/pseries/plpar_wrappers.h b/arch/powerpc/platforms/pseries/plpar_wrappers.h new file mode 100644 index 000000000000..382f8c5b0e7c --- /dev/null +++ b/arch/powerpc/platforms/pseries/plpar_wrappers.h | |||
| @@ -0,0 +1,120 @@ | |||
| 1 | #ifndef _PSERIES_PLPAR_WRAPPERS_H | ||
| 2 | #define _PSERIES_PLPAR_WRAPPERS_H | ||
| 3 | |||
| 4 | #include <asm/hvcall.h> | ||
| 5 | |||
| 6 | static inline long poll_pending(void) | ||
| 7 | { | ||
| 8 | unsigned long dummy; | ||
| 9 | return plpar_hcall(H_POLL_PENDING, 0, 0, 0, 0, &dummy, &dummy, &dummy); | ||
| 10 | } | ||
| 11 | |||
| 12 | static inline long prod_processor(void) | ||
| 13 | { | ||
| 14 | plpar_hcall_norets(H_PROD); | ||
| 15 | return 0; | ||
| 16 | } | ||
| 17 | |||
| 18 | static inline long cede_processor(void) | ||
| 19 | { | ||
| 20 | plpar_hcall_norets(H_CEDE); | ||
| 21 | return 0; | ||
| 22 | } | ||
| 23 | |||
| 24 | static inline long vpa_call(unsigned long flags, unsigned long cpu, | ||
| 25 | unsigned long vpa) | ||
| 26 | { | ||
| 27 | /* flags are in bits 16-18 (counting from most significant bit) */ | ||
| 28 | flags = flags << (63 - 18); | ||
| 29 | |||
| 30 | return plpar_hcall_norets(H_REGISTER_VPA, flags, cpu, vpa); | ||
| 31 | } | ||
| 32 | |||
| 33 | static inline long unregister_vpa(unsigned long cpu, unsigned long vpa) | ||
| 34 | { | ||
| 35 | return vpa_call(0x5, cpu, vpa); | ||
| 36 | } | ||
| 37 | |||
| 38 | static inline long register_vpa(unsigned long cpu, unsigned long vpa) | ||
| 39 | { | ||
| 40 | return vpa_call(0x1, cpu, vpa); | ||
| 41 | } | ||
| 42 | |||
| 43 | extern void vpa_init(int cpu); | ||
| 44 | |||
| 45 | static inline long plpar_pte_remove(unsigned long flags, unsigned long ptex, | ||
| 46 | unsigned long avpn, unsigned long *old_pteh_ret, | ||
| 47 | unsigned long *old_ptel_ret) | ||
| 48 | { | ||
| 49 | unsigned long dummy; | ||
| 50 | return plpar_hcall(H_REMOVE, flags, ptex, avpn, 0, old_pteh_ret, | ||
| 51 | old_ptel_ret, &dummy); | ||
| 52 | } | ||
| 53 | |||
| 54 | static inline long plpar_pte_read(unsigned long flags, unsigned long ptex, | ||
| 55 | unsigned long *old_pteh_ret, unsigned long *old_ptel_ret) | ||
| 56 | { | ||
| 57 | unsigned long dummy; | ||
| 58 | return plpar_hcall(H_READ, flags, ptex, 0, 0, old_pteh_ret, | ||
| 59 | old_ptel_ret, &dummy); | ||
| 60 | } | ||
| 61 | |||
| 62 | static inline long plpar_pte_protect(unsigned long flags, unsigned long ptex, | ||
| 63 | unsigned long avpn) | ||
| 64 | { | ||
| 65 | return plpar_hcall_norets(H_PROTECT, flags, ptex, avpn); | ||
| 66 | } | ||
| 67 | |||
| 68 | static inline long plpar_tce_get(unsigned long liobn, unsigned long ioba, | ||
| 69 | unsigned long *tce_ret) | ||
| 70 | { | ||
| 71 | unsigned long dummy; | ||
| 72 | return plpar_hcall(H_GET_TCE, liobn, ioba, 0, 0, tce_ret, &dummy, | ||
| 73 | &dummy); | ||
| 74 | } | ||
| 75 | |||
| 76 | static inline long plpar_tce_put(unsigned long liobn, unsigned long ioba, | ||
| 77 | unsigned long tceval) | ||
| 78 | { | ||
| 79 | return plpar_hcall_norets(H_PUT_TCE, liobn, ioba, tceval); | ||
| 80 | } | ||
| 81 | |||
| 82 | static inline long plpar_tce_put_indirect(unsigned long liobn, | ||
| 83 | unsigned long ioba, unsigned long page, unsigned long count) | ||
| 84 | { | ||
| 85 | return plpar_hcall_norets(H_PUT_TCE_INDIRECT, liobn, ioba, page, count); | ||
| 86 | } | ||
| 87 | |||
| 88 | static inline long plpar_tce_stuff(unsigned long liobn, unsigned long ioba, | ||
| 89 | unsigned long tceval, unsigned long count) | ||
| 90 | { | ||
| 91 | return plpar_hcall_norets(H_STUFF_TCE, liobn, ioba, tceval, count); | ||
| 92 | } | ||
| 93 | |||
| 94 | static inline long plpar_get_term_char(unsigned long termno, | ||
| 95 | unsigned long *len_ret, char *buf_ret) | ||
| 96 | { | ||
| 97 | unsigned long *lbuf = (unsigned long *)buf_ret; /* TODO: alignment? */ | ||
| 98 | return plpar_hcall(H_GET_TERM_CHAR, termno, 0, 0, 0, len_ret, | ||
| 99 | lbuf + 0, lbuf + 1); | ||
| 100 | } | ||
| 101 | |||
| 102 | static inline long plpar_put_term_char(unsigned long termno, unsigned long len, | ||
| 103 | const char *buffer) | ||
| 104 | { | ||
| 105 | unsigned long *lbuf = (unsigned long *)buffer; /* TODO: alignment? */ | ||
| 106 | return plpar_hcall_norets(H_PUT_TERM_CHAR, termno, len, lbuf[0], | ||
| 107 | lbuf[1]); | ||
| 108 | } | ||
| 109 | |||
| 110 | static inline long plpar_set_xdabr(unsigned long address, unsigned long flags) | ||
| 111 | { | ||
| 112 | return plpar_hcall_norets(H_SET_XDABR, address, flags); | ||
| 113 | } | ||
| 114 | |||
| 115 | static inline long plpar_set_dabr(unsigned long val) | ||
| 116 | { | ||
| 117 | return plpar_hcall_norets(H_SET_DABR, val); | ||
| 118 | } | ||
| 119 | |||
| 120 | #endif /* _PSERIES_PLPAR_WRAPPERS_H */ | ||
diff --git a/arch/powerpc/platforms/pseries/rtas-fw.c b/arch/powerpc/platforms/pseries/rtas-fw.c deleted file mode 100644 index 15d81d758ca0..000000000000 --- a/arch/powerpc/platforms/pseries/rtas-fw.c +++ /dev/null | |||
| @@ -1,138 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * | ||
| 3 | * Procedures for firmware flash updates on pSeries systems. | ||
| 4 | * | ||
| 5 | * Peter Bergner, IBM March 2001. | ||
| 6 | * Copyright (C) 2001 IBM. | ||
| 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 | ||
| 10 | * as published by the Free Software Foundation; either version | ||
| 11 | * 2 of the License, or (at your option) any later version. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <stdarg.h> | ||
| 15 | #include <linux/kernel.h> | ||
| 16 | #include <linux/types.h> | ||
| 17 | #include <linux/spinlock.h> | ||
| 18 | #include <linux/module.h> | ||
| 19 | #include <linux/init.h> | ||
| 20 | |||
| 21 | #include <asm/prom.h> | ||
| 22 | #include <asm/rtas.h> | ||
| 23 | #include <asm/semaphore.h> | ||
| 24 | #include <asm/machdep.h> | ||
| 25 | #include <asm/page.h> | ||
| 26 | #include <asm/param.h> | ||
| 27 | #include <asm/system.h> | ||
| 28 | #include <asm/abs_addr.h> | ||
| 29 | #include <asm/udbg.h> | ||
| 30 | #include <asm/delay.h> | ||
| 31 | #include <asm/uaccess.h> | ||
| 32 | #include <asm/systemcfg.h> | ||
| 33 | |||
| 34 | #include "rtas-fw.h" | ||
| 35 | |||
| 36 | struct flash_block_list_header rtas_firmware_flash_list = {0, NULL}; | ||
| 37 | |||
| 38 | #define FLASH_BLOCK_LIST_VERSION (1UL) | ||
| 39 | |||
| 40 | static void rtas_flash_firmware(void) | ||
| 41 | { | ||
| 42 | unsigned long image_size; | ||
| 43 | struct flash_block_list *f, *next, *flist; | ||
| 44 | unsigned long rtas_block_list; | ||
| 45 | int i, status, update_token; | ||
| 46 | |||
| 47 | update_token = rtas_token("ibm,update-flash-64-and-reboot"); | ||
| 48 | if (update_token == RTAS_UNKNOWN_SERVICE) { | ||
| 49 | printk(KERN_ALERT "FLASH: ibm,update-flash-64-and-reboot is not available -- not a service partition?\n"); | ||
| 50 | printk(KERN_ALERT "FLASH: firmware will not be flashed\n"); | ||
| 51 | return; | ||
| 52 | } | ||
| 53 | |||
| 54 | /* NOTE: the "first" block list is a global var with no data | ||
| 55 | * blocks in the kernel data segment. We do this because | ||
| 56 | * we want to ensure this block_list addr is under 4GB. | ||
| 57 | */ | ||
| 58 | rtas_firmware_flash_list.num_blocks = 0; | ||
| 59 | flist = (struct flash_block_list *)&rtas_firmware_flash_list; | ||
| 60 | rtas_block_list = virt_to_abs(flist); | ||
| 61 | if (rtas_block_list >= 4UL*1024*1024*1024) { | ||
| 62 | printk(KERN_ALERT "FLASH: kernel bug...flash list header addr above 4GB\n"); | ||
| 63 | return; | ||
| 64 | } | ||
| 65 | |||
| 66 | printk(KERN_ALERT "FLASH: preparing saved firmware image for flash\n"); | ||
| 67 | /* Update the block_list in place. */ | ||
| 68 | image_size = 0; | ||
| 69 | for (f = flist; f; f = next) { | ||
| 70 | /* Translate data addrs to absolute */ | ||
| 71 | for (i = 0; i < f->num_blocks; i++) { | ||
| 72 | f->blocks[i].data = (char *)virt_to_abs(f->blocks[i].data); | ||
| 73 | image_size += f->blocks[i].length; | ||
| 74 | } | ||
| 75 | next = f->next; | ||
| 76 | /* Don't translate NULL pointer for last entry */ | ||
| 77 | if (f->next) | ||
| 78 | f->next = (struct flash_block_list *)virt_to_abs(f->next); | ||
| 79 | else | ||
| 80 | f->next = NULL; | ||
| 81 | /* make num_blocks into the version/length field */ | ||
| 82 | f->num_blocks = (FLASH_BLOCK_LIST_VERSION << 56) | ((f->num_blocks+1)*16); | ||
| 83 | } | ||
| 84 | |||
| 85 | printk(KERN_ALERT "FLASH: flash image is %ld bytes\n", image_size); | ||
| 86 | printk(KERN_ALERT "FLASH: performing flash and reboot\n"); | ||
| 87 | rtas_progress("Flashing \n", 0x0); | ||
| 88 | rtas_progress("Please Wait... ", 0x0); | ||
| 89 | printk(KERN_ALERT "FLASH: this will take several minutes. Do not power off!\n"); | ||
| 90 | status = rtas_call(update_token, 1, 1, NULL, rtas_block_list); | ||
| 91 | switch (status) { /* should only get "bad" status */ | ||
| 92 | case 0: | ||
| 93 | printk(KERN_ALERT "FLASH: success\n"); | ||
| 94 | break; | ||
| 95 | case -1: | ||
| 96 | printk(KERN_ALERT "FLASH: hardware error. Firmware may not be not flashed\n"); | ||
| 97 | break; | ||
| 98 | case -3: | ||
| 99 | printk(KERN_ALERT "FLASH: image is corrupt or not correct for this platform. Firmware not flashed\n"); | ||
| 100 | break; | ||
| 101 | case -4: | ||
| 102 | printk(KERN_ALERT "FLASH: flash failed when partially complete. System may not reboot\n"); | ||
| 103 | break; | ||
| 104 | default: | ||
| 105 | printk(KERN_ALERT "FLASH: unknown flash return code %d\n", status); | ||
| 106 | break; | ||
| 107 | } | ||
| 108 | } | ||
| 109 | |||
| 110 | void rtas_flash_bypass_warning(void) | ||
| 111 | { | ||
| 112 | printk(KERN_ALERT "FLASH: firmware flash requires a reboot\n"); | ||
| 113 | printk(KERN_ALERT "FLASH: the firmware image will NOT be flashed\n"); | ||
| 114 | } | ||
| 115 | |||
| 116 | |||
| 117 | void rtas_fw_restart(char *cmd) | ||
| 118 | { | ||
| 119 | if (rtas_firmware_flash_list.next) | ||
| 120 | rtas_flash_firmware(); | ||
| 121 | rtas_restart(cmd); | ||
| 122 | } | ||
| 123 | |||
| 124 | void rtas_fw_power_off(void) | ||
| 125 | { | ||
| 126 | if (rtas_firmware_flash_list.next) | ||
| 127 | rtas_flash_bypass_warning(); | ||
| 128 | rtas_power_off(); | ||
| 129 | } | ||
| 130 | |||
| 131 | void rtas_fw_halt(void) | ||
| 132 | { | ||
| 133 | if (rtas_firmware_flash_list.next) | ||
| 134 | rtas_flash_bypass_warning(); | ||
| 135 | rtas_halt(); | ||
| 136 | } | ||
| 137 | |||
| 138 | EXPORT_SYMBOL(rtas_firmware_flash_list); | ||
diff --git a/arch/powerpc/platforms/pseries/rtas-fw.h b/arch/powerpc/platforms/pseries/rtas-fw.h deleted file mode 100644 index e70fa69974a3..000000000000 --- a/arch/powerpc/platforms/pseries/rtas-fw.h +++ /dev/null | |||
| @@ -1,3 +0,0 @@ | |||
| 1 | void rtas_fw_restart(char *cmd); | ||
| 2 | void rtas_fw_power_off(void); | ||
| 3 | void rtas_fw_halt(void); | ||
diff --git a/arch/ppc64/kernel/rtasd.c b/arch/powerpc/platforms/pseries/rtasd.c index e26b0420b6dd..e26b0420b6dd 100644 --- a/arch/ppc64/kernel/rtasd.c +++ b/arch/powerpc/platforms/pseries/rtasd.c | |||
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index 10cb0f2d9b5b..65bee939eecc 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c | |||
| @@ -58,7 +58,6 @@ | |||
| 58 | #include <asm/irq.h> | 58 | #include <asm/irq.h> |
| 59 | #include <asm/time.h> | 59 | #include <asm/time.h> |
| 60 | #include <asm/nvram.h> | 60 | #include <asm/nvram.h> |
| 61 | #include <asm/plpar_wrappers.h> | ||
| 62 | #include "xics.h" | 61 | #include "xics.h" |
| 63 | #include <asm/firmware.h> | 62 | #include <asm/firmware.h> |
| 64 | #include <asm/pmc.h> | 63 | #include <asm/pmc.h> |
| @@ -67,7 +66,7 @@ | |||
| 67 | #include <asm/i8259.h> | 66 | #include <asm/i8259.h> |
| 68 | #include <asm/udbg.h> | 67 | #include <asm/udbg.h> |
| 69 | 68 | ||
| 70 | #include "rtas-fw.h" | 69 | #include "plpar_wrappers.h" |
| 71 | 70 | ||
| 72 | #ifdef DEBUG | 71 | #ifdef DEBUG |
| 73 | #define DBG(fmt...) udbg_printf(fmt) | 72 | #define DBG(fmt...) udbg_printf(fmt) |
| @@ -352,6 +351,16 @@ static void pSeries_mach_cpu_die(void) | |||
| 352 | for(;;); | 351 | for(;;); |
| 353 | } | 352 | } |
| 354 | 353 | ||
| 354 | static int pseries_set_dabr(unsigned long dabr) | ||
| 355 | { | ||
| 356 | if (firmware_has_feature(FW_FEATURE_XDABR)) { | ||
| 357 | /* We want to catch accesses from kernel and userspace */ | ||
| 358 | return plpar_set_xdabr(dabr, H_DABRX_KERNEL | H_DABRX_USER); | ||
| 359 | } | ||
| 360 | |||
| 361 | return plpar_set_dabr(dabr); | ||
| 362 | } | ||
| 363 | |||
| 355 | 364 | ||
| 356 | /* | 365 | /* |
| 357 | * Early initialization. Relocation is on but do not reference unbolted pages | 366 | * Early initialization. Relocation is on but do not reference unbolted pages |
| @@ -387,6 +396,8 @@ static void __init pSeries_init_early(void) | |||
| 387 | DBG("Hello World !\n"); | 396 | DBG("Hello World !\n"); |
| 388 | } | 397 | } |
| 389 | 398 | ||
| 399 | if (firmware_has_feature(FW_FEATURE_XDABR | FW_FEATURE_DABR)) | ||
| 400 | ppc_md.set_dabr = pseries_set_dabr; | ||
| 390 | 401 | ||
| 391 | iommu_init_early_pSeries(); | 402 | iommu_init_early_pSeries(); |
| 392 | 403 | ||
| @@ -591,9 +602,9 @@ struct machdep_calls __initdata pSeries_md = { | |||
| 591 | .pcibios_fixup = pSeries_final_fixup, | 602 | .pcibios_fixup = pSeries_final_fixup, |
| 592 | .pci_probe_mode = pSeries_pci_probe_mode, | 603 | .pci_probe_mode = pSeries_pci_probe_mode, |
| 593 | .irq_bus_setup = pSeries_irq_bus_setup, | 604 | .irq_bus_setup = pSeries_irq_bus_setup, |
| 594 | .restart = rtas_fw_restart, | 605 | .restart = rtas_restart, |
| 595 | .power_off = rtas_fw_power_off, | 606 | .power_off = rtas_power_off, |
| 596 | .halt = rtas_fw_halt, | 607 | .halt = rtas_halt, |
| 597 | .panic = rtas_os_term, | 608 | .panic = rtas_os_term, |
| 598 | .cpu_die = pSeries_mach_cpu_die, | 609 | .cpu_die = pSeries_mach_cpu_die, |
| 599 | .get_boot_time = rtas_get_boot_time, | 610 | .get_boot_time = rtas_get_boot_time, |
diff --git a/arch/powerpc/platforms/pseries/smp.c b/arch/powerpc/platforms/pseries/smp.c index 9c9458ddfc25..7a243e8ccd7e 100644 --- a/arch/powerpc/platforms/pseries/smp.c +++ b/arch/powerpc/platforms/pseries/smp.c | |||
| @@ -44,10 +44,11 @@ | |||
| 44 | #include <asm/firmware.h> | 44 | #include <asm/firmware.h> |
| 45 | #include <asm/system.h> | 45 | #include <asm/system.h> |
| 46 | #include <asm/rtas.h> | 46 | #include <asm/rtas.h> |
| 47 | #include <asm/plpar_wrappers.h> | ||
| 48 | #include <asm/pSeries_reconfig.h> | 47 | #include <asm/pSeries_reconfig.h> |
| 49 | #include <asm/mpic.h> | 48 | #include <asm/mpic.h> |
| 50 | 49 | ||
| 50 | #include "plpar_wrappers.h" | ||
| 51 | |||
| 51 | #ifdef DEBUG | 52 | #ifdef DEBUG |
| 52 | #define DBG(fmt...) udbg_printf(fmt) | 53 | #define DBG(fmt...) udbg_printf(fmt) |
| 53 | #else | 54 | #else |
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile index 8acd21dee05d..6b7efcfc352a 100644 --- a/arch/powerpc/sysdev/Makefile +++ b/arch/powerpc/sysdev/Makefile | |||
| @@ -5,3 +5,4 @@ obj-$(CONFIG_PPC_MPC106) += grackle.o | |||
| 5 | obj-$(CONFIG_BOOKE) += dcr.o | 5 | obj-$(CONFIG_BOOKE) += dcr.o |
| 6 | obj-$(CONFIG_40x) += dcr.o | 6 | obj-$(CONFIG_40x) += dcr.o |
| 7 | obj-$(CONFIG_U3_DART) += u3_iommu.o | 7 | obj-$(CONFIG_U3_DART) += u3_iommu.o |
| 8 | obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o | ||
diff --git a/arch/powerpc/sysdev/dart.h b/arch/powerpc/sysdev/dart.h new file mode 100644 index 000000000000..ea8f0d9eed8a --- /dev/null +++ b/arch/powerpc/sysdev/dart.h | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2004 Olof Johansson <olof@austin.ibm.com>, IBM Corporation | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License as published by | ||
| 6 | * the Free Software Foundation; either version 2 of the License, or | ||
| 7 | * (at your option) any later version. | ||
| 8 | * | ||
| 9 | * This program is distributed in the hope that it will be useful, | ||
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | * GNU General Public License for more details. | ||
| 13 | * | ||
| 14 | * You should have received a copy of the GNU General Public License | ||
| 15 | * along with this program; if not, write to the Free Software | ||
| 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 17 | */ | ||
| 18 | |||
| 19 | #ifndef _POWERPC_SYSDEV_DART_H | ||
| 20 | #define _POWERPC_SYSDEV_DART_H | ||
| 21 | |||
| 22 | |||
| 23 | /* physical base of DART registers */ | ||
| 24 | #define DART_BASE 0xf8033000UL | ||
| 25 | |||
| 26 | /* Offset from base to control register */ | ||
| 27 | #define DARTCNTL 0 | ||
| 28 | /* Offset from base to exception register */ | ||
| 29 | #define DARTEXCP 0x10 | ||
| 30 | /* Offset from base to TLB tag registers */ | ||
| 31 | #define DARTTAG 0x1000 | ||
| 32 | |||
| 33 | |||
| 34 | /* Control Register fields */ | ||
| 35 | |||
| 36 | /* base address of table (pfn) */ | ||
| 37 | #define DARTCNTL_BASE_MASK 0xfffff | ||
| 38 | #define DARTCNTL_BASE_SHIFT 12 | ||
| 39 | |||
| 40 | #define DARTCNTL_FLUSHTLB 0x400 | ||
| 41 | #define DARTCNTL_ENABLE 0x200 | ||
| 42 | |||
| 43 | /* size of table in pages */ | ||
| 44 | #define DARTCNTL_SIZE_MASK 0x1ff | ||
| 45 | #define DARTCNTL_SIZE_SHIFT 0 | ||
| 46 | |||
| 47 | |||
| 48 | /* DART table fields */ | ||
| 49 | |||
| 50 | #define DARTMAP_VALID 0x80000000 | ||
| 51 | #define DARTMAP_RPNMASK 0x00ffffff | ||
| 52 | |||
| 53 | |||
| 54 | #define DART_PAGE_SHIFT 12 | ||
| 55 | #define DART_PAGE_SIZE (1 << DART_PAGE_SHIFT) | ||
| 56 | #define DART_PAGE_FACTOR (PAGE_SHIFT - DART_PAGE_SHIFT) | ||
| 57 | |||
| 58 | |||
| 59 | #endif /* _POWERPC_SYSDEV_DART_H */ | ||
diff --git a/arch/ppc64/kernel/bpa_nvram.c b/arch/powerpc/sysdev/mmio_nvram.c index 06a119cfceb5..74e0d31a3559 100644 --- a/arch/ppc64/kernel/bpa_nvram.c +++ b/arch/powerpc/sysdev/mmio_nvram.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * NVRAM for CPBW | 2 | * memory mapped NVRAM |
| 3 | * | 3 | * |
| 4 | * (C) Copyright IBM Corp. 2005 | 4 | * (C) Copyright IBM Corp. 2005 |
| 5 | * | 5 | * |
| @@ -30,54 +30,54 @@ | |||
| 30 | #include <asm/nvram.h> | 30 | #include <asm/nvram.h> |
| 31 | #include <asm/prom.h> | 31 | #include <asm/prom.h> |
| 32 | 32 | ||
| 33 | static void __iomem *bpa_nvram_start; | 33 | static void __iomem *mmio_nvram_start; |
| 34 | static long bpa_nvram_len; | 34 | static long mmio_nvram_len; |
| 35 | static spinlock_t bpa_nvram_lock = SPIN_LOCK_UNLOCKED; | 35 | static spinlock_t mmio_nvram_lock = SPIN_LOCK_UNLOCKED; |
| 36 | 36 | ||
| 37 | static ssize_t bpa_nvram_read(char *buf, size_t count, loff_t *index) | 37 | static ssize_t mmio_nvram_read(char *buf, size_t count, loff_t *index) |
| 38 | { | 38 | { |
| 39 | unsigned long flags; | 39 | unsigned long flags; |
| 40 | 40 | ||
| 41 | if (*index >= bpa_nvram_len) | 41 | if (*index >= mmio_nvram_len) |
| 42 | return 0; | 42 | return 0; |
| 43 | if (*index + count > bpa_nvram_len) | 43 | if (*index + count > mmio_nvram_len) |
| 44 | count = bpa_nvram_len - *index; | 44 | count = mmio_nvram_len - *index; |
| 45 | 45 | ||
| 46 | spin_lock_irqsave(&bpa_nvram_lock, flags); | 46 | spin_lock_irqsave(&mmio_nvram_lock, flags); |
| 47 | 47 | ||
| 48 | memcpy_fromio(buf, bpa_nvram_start + *index, count); | 48 | memcpy_fromio(buf, mmio_nvram_start + *index, count); |
| 49 | 49 | ||
| 50 | spin_unlock_irqrestore(&bpa_nvram_lock, flags); | 50 | spin_unlock_irqrestore(&mmio_nvram_lock, flags); |
| 51 | 51 | ||
| 52 | *index += count; | 52 | *index += count; |
| 53 | return count; | 53 | return count; |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | static ssize_t bpa_nvram_write(char *buf, size_t count, loff_t *index) | 56 | static ssize_t mmio_nvram_write(char *buf, size_t count, loff_t *index) |
| 57 | { | 57 | { |
| 58 | unsigned long flags; | 58 | unsigned long flags; |
| 59 | 59 | ||
| 60 | if (*index >= bpa_nvram_len) | 60 | if (*index >= mmio_nvram_len) |
| 61 | return 0; | 61 | return 0; |
| 62 | if (*index + count > bpa_nvram_len) | 62 | if (*index + count > mmio_nvram_len) |
| 63 | count = bpa_nvram_len - *index; | 63 | count = mmio_nvram_len - *index; |
| 64 | 64 | ||
| 65 | spin_lock_irqsave(&bpa_nvram_lock, flags); | 65 | spin_lock_irqsave(&mmio_nvram_lock, flags); |
| 66 | 66 | ||
| 67 | memcpy_toio(bpa_nvram_start + *index, buf, count); | 67 | memcpy_toio(mmio_nvram_start + *index, buf, count); |
| 68 | 68 | ||
| 69 | spin_unlock_irqrestore(&bpa_nvram_lock, flags); | 69 | spin_unlock_irqrestore(&mmio_nvram_lock, flags); |
| 70 | 70 | ||
| 71 | *index += count; | 71 | *index += count; |
| 72 | return count; | 72 | return count; |
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | static ssize_t bpa_nvram_get_size(void) | 75 | static ssize_t mmio_nvram_get_size(void) |
| 76 | { | 76 | { |
| 77 | return bpa_nvram_len; | 77 | return mmio_nvram_len; |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | int __init bpa_nvram_init(void) | 80 | int __init mmio_nvram_init(void) |
| 81 | { | 81 | { |
| 82 | struct device_node *nvram_node; | 82 | struct device_node *nvram_node; |
| 83 | unsigned long *buffer; | 83 | unsigned long *buffer; |
| @@ -97,20 +97,20 @@ int __init bpa_nvram_init(void) | |||
| 97 | 97 | ||
| 98 | ret = -ENODEV; | 98 | ret = -ENODEV; |
| 99 | nvram_addr = buffer[0]; | 99 | nvram_addr = buffer[0]; |
| 100 | bpa_nvram_len = buffer[1]; | 100 | mmio_nvram_len = buffer[1]; |
| 101 | if ( (!bpa_nvram_len) || (!nvram_addr) ) | 101 | if ( (!mmio_nvram_len) || (!nvram_addr) ) |
| 102 | goto out; | 102 | goto out; |
| 103 | 103 | ||
| 104 | bpa_nvram_start = ioremap(nvram_addr, bpa_nvram_len); | 104 | mmio_nvram_start = ioremap(nvram_addr, mmio_nvram_len); |
| 105 | if (!bpa_nvram_start) | 105 | if (!mmio_nvram_start) |
| 106 | goto out; | 106 | goto out; |
| 107 | 107 | ||
| 108 | printk(KERN_INFO "BPA NVRAM, %luk mapped to %p\n", | 108 | printk(KERN_INFO "mmio NVRAM, %luk mapped to %p\n", |
| 109 | bpa_nvram_len >> 10, bpa_nvram_start); | 109 | mmio_nvram_len >> 10, mmio_nvram_start); |
| 110 | 110 | ||
| 111 | ppc_md.nvram_read = bpa_nvram_read; | 111 | ppc_md.nvram_read = mmio_nvram_read; |
| 112 | ppc_md.nvram_write = bpa_nvram_write; | 112 | ppc_md.nvram_write = mmio_nvram_write; |
| 113 | ppc_md.nvram_size = bpa_nvram_get_size; | 113 | ppc_md.nvram_size = mmio_nvram_get_size; |
| 114 | 114 | ||
| 115 | out: | 115 | out: |
| 116 | of_node_put(nvram_node); | 116 | of_node_put(nvram_node); |
diff --git a/arch/powerpc/sysdev/u3_iommu.c b/arch/powerpc/sysdev/u3_iommu.c index fba871a1bda5..607722178c1a 100644 --- a/arch/powerpc/sysdev/u3_iommu.c +++ b/arch/powerpc/sysdev/u3_iommu.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * arch/ppc64/kernel/u3_iommu.c | 2 | * arch/powerpc/sysdev/u3_iommu.c |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2004 Olof Johansson <olof@austin.ibm.com>, IBM Corporation | 4 | * Copyright (C) 2004 Olof Johansson <olof@austin.ibm.com>, IBM Corporation |
| 5 | * | 5 | * |
| @@ -44,9 +44,10 @@ | |||
| 44 | #include <asm/abs_addr.h> | 44 | #include <asm/abs_addr.h> |
| 45 | #include <asm/cacheflush.h> | 45 | #include <asm/cacheflush.h> |
| 46 | #include <asm/lmb.h> | 46 | #include <asm/lmb.h> |
| 47 | #include <asm/dart.h> | ||
| 48 | #include <asm/ppc-pci.h> | 47 | #include <asm/ppc-pci.h> |
| 49 | 48 | ||
| 49 | #include "dart.h" | ||
| 50 | |||
| 50 | extern int iommu_force_on; | 51 | extern int iommu_force_on; |
| 51 | 52 | ||
| 52 | /* Physical base address and size of the DART table */ | 53 | /* Physical base address and size of the DART table */ |
diff --git a/arch/ppc/8xx_io/commproc.c b/arch/ppc/8xx_io/commproc.c index b42789f8eb76..579cd40258b9 100644 --- a/arch/ppc/8xx_io/commproc.c +++ b/arch/ppc/8xx_io/commproc.c | |||
| @@ -388,9 +388,8 @@ void m8xx_cpm_dpinit(void) | |||
| 388 | 388 | ||
| 389 | /* | 389 | /* |
| 390 | * Allocate the requested size worth of DP memory. | 390 | * Allocate the requested size worth of DP memory. |
| 391 | * This function used to return an index into the DPRAM area. | 391 | * This function returns an offset into the DPRAM area. |
| 392 | * Now it returns the actuall physical address of that area. | 392 | * Use cpm_dpram_addr() to get the virtual address of the area. |
| 393 | * use m8xx_cpm_dpram_offset() to get the index | ||
| 394 | */ | 393 | */ |
| 395 | uint cpm_dpalloc(uint size, uint align) | 394 | uint cpm_dpalloc(uint size, uint align) |
| 396 | { | 395 | { |
diff --git a/arch/ppc/Makefile b/arch/ppc/Makefile index 94d5716fa7c3..e719a4933af1 100644 --- a/arch/ppc/Makefile +++ b/arch/ppc/Makefile | |||
| @@ -66,7 +66,8 @@ head-$(CONFIG_PPC_FPU) += arch/powerpc/kernel/fpu.o | |||
| 66 | core-y += arch/ppc/kernel/ arch/powerpc/kernel/ \ | 66 | core-y += arch/ppc/kernel/ arch/powerpc/kernel/ \ |
| 67 | arch/ppc/platforms/ \ | 67 | arch/ppc/platforms/ \ |
| 68 | arch/ppc/mm/ arch/ppc/lib/ \ | 68 | arch/ppc/mm/ arch/ppc/lib/ \ |
| 69 | arch/ppc/syslib/ arch/powerpc/sysdev/ | 69 | arch/ppc/syslib/ arch/powerpc/sysdev/ \ |
| 70 | arch/powerpc/lib/ | ||
| 70 | core-$(CONFIG_4xx) += arch/ppc/platforms/4xx/ | 71 | core-$(CONFIG_4xx) += arch/ppc/platforms/4xx/ |
| 71 | core-$(CONFIG_83xx) += arch/ppc/platforms/83xx/ | 72 | core-$(CONFIG_83xx) += arch/ppc/platforms/83xx/ |
| 72 | core-$(CONFIG_85xx) += arch/ppc/platforms/85xx/ | 73 | core-$(CONFIG_85xx) += arch/ppc/platforms/85xx/ |
diff --git a/arch/ppc/kernel/Makefile b/arch/ppc/kernel/Makefile index b35346df1e37..c610ca933a25 100644 --- a/arch/ppc/kernel/Makefile +++ b/arch/ppc/kernel/Makefile | |||
| @@ -45,7 +45,6 @@ obj-$(CONFIG_MODULES) += module.o | |||
| 45 | obj-$(CONFIG_NOT_COHERENT_CACHE) += dma-mapping.o | 45 | obj-$(CONFIG_NOT_COHERENT_CACHE) += dma-mapping.o |
| 46 | obj-$(CONFIG_PCI) += pci.o | 46 | obj-$(CONFIG_PCI) += pci.o |
| 47 | obj-$(CONFIG_KGDB) += ppc-stub.o | 47 | obj-$(CONFIG_KGDB) += ppc-stub.o |
| 48 | obj-$(CONFIG_SMP) += smp.o smp-tbsync.o | ||
| 49 | obj-$(CONFIG_TAU) += temp.o | 48 | obj-$(CONFIG_TAU) += temp.o |
| 50 | ifndef CONFIG_E200 | 49 | ifndef CONFIG_E200 |
| 51 | obj-$(CONFIG_FSL_BOOKE) += perfmon_fsl_booke.o | 50 | obj-$(CONFIG_FSL_BOOKE) += perfmon_fsl_booke.o |
diff --git a/arch/ppc/kernel/bitops.c b/arch/ppc/kernel/bitops.c deleted file mode 100644 index 7f53d193968b..000000000000 --- a/arch/ppc/kernel/bitops.c +++ /dev/null | |||
| @@ -1,126 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 1996 Paul Mackerras. | ||
| 3 | */ | ||
| 4 | |||
| 5 | #include <linux/kernel.h> | ||
| 6 | #include <linux/bitops.h> | ||
| 7 | |||
| 8 | /* | ||
| 9 | * If the bitops are not inlined in bitops.h, they are defined here. | ||
| 10 | * -- paulus | ||
| 11 | */ | ||
| 12 | #if !__INLINE_BITOPS | ||
| 13 | void set_bit(int nr, volatile void * addr) | ||
| 14 | { | ||
| 15 | unsigned long old; | ||
| 16 | unsigned long mask = 1 << (nr & 0x1f); | ||
| 17 | unsigned long *p = ((unsigned long *)addr) + (nr >> 5); | ||
| 18 | |||
| 19 | __asm__ __volatile__(SMP_WMB "\n\ | ||
| 20 | 1: lwarx %0,0,%3 \n\ | ||
| 21 | or %0,%0,%2 \n" | ||
| 22 | PPC405_ERR77(0,%3) | ||
| 23 | " stwcx. %0,0,%3 \n\ | ||
| 24 | bne 1b" | ||
| 25 | SMP_MB | ||
| 26 | : "=&r" (old), "=m" (*p) | ||
| 27 | : "r" (mask), "r" (p), "m" (*p) | ||
| 28 | : "cc" ); | ||
| 29 | } | ||
| 30 | |||
| 31 | void clear_bit(int nr, volatile void *addr) | ||
| 32 | { | ||
| 33 | unsigned long old; | ||
| 34 | unsigned long mask = 1 << (nr & 0x1f); | ||
| 35 | unsigned long *p = ((unsigned long *)addr) + (nr >> 5); | ||
| 36 | |||
| 37 | __asm__ __volatile__(SMP_WMB "\n\ | ||
| 38 | 1: lwarx %0,0,%3 \n\ | ||
| 39 | andc %0,%0,%2 \n" | ||
| 40 | PPC405_ERR77(0,%3) | ||
| 41 | " stwcx. %0,0,%3 \n\ | ||
| 42 | bne 1b" | ||
| 43 | SMP_MB | ||
| 44 | : "=&r" (old), "=m" (*p) | ||
| 45 | : "r" (mask), "r" (p), "m" (*p) | ||
| 46 | : "cc"); | ||
| 47 | } | ||
| 48 | |||
| 49 | void change_bit(int nr, volatile void *addr) | ||
| 50 | { | ||
| 51 | unsigned long old; | ||
| 52 | unsigned long mask = 1 << (nr & 0x1f); | ||
| 53 | unsigned long *p = ((unsigned long *)addr) + (nr >> 5); | ||
| 54 | |||
| 55 | __asm__ __volatile__(SMP_WMB "\n\ | ||
| 56 | 1: lwarx %0,0,%3 \n\ | ||
| 57 | xor %0,%0,%2 \n" | ||
| 58 | PPC405_ERR77(0,%3) | ||
| 59 | " stwcx. %0,0,%3 \n\ | ||
| 60 | bne 1b" | ||
| 61 | SMP_MB | ||
| 62 | : "=&r" (old), "=m" (*p) | ||
| 63 | : "r" (mask), "r" (p), "m" (*p) | ||
| 64 | : "cc"); | ||
| 65 | } | ||
| 66 | |||
| 67 | int test_and_set_bit(int nr, volatile void *addr) | ||
| 68 | { | ||
| 69 | unsigned int old, t; | ||
| 70 | unsigned int mask = 1 << (nr & 0x1f); | ||
| 71 | volatile unsigned int *p = ((volatile unsigned int *)addr) + (nr >> 5); | ||
| 72 | |||
| 73 | __asm__ __volatile__(SMP_WMB "\n\ | ||
| 74 | 1: lwarx %0,0,%4 \n\ | ||
| 75 | or %1,%0,%3 \n" | ||
| 76 | PPC405_ERR77(0,%4) | ||
| 77 | " stwcx. %1,0,%4 \n\ | ||
| 78 | bne 1b" | ||
| 79 | SMP_MB | ||
| 80 | : "=&r" (old), "=&r" (t), "=m" (*p) | ||
| 81 | : "r" (mask), "r" (p), "m" (*p) | ||
| 82 | : "cc"); | ||
| 83 | |||
| 84 | return (old & mask) != 0; | ||
| 85 | } | ||
| 86 | |||
| 87 | int test_and_clear_bit(int nr, volatile void *addr) | ||
| 88 | { | ||
| 89 | unsigned int old, t; | ||
| 90 | unsigned int mask = 1 << (nr & 0x1f); | ||
| 91 | volatile unsigned int *p = ((volatile unsigned int *)addr) + (nr >> 5); | ||
| 92 | |||
| 93 | __asm__ __volatile__(SMP_WMB "\n\ | ||
| 94 | 1: lwarx %0,0,%4 \n\ | ||
| 95 | andc %1,%0,%3 \n" | ||
| 96 | PPC405_ERR77(0,%4) | ||
| 97 | " stwcx. %1,0,%4 \n\ | ||
| 98 | bne 1b" | ||
| 99 | SMP_MB | ||
| 100 | : "=&r" (old), "=&r" (t), "=m" (*p) | ||
| 101 | : "r" (mask), "r" (p), "m" (*p) | ||
| 102 | : "cc"); | ||
| 103 | |||
| 104 | return (old & mask) != 0; | ||
| 105 | } | ||
| 106 | |||
| 107 | int test_and_change_bit(int nr, volatile void *addr) | ||
| 108 | { | ||
| 109 | unsigned int old, t; | ||
| 110 | unsigned int mask = 1 << (nr & 0x1f); | ||
| 111 | volatile unsigned int *p = ((volatile unsigned int *)addr) + (nr >> 5); | ||
| 112 | |||
| 113 | __asm__ __volatile__(SMP_WMB "\n\ | ||
| 114 | 1: lwarx %0,0,%4 \n\ | ||
| 115 | xor %1,%0,%3 \n" | ||
| 116 | PPC405_ERR77(0,%4) | ||
| 117 | " stwcx. %1,0,%4 \n\ | ||
| 118 | bne 1b" | ||
| 119 | SMP_MB | ||
| 120 | : "=&r" (old), "=&r" (t), "=m" (*p) | ||
| 121 | : "r" (mask), "r" (p), "m" (*p) | ||
| 122 | : "cc"); | ||
| 123 | |||
| 124 | return (old & mask) != 0; | ||
| 125 | } | ||
| 126 | #endif /* !__INLINE_BITOPS */ | ||
diff --git a/arch/ppc/kernel/irq.c b/arch/ppc/kernel/irq.c index 772e428aaa59..fbb2b9f8922c 100644 --- a/arch/ppc/kernel/irq.c +++ b/arch/ppc/kernel/irq.c | |||
| @@ -126,7 +126,7 @@ skip: | |||
| 126 | seq_puts(p, " PowerPC Thermal Assist (cpu temp)\n"); | 126 | seq_puts(p, " PowerPC Thermal Assist (cpu temp)\n"); |
| 127 | } | 127 | } |
| 128 | #endif | 128 | #endif |
| 129 | #ifdef CONFIG_SMP | 129 | #if defined(CONFIG_SMP) && !defined(CONFIG_PPC_MERGE) |
| 130 | /* should this be per processor send/receive? */ | 130 | /* should this be per processor send/receive? */ |
| 131 | seq_printf(p, "IPI (recv/sent): %10u/%u\n", | 131 | seq_printf(p, "IPI (recv/sent): %10u/%u\n", |
| 132 | atomic_read(&ipi_recv), atomic_read(&ipi_sent)); | 132 | atomic_read(&ipi_recv), atomic_read(&ipi_sent)); |
diff --git a/arch/ppc/kernel/machine_kexec.c b/arch/ppc/kernel/machine_kexec.c index a72787747df7..a882b0dbe8de 100644 --- a/arch/ppc/kernel/machine_kexec.c +++ b/arch/ppc/kernel/machine_kexec.c | |||
| @@ -32,7 +32,7 @@ const extern unsigned int relocate_new_kernel_size; | |||
| 32 | * Provide a dummy crash_notes definition while crash dump arrives to ppc. | 32 | * Provide a dummy crash_notes definition while crash dump arrives to ppc. |
| 33 | * This prevents breakage of crash_notes attribute in kernel/ksysfs.c. | 33 | * This prevents breakage of crash_notes attribute in kernel/ksysfs.c. |
| 34 | */ | 34 | */ |
| 35 | void *crash_notes = NULL; | 35 | note_buf_t crash_notes[NR_CPUS]; |
| 36 | 36 | ||
| 37 | void machine_shutdown(void) | 37 | void machine_shutdown(void) |
| 38 | { | 38 | { |
diff --git a/arch/ppc/kernel/ppc_ksyms.c b/arch/ppc/kernel/ppc_ksyms.c index ae24196d78f6..e0ca61b37f4f 100644 --- a/arch/ppc/kernel/ppc_ksyms.c +++ b/arch/ppc/kernel/ppc_ksyms.c | |||
| @@ -131,6 +131,11 @@ EXPORT_SYMBOL(outw); | |||
| 131 | EXPORT_SYMBOL(outl); | 131 | EXPORT_SYMBOL(outl); |
| 132 | EXPORT_SYMBOL(outsl);*/ | 132 | EXPORT_SYMBOL(outsl);*/ |
| 133 | 133 | ||
| 134 | EXPORT_SYMBOL(__ide_mm_insl); | ||
| 135 | EXPORT_SYMBOL(__ide_mm_outsw); | ||
| 136 | EXPORT_SYMBOL(__ide_mm_insw); | ||
| 137 | EXPORT_SYMBOL(__ide_mm_outsl); | ||
| 138 | |||
| 134 | EXPORT_SYMBOL(_insb); | 139 | EXPORT_SYMBOL(_insb); |
| 135 | EXPORT_SYMBOL(_outsb); | 140 | EXPORT_SYMBOL(_outsb); |
| 136 | EXPORT_SYMBOL(_insw); | 141 | EXPORT_SYMBOL(_insw); |
diff --git a/arch/ppc/kernel/traps.c b/arch/ppc/kernel/traps.c index f265b81e7008..16adde6b429d 100644 --- a/arch/ppc/kernel/traps.c +++ b/arch/ppc/kernel/traps.c | |||
| @@ -606,22 +606,22 @@ int check_bug_trap(struct pt_regs *regs) | |||
| 606 | if (bug->line & BUG_WARNING_TRAP) { | 606 | if (bug->line & BUG_WARNING_TRAP) { |
| 607 | /* this is a WARN_ON rather than BUG/BUG_ON */ | 607 | /* this is a WARN_ON rather than BUG/BUG_ON */ |
| 608 | #ifdef CONFIG_XMON | 608 | #ifdef CONFIG_XMON |
| 609 | xmon_printf(KERN_ERR "Badness in %s at %s:%d\n", | 609 | xmon_printf(KERN_ERR "Badness in %s at %s:%ld\n", |
| 610 | bug->function, bug->file, | 610 | bug->function, bug->file, |
| 611 | bug->line & ~BUG_WARNING_TRAP); | 611 | bug->line & ~BUG_WARNING_TRAP); |
| 612 | #endif /* CONFIG_XMON */ | 612 | #endif /* CONFIG_XMON */ |
| 613 | printk(KERN_ERR "Badness in %s at %s:%d\n", | 613 | printk(KERN_ERR "Badness in %s at %s:%ld\n", |
| 614 | bug->function, bug->file, | 614 | bug->function, bug->file, |
| 615 | bug->line & ~BUG_WARNING_TRAP); | 615 | bug->line & ~BUG_WARNING_TRAP); |
| 616 | dump_stack(); | 616 | dump_stack(); |
| 617 | return 1; | 617 | return 1; |
| 618 | } | 618 | } |
| 619 | #ifdef CONFIG_XMON | 619 | #ifdef CONFIG_XMON |
| 620 | xmon_printf(KERN_CRIT "kernel BUG in %s at %s:%d!\n", | 620 | xmon_printf(KERN_CRIT "kernel BUG in %s at %s:%ld!\n", |
| 621 | bug->function, bug->file, bug->line); | 621 | bug->function, bug->file, bug->line); |
| 622 | xmon(regs); | 622 | xmon(regs); |
| 623 | #endif /* CONFIG_XMON */ | 623 | #endif /* CONFIG_XMON */ |
| 624 | printk(KERN_CRIT "kernel BUG in %s at %s:%d!\n", | 624 | printk(KERN_CRIT "kernel BUG in %s at %s:%ld!\n", |
| 625 | bug->function, bug->file, bug->line); | 625 | bug->function, bug->file, bug->line); |
| 626 | 626 | ||
| 627 | return 0; | 627 | return 0; |
diff --git a/arch/ppc/platforms/4xx/ibm440ep.c b/arch/ppc/platforms/4xx/ibm440ep.c index 4712de8ff80f..65ac0b9c2d05 100644 --- a/arch/ppc/platforms/4xx/ibm440ep.c +++ b/arch/ppc/platforms/4xx/ibm440ep.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | */ | 14 | */ |
| 15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
| 16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
| 17 | #include <linux/platform_device.h> | ||
| 17 | #include <platforms/4xx/ibm440ep.h> | 18 | #include <platforms/4xx/ibm440ep.h> |
| 18 | #include <asm/ocp.h> | 19 | #include <asm/ocp.h> |
| 19 | #include <asm/ppc4xx_pic.h> | 20 | #include <asm/ppc4xx_pic.h> |
diff --git a/arch/ppc/platforms/4xx/ibmstb4.c b/arch/ppc/platforms/4xx/ibmstb4.c index d90627b68faa..7e33bb635443 100644 --- a/arch/ppc/platforms/4xx/ibmstb4.c +++ b/arch/ppc/platforms/4xx/ibmstb4.c | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | */ | 10 | */ |
| 11 | 11 | ||
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/platform_device.h> | ||
| 13 | #include <asm/ocp.h> | 14 | #include <asm/ocp.h> |
| 14 | #include <asm/ppc4xx_pic.h> | 15 | #include <asm/ppc4xx_pic.h> |
| 15 | #include <platforms/4xx/ibmstb4.h> | 16 | #include <platforms/4xx/ibmstb4.h> |
diff --git a/arch/ppc/platforms/4xx/redwood5.c b/arch/ppc/platforms/4xx/redwood5.c index bee8b4ac8afd..611ac861804d 100644 --- a/arch/ppc/platforms/4xx/redwood5.c +++ b/arch/ppc/platforms/4xx/redwood5.c | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | #include <linux/config.h> | 14 | #include <linux/config.h> |
| 15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
| 16 | #include <linux/pagemap.h> | 16 | #include <linux/pagemap.h> |
| 17 | #include <linux/device.h> | 17 | #include <linux/platform_device.h> |
| 18 | #include <linux/ioport.h> | 18 | #include <linux/ioport.h> |
| 19 | #include <asm/io.h> | 19 | #include <asm/io.h> |
| 20 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
diff --git a/arch/ppc/platforms/4xx/redwood6.c b/arch/ppc/platforms/4xx/redwood6.c index 8b1012994dfc..b13116691289 100644 --- a/arch/ppc/platforms/4xx/redwood6.c +++ b/arch/ppc/platforms/4xx/redwood6.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include <linux/config.h> | 12 | #include <linux/config.h> |
| 13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| 14 | #include <linux/pagemap.h> | 14 | #include <linux/pagemap.h> |
| 15 | #include <linux/device.h> | 15 | #include <linux/platform_device.h> |
| 16 | #include <linux/ioport.h> | 16 | #include <linux/ioport.h> |
| 17 | #include <asm/io.h> | 17 | #include <asm/io.h> |
| 18 | #include <asm/ppc4xx_pic.h> | 18 | #include <asm/ppc4xx_pic.h> |
diff --git a/arch/ppc/platforms/chrp_pegasos_eth.c b/arch/ppc/platforms/chrp_pegasos_eth.c index a9052305c35d..108a6e265185 100644 --- a/arch/ppc/platforms/chrp_pegasos_eth.c +++ b/arch/ppc/platforms/chrp_pegasos_eth.c | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | #include <linux/types.h> | 13 | #include <linux/types.h> |
| 14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
| 15 | #include <linux/ioport.h> | 15 | #include <linux/ioport.h> |
| 16 | #include <linux/device.h> | 16 | #include <linux/platform_device.h> |
| 17 | #include <linux/mv643xx.h> | 17 | #include <linux/mv643xx.h> |
| 18 | #include <linux/pci.h> | 18 | #include <linux/pci.h> |
| 19 | 19 | ||
diff --git a/arch/ppc/platforms/cpci690.c b/arch/ppc/platforms/cpci690.c index f64ac2acb603..6ca7bcac9474 100644 --- a/arch/ppc/platforms/cpci690.c +++ b/arch/ppc/platforms/cpci690.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/initrd.h> | 21 | #include <linux/initrd.h> |
| 22 | #include <linux/root_dev.h> | 22 | #include <linux/root_dev.h> |
| 23 | #include <linux/mv643xx.h> | 23 | #include <linux/mv643xx.h> |
| 24 | #include <linux/platform_device.h> | ||
| 24 | #include <asm/bootinfo.h> | 25 | #include <asm/bootinfo.h> |
| 25 | #include <asm/machdep.h> | 26 | #include <asm/machdep.h> |
| 26 | #include <asm/todc.h> | 27 | #include <asm/todc.h> |
diff --git a/arch/ppc/platforms/ev64260.c b/arch/ppc/platforms/ev64260.c index aa50637a5cfb..32358b3fb236 100644 --- a/arch/ppc/platforms/ev64260.c +++ b/arch/ppc/platforms/ev64260.c | |||
| @@ -33,6 +33,7 @@ | |||
| 33 | #include <linux/console.h> | 33 | #include <linux/console.h> |
| 34 | #include <linux/initrd.h> | 34 | #include <linux/initrd.h> |
| 35 | #include <linux/root_dev.h> | 35 | #include <linux/root_dev.h> |
| 36 | #include <linux/platform_device.h> | ||
| 36 | #if !defined(CONFIG_SERIAL_MPSC_CONSOLE) | 37 | #if !defined(CONFIG_SERIAL_MPSC_CONSOLE) |
| 37 | #include <linux/serial.h> | 38 | #include <linux/serial.h> |
| 38 | #include <linux/tty.h> | 39 | #include <linux/tty.h> |
diff --git a/arch/ppc/platforms/ev64360.c b/arch/ppc/platforms/ev64360.c index 53388a1c334f..b1324564456e 100644 --- a/arch/ppc/platforms/ev64360.c +++ b/arch/ppc/platforms/ev64360.c | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | #include <linux/bootmem.h> | 25 | #include <linux/bootmem.h> |
| 26 | #include <linux/mtd/physmap.h> | 26 | #include <linux/mtd/physmap.h> |
| 27 | #include <linux/mv643xx.h> | 27 | #include <linux/mv643xx.h> |
| 28 | #include <linux/platform_device.h> | ||
| 28 | #ifdef CONFIG_BOOTIMG | 29 | #ifdef CONFIG_BOOTIMG |
| 29 | #include <linux/bootimg.h> | 30 | #include <linux/bootimg.h> |
| 30 | #endif | 31 | #endif |
diff --git a/arch/ppc/platforms/hdpu.c b/arch/ppc/platforms/hdpu.c index b6a66d5e9d83..50039a204c24 100644 --- a/arch/ppc/platforms/hdpu.c +++ b/arch/ppc/platforms/hdpu.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
| 23 | #include <linux/ide.h> | 23 | #include <linux/ide.h> |
| 24 | #include <linux/seq_file.h> | 24 | #include <linux/seq_file.h> |
| 25 | #include <linux/platform_device.h> | ||
| 25 | 26 | ||
| 26 | #include <linux/initrd.h> | 27 | #include <linux/initrd.h> |
| 27 | #include <linux/root_dev.h> | 28 | #include <linux/root_dev.h> |
diff --git a/arch/ppc/platforms/katana.c b/arch/ppc/platforms/katana.c index a301c5ac58dd..6e58e30ceed1 100644 --- a/arch/ppc/platforms/katana.c +++ b/arch/ppc/platforms/katana.c | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | #include <linux/seq_file.h> | 29 | #include <linux/seq_file.h> |
| 30 | #include <linux/mtd/physmap.h> | 30 | #include <linux/mtd/physmap.h> |
| 31 | #include <linux/mv643xx.h> | 31 | #include <linux/mv643xx.h> |
| 32 | #include <linux/platform_device.h> | ||
| 32 | #ifdef CONFIG_BOOTIMG | 33 | #ifdef CONFIG_BOOTIMG |
| 33 | #include <linux/bootimg.h> | 34 | #include <linux/bootimg.h> |
| 34 | #endif | 35 | #endif |
diff --git a/arch/ppc/platforms/radstone_ppc7d.c b/arch/ppc/platforms/radstone_ppc7d.c index 6f97911c330d..708b8739ecdd 100644 --- a/arch/ppc/platforms/radstone_ppc7d.c +++ b/arch/ppc/platforms/radstone_ppc7d.c | |||
| @@ -40,6 +40,7 @@ | |||
| 40 | #include <linux/serial_core.h> | 40 | #include <linux/serial_core.h> |
| 41 | #include <linux/mv643xx.h> | 41 | #include <linux/mv643xx.h> |
| 42 | #include <linux/netdevice.h> | 42 | #include <linux/netdevice.h> |
| 43 | #include <linux/platform_device.h> | ||
| 43 | 44 | ||
| 44 | #include <asm/system.h> | 45 | #include <asm/system.h> |
| 45 | #include <asm/pgtable.h> | 46 | #include <asm/pgtable.h> |
diff --git a/arch/ppc/syslib/m8xx_setup.c b/arch/ppc/syslib/m8xx_setup.c index 97ffbc70574f..1cc3abe6fa43 100644 --- a/arch/ppc/syslib/m8xx_setup.c +++ b/arch/ppc/syslib/m8xx_setup.c | |||
| @@ -45,6 +45,7 @@ | |||
| 45 | #include <asm/bootinfo.h> | 45 | #include <asm/bootinfo.h> |
| 46 | #include <asm/time.h> | 46 | #include <asm/time.h> |
| 47 | #include <asm/xmon.h> | 47 | #include <asm/xmon.h> |
| 48 | #include <asm/ppc_sys.h> | ||
| 48 | 49 | ||
| 49 | #include "ppc8xx_pic.h" | 50 | #include "ppc8xx_pic.h" |
| 50 | 51 | ||
diff --git a/arch/ppc/syslib/mpc52xx_devices.c b/arch/ppc/syslib/mpc52xx_devices.c index ad5182efca1d..da3c74bfdc92 100644 --- a/arch/ppc/syslib/mpc52xx_devices.c +++ b/arch/ppc/syslib/mpc52xx_devices.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | 15 | ||
| 16 | #include <linux/fsl_devices.h> | 16 | #include <linux/fsl_devices.h> |
| 17 | #include <linux/resource.h> | 17 | #include <linux/resource.h> |
| 18 | #include <linux/platform_device.h> | ||
| 18 | #include <asm/mpc52xx.h> | 19 | #include <asm/mpc52xx.h> |
| 19 | #include <asm/ppc_sys.h> | 20 | #include <asm/ppc_sys.h> |
| 20 | 21 | ||
diff --git a/arch/ppc/syslib/mv64x60.c b/arch/ppc/syslib/mv64x60.c index a781c50d2f4c..94ea346b7b4b 100644 --- a/arch/ppc/syslib/mv64x60.c +++ b/arch/ppc/syslib/mv64x60.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include <linux/string.h> | 19 | #include <linux/string.h> |
| 20 | #include <linux/spinlock.h> | 20 | #include <linux/spinlock.h> |
| 21 | #include <linux/mv643xx.h> | 21 | #include <linux/mv643xx.h> |
| 22 | #include <linux/platform_device.h> | ||
| 22 | 23 | ||
| 23 | #include <asm/byteorder.h> | 24 | #include <asm/byteorder.h> |
| 24 | #include <asm/io.h> | 25 | #include <asm/io.h> |
diff --git a/arch/ppc/syslib/pq2_devices.c b/arch/ppc/syslib/pq2_devices.c index 6f88ba93412b..e960fe935325 100644 --- a/arch/ppc/syslib/pq2_devices.c +++ b/arch/ppc/syslib/pq2_devices.c | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | 13 | ||
| 14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
| 15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
| 16 | #include <linux/device.h> | 16 | #include <linux/platform_device.h> |
| 17 | #include <linux/ioport.h> | 17 | #include <linux/ioport.h> |
| 18 | #include <asm/cpm2.h> | 18 | #include <asm/cpm2.h> |
| 19 | #include <asm/irq.h> | 19 | #include <asm/irq.h> |
diff --git a/arch/ppc64/Kconfig b/arch/ppc64/Kconfig index 42677cc96508..b987164fca4c 100644 --- a/arch/ppc64/Kconfig +++ b/arch/ppc64/Kconfig | |||
| @@ -89,12 +89,14 @@ config PPC_PMAC | |||
| 89 | bool " Apple G5 based machines" | 89 | bool " Apple G5 based machines" |
| 90 | default y | 90 | default y |
| 91 | select U3_DART | 91 | select U3_DART |
| 92 | select GENERIC_TBSYNC | ||
| 92 | 93 | ||
| 93 | config PPC_MAPLE | 94 | config PPC_MAPLE |
| 94 | depends on PPC_MULTIPLATFORM | 95 | depends on PPC_MULTIPLATFORM |
| 95 | bool " Maple 970FX Evaluation Board" | 96 | bool " Maple 970FX Evaluation Board" |
| 96 | select U3_DART | 97 | select U3_DART |
| 97 | select MPIC_BROKEN_U3 | 98 | select MPIC_BROKEN_U3 |
| 99 | select GENERIC_TBSYNC | ||
| 98 | default n | 100 | default n |
| 99 | help | 101 | help |
| 100 | This option enables support for the Maple 970FX Evaluation Board. | 102 | This option enables support for the Maple 970FX Evaluation Board. |
| @@ -182,6 +184,9 @@ config MPIC_BROKEN_U3 | |||
| 182 | depends on PPC_MAPLE | 184 | depends on PPC_MAPLE |
| 183 | default y | 185 | default y |
| 184 | 186 | ||
| 187 | config GENERIC_TBSYNC | ||
| 188 | def_bool n | ||
| 189 | |||
| 185 | config PPC_PMAC64 | 190 | config PPC_PMAC64 |
| 186 | bool | 191 | bool |
| 187 | depends on PPC_PMAC | 192 | depends on PPC_PMAC |
diff --git a/arch/ppc64/Makefile b/arch/ppc64/Makefile index fdbd6f44adc0..a55a82d145d4 100644 --- a/arch/ppc64/Makefile +++ b/arch/ppc64/Makefile | |||
| @@ -86,7 +86,6 @@ head-y := arch/ppc64/kernel/head.o | |||
| 86 | head-y += arch/powerpc/kernel/fpu.o | 86 | head-y += arch/powerpc/kernel/fpu.o |
| 87 | head-y += arch/powerpc/kernel/entry_64.o | 87 | head-y += arch/powerpc/kernel/entry_64.o |
| 88 | 88 | ||
| 89 | libs-y += arch/ppc64/lib/ | ||
| 90 | core-y += arch/ppc64/kernel/ arch/powerpc/kernel/ | 89 | core-y += arch/ppc64/kernel/ arch/powerpc/kernel/ |
| 91 | core-y += arch/powerpc/mm/ | 90 | core-y += arch/powerpc/mm/ |
| 92 | core-y += arch/powerpc/sysdev/ | 91 | core-y += arch/powerpc/sysdev/ |
diff --git a/arch/ppc64/kernel/Makefile b/arch/ppc64/kernel/Makefile index 327c08ce4291..c441aebe7648 100644 --- a/arch/ppc64/kernel/Makefile +++ b/arch/ppc64/kernel/Makefile | |||
| @@ -12,8 +12,7 @@ obj-y := misc.o prom.o | |||
| 12 | endif | 12 | endif |
| 13 | 13 | ||
| 14 | obj-y += irq.o idle.o dma.o \ | 14 | obj-y += irq.o idle.o dma.o \ |
| 15 | signal.o \ | 15 | align.o pacaData.o \ |
| 16 | align.o bitops.o pacaData.o \ | ||
| 17 | udbg.o ioctl32.o \ | 16 | udbg.o ioctl32.o \ |
| 18 | rtc.o \ | 17 | rtc.o \ |
| 19 | cpu_setup_power4.o \ | 18 | cpu_setup_power4.o \ |
| @@ -29,22 +28,16 @@ ifneq ($(CONFIG_PPC_MERGE),y) | |||
| 29 | obj-$(CONFIG_PPC_MULTIPLATFORM) += prom_init.o | 28 | obj-$(CONFIG_PPC_MULTIPLATFORM) += prom_init.o |
| 30 | endif | 29 | endif |
| 31 | 30 | ||
| 32 | obj-$(CONFIG_PPC_PSERIES) += rtasd.o udbg_16550.o | 31 | obj-$(CONFIG_PPC_PSERIES) += udbg_16550.o |
| 33 | |||
| 34 | obj-$(CONFIG_PPC_BPA) += bpa_setup.o bpa_iommu.o bpa_nvram.o \ | ||
| 35 | bpa_iic.o spider-pic.o | ||
| 36 | 32 | ||
| 37 | obj-$(CONFIG_KEXEC) += machine_kexec.o | 33 | obj-$(CONFIG_KEXEC) += machine_kexec.o |
| 38 | obj-$(CONFIG_EEH) += eeh.o | 34 | obj-$(CONFIG_EEH) += eeh.o |
| 39 | obj-$(CONFIG_PROC_FS) += proc_ppc64.o | 35 | obj-$(CONFIG_PROC_FS) += proc_ppc64.o |
| 40 | obj-$(CONFIG_RTAS_FLASH) += rtas_flash.o | ||
| 41 | obj-$(CONFIG_SMP) += smp.o | ||
| 42 | obj-$(CONFIG_MODULES) += module.o | 36 | obj-$(CONFIG_MODULES) += module.o |
| 43 | ifneq ($(CONFIG_PPC_MERGE),y) | 37 | ifneq ($(CONFIG_PPC_MERGE),y) |
| 44 | obj-$(CONFIG_MODULES) += ppc_ksyms.o | 38 | obj-$(CONFIG_MODULES) += ppc_ksyms.o |
| 45 | endif | 39 | endif |
| 46 | obj-$(CONFIG_PPC_RTAS) += rtas_pci.o | 40 | obj-$(CONFIG_PPC_RTAS) += rtas_pci.o |
| 47 | obj-$(CONFIG_RTAS_PROC) += rtas-proc.o | ||
| 48 | obj-$(CONFIG_SCANLOG) += scanlog.o | 41 | obj-$(CONFIG_SCANLOG) += scanlog.o |
| 49 | obj-$(CONFIG_LPARCFG) += lparcfg.o | 42 | obj-$(CONFIG_LPARCFG) += lparcfg.o |
| 50 | obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o | 43 | obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o |
| @@ -57,11 +50,6 @@ obj-$(CONFIG_PPC_PMAC) += udbg_scc.o | |||
| 57 | 50 | ||
| 58 | obj-$(CONFIG_PPC_MAPLE) += udbg_16550.o | 51 | obj-$(CONFIG_PPC_MAPLE) += udbg_16550.o |
| 59 | 52 | ||
| 60 | ifdef CONFIG_SMP | ||
| 61 | obj-$(CONFIG_PPC_PMAC) += smp-tbsync.o | ||
| 62 | obj-$(CONFIG_PPC_MAPLE) += smp-tbsync.o | ||
| 63 | endif | ||
| 64 | |||
| 65 | obj-$(CONFIG_KPROBES) += kprobes.o | 53 | obj-$(CONFIG_KPROBES) += kprobes.o |
| 66 | 54 | ||
| 67 | CFLAGS_ioctl32.o += -Ifs/ | 55 | CFLAGS_ioctl32.o += -Ifs/ |
diff --git a/arch/ppc64/kernel/asm-offsets.c b/arch/ppc64/kernel/asm-offsets.c index 5e6046cb414e..504dee836d29 100644 --- a/arch/ppc64/kernel/asm-offsets.c +++ b/arch/ppc64/kernel/asm-offsets.c | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | 31 | ||
| 32 | #include <asm/paca.h> | 32 | #include <asm/paca.h> |
| 33 | #include <asm/lppaca.h> | 33 | #include <asm/lppaca.h> |
| 34 | #include <asm/iSeries/HvLpEvent.h> | 34 | #include <asm/iseries/hv_lp_event.h> |
| 35 | #include <asm/rtas.h> | 35 | #include <asm/rtas.h> |
| 36 | #include <asm/cputable.h> | 36 | #include <asm/cputable.h> |
| 37 | #include <asm/cache.h> | 37 | #include <asm/cache.h> |
diff --git a/arch/ppc64/kernel/head.S b/arch/ppc64/kernel/head.S index 929f9f42cf7a..db1cf397be2d 100644 --- a/arch/ppc64/kernel/head.S +++ b/arch/ppc64/kernel/head.S | |||
| @@ -35,7 +35,7 @@ | |||
| 35 | #include <asm/cputable.h> | 35 | #include <asm/cputable.h> |
| 36 | #include <asm/setup.h> | 36 | #include <asm/setup.h> |
| 37 | #include <asm/hvcall.h> | 37 | #include <asm/hvcall.h> |
| 38 | #include <asm/iSeries/LparMap.h> | 38 | #include <asm/iseries/lpar_map.h> |
| 39 | #include <asm/thread_info.h> | 39 | #include <asm/thread_info.h> |
| 40 | 40 | ||
| 41 | #ifdef CONFIG_PPC_ISERIES | 41 | #ifdef CONFIG_PPC_ISERIES |
| @@ -1914,24 +1914,6 @@ _GLOBAL(hmt_start_secondary) | |||
| 1914 | blr | 1914 | blr |
| 1915 | #endif | 1915 | #endif |
| 1916 | 1916 | ||
| 1917 | #if defined(CONFIG_KEXEC) || defined(CONFIG_SMP) | ||
| 1918 | _GLOBAL(smp_release_cpus) | ||
| 1919 | /* All secondary cpus are spinning on a common | ||
| 1920 | * spinloop, release them all now so they can start | ||
| 1921 | * to spin on their individual paca spinloops. | ||
| 1922 | * For non SMP kernels, the secondary cpus never | ||
| 1923 | * get out of the common spinloop. | ||
| 1924 | * XXX This does nothing useful on iSeries, secondaries are | ||
| 1925 | * already waiting on their paca. | ||
| 1926 | */ | ||
| 1927 | li r3,1 | ||
| 1928 | LOADADDR(r5,__secondary_hold_spinloop) | ||
| 1929 | std r3,0(r5) | ||
| 1930 | sync | ||
| 1931 | blr | ||
| 1932 | #endif /* CONFIG_SMP */ | ||
| 1933 | |||
| 1934 | |||
| 1935 | /* | 1917 | /* |
| 1936 | * We put a few things here that have to be page-aligned. | 1918 | * We put a few things here that have to be page-aligned. |
| 1937 | * This stuff goes at the beginning of the bss, which is page-aligned. | 1919 | * This stuff goes at the beginning of the bss, which is page-aligned. |
diff --git a/arch/ppc64/kernel/irq.c b/arch/ppc64/kernel/irq.c index f41afe545045..87474584033f 100644 --- a/arch/ppc64/kernel/irq.c +++ b/arch/ppc64/kernel/irq.c | |||
| @@ -52,7 +52,7 @@ | |||
| 52 | #include <asm/cache.h> | 52 | #include <asm/cache.h> |
| 53 | #include <asm/prom.h> | 53 | #include <asm/prom.h> |
| 54 | #include <asm/ptrace.h> | 54 | #include <asm/ptrace.h> |
| 55 | #include <asm/iSeries/ItLpQueue.h> | 55 | #include <asm/iseries/it_lp_queue.h> |
| 56 | #include <asm/machdep.h> | 56 | #include <asm/machdep.h> |
| 57 | #include <asm/paca.h> | 57 | #include <asm/paca.h> |
| 58 | 58 | ||
| @@ -392,7 +392,7 @@ int virt_irq_create_mapping(unsigned int real_irq) | |||
| 392 | if (ppc64_interrupt_controller == IC_OPEN_PIC) | 392 | if (ppc64_interrupt_controller == IC_OPEN_PIC) |
| 393 | return real_irq; /* no mapping for openpic (for now) */ | 393 | return real_irq; /* no mapping for openpic (for now) */ |
| 394 | 394 | ||
| 395 | if (ppc64_interrupt_controller == IC_BPA_IIC) | 395 | if (ppc64_interrupt_controller == IC_CELL_PIC) |
| 396 | return real_irq; /* no mapping for iic either */ | 396 | return real_irq; /* no mapping for iic either */ |
| 397 | 397 | ||
| 398 | /* don't map interrupts < MIN_VIRT_IRQ */ | 398 | /* don't map interrupts < MIN_VIRT_IRQ */ |
diff --git a/arch/ppc64/kernel/lparcfg.c b/arch/ppc64/kernel/lparcfg.c index cae19bbd5acd..e86155770bbc 100644 --- a/arch/ppc64/kernel/lparcfg.c +++ b/arch/ppc64/kernel/lparcfg.c | |||
| @@ -26,14 +26,14 @@ | |||
| 26 | #include <linux/init.h> | 26 | #include <linux/init.h> |
| 27 | #include <linux/seq_file.h> | 27 | #include <linux/seq_file.h> |
| 28 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
| 29 | #include <asm/iSeries/HvLpConfig.h> | 29 | #include <asm/iseries/hv_lp_config.h> |
| 30 | #include <asm/lppaca.h> | 30 | #include <asm/lppaca.h> |
| 31 | #include <asm/hvcall.h> | 31 | #include <asm/hvcall.h> |
| 32 | #include <asm/firmware.h> | 32 | #include <asm/firmware.h> |
| 33 | #include <asm/rtas.h> | 33 | #include <asm/rtas.h> |
| 34 | #include <asm/system.h> | 34 | #include <asm/system.h> |
| 35 | #include <asm/time.h> | 35 | #include <asm/time.h> |
| 36 | #include <asm/iSeries/ItExtVpdPanel.h> | 36 | #include <asm/iseries/it_exp_vpd_panel.h> |
| 37 | #include <asm/prom.h> | 37 | #include <asm/prom.h> |
| 38 | 38 | ||
| 39 | #define MODULE_VERS "1.6" | 39 | #define MODULE_VERS "1.6" |
diff --git a/arch/ppc64/kernel/machine_kexec.c b/arch/ppc64/kernel/machine_kexec.c index bf7cc4f8210f..ff8679f260f3 100644 --- a/arch/ppc64/kernel/machine_kexec.c +++ b/arch/ppc64/kernel/machine_kexec.c | |||
| @@ -244,7 +244,6 @@ static void kexec_prepare_cpus(void) | |||
| 244 | 244 | ||
| 245 | static void kexec_prepare_cpus(void) | 245 | static void kexec_prepare_cpus(void) |
| 246 | { | 246 | { |
| 247 | extern void smp_release_cpus(void); | ||
| 248 | /* | 247 | /* |
| 249 | * move the secondarys to us so that we can copy | 248 | * move the secondarys to us so that we can copy |
| 250 | * the new kernel 0-0x100 safely | 249 | * the new kernel 0-0x100 safely |
diff --git a/arch/ppc64/kernel/pacaData.c b/arch/ppc64/kernel/pacaData.c index 33a2d8db3f21..5e27e5a6a35d 100644 --- a/arch/ppc64/kernel/pacaData.c +++ b/arch/ppc64/kernel/pacaData.c | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | #include <asm/page.h> | 17 | #include <asm/page.h> |
| 18 | 18 | ||
| 19 | #include <asm/lppaca.h> | 19 | #include <asm/lppaca.h> |
| 20 | #include <asm/iSeries/ItLpQueue.h> | 20 | #include <asm/iseries/it_lp_queue.h> |
| 21 | #include <asm/paca.h> | 21 | #include <asm/paca.h> |
| 22 | 22 | ||
| 23 | static union { | 23 | static union { |
diff --git a/arch/ppc64/kernel/pci_dn.c b/arch/ppc64/kernel/pci_dn.c index 493bbe43f5b4..1a443a7ada4c 100644 --- a/arch/ppc64/kernel/pci_dn.c +++ b/arch/ppc64/kernel/pci_dn.c | |||
| @@ -181,13 +181,14 @@ EXPORT_SYMBOL(fetch_dev_dn); | |||
| 181 | static int pci_dn_reconfig_notifier(struct notifier_block *nb, unsigned long action, void *node) | 181 | static int pci_dn_reconfig_notifier(struct notifier_block *nb, unsigned long action, void *node) |
| 182 | { | 182 | { |
| 183 | struct device_node *np = node; | 183 | struct device_node *np = node; |
| 184 | struct pci_dn *pci; | 184 | struct pci_dn *pci = NULL; |
| 185 | int err = NOTIFY_OK; | 185 | int err = NOTIFY_OK; |
| 186 | 186 | ||
| 187 | switch (action) { | 187 | switch (action) { |
| 188 | case PSERIES_RECONFIG_ADD: | 188 | case PSERIES_RECONFIG_ADD: |
| 189 | pci = np->parent->data; | 189 | pci = np->parent->data; |
| 190 | update_dn_pci_info(np, pci->phb); | 190 | if (pci) |
| 191 | update_dn_pci_info(np, pci->phb); | ||
| 191 | break; | 192 | break; |
| 192 | default: | 193 | default: |
| 193 | err = NOTIFY_DONE; | 194 | err = NOTIFY_DONE; |
diff --git a/arch/ppc64/kernel/proc_ppc64.c b/arch/ppc64/kernel/proc_ppc64.c index a87c66a9652a..24e955ee9487 100644 --- a/arch/ppc64/kernel/proc_ppc64.c +++ b/arch/ppc64/kernel/proc_ppc64.c | |||
| @@ -53,7 +53,7 @@ static int __init proc_ppc64_create(void) | |||
| 53 | if (!root) | 53 | if (!root) |
| 54 | return 1; | 54 | return 1; |
| 55 | 55 | ||
| 56 | if (!(systemcfg->platform & (PLATFORM_PSERIES | PLATFORM_BPA))) | 56 | if (!(systemcfg->platform & (PLATFORM_PSERIES | PLATFORM_CELL))) |
| 57 | return 0; | 57 | return 0; |
| 58 | 58 | ||
| 59 | if (!proc_mkdir("rtas", root)) | 59 | if (!proc_mkdir("rtas", root)) |
diff --git a/arch/ppc64/kernel/prom_init.c b/arch/ppc64/kernel/prom_init.c index 69924ba4d7d9..a4bbca6dbb8b 100644 --- a/arch/ppc64/kernel/prom_init.c +++ b/arch/ppc64/kernel/prom_init.c | |||
| @@ -1939,9 +1939,9 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4, unsigned long | |||
| 1939 | prom_send_capabilities(); | 1939 | prom_send_capabilities(); |
| 1940 | 1940 | ||
| 1941 | /* | 1941 | /* |
| 1942 | * On pSeries and BPA, copy the CPU hold code | 1942 | * On pSeries and Cell, copy the CPU hold code |
| 1943 | */ | 1943 | */ |
| 1944 | if (RELOC(of_platform) & (PLATFORM_PSERIES | PLATFORM_BPA)) | 1944 | if (RELOC(of_platform) & (PLATFORM_PSERIES | PLATFORM_CELL)) |
| 1945 | copy_and_flush(0, KERNELBASE - offset, 0x100, 0); | 1945 | copy_and_flush(0, KERNELBASE - offset, 0x100, 0); |
| 1946 | 1946 | ||
| 1947 | /* | 1947 | /* |
diff --git a/arch/ppc64/kernel/udbg_scc.c b/arch/ppc64/kernel/udbg_scc.c index c47fd6c63531..820c53551507 100644 --- a/arch/ppc64/kernel/udbg_scc.c +++ b/arch/ppc64/kernel/udbg_scc.c | |||
| @@ -12,7 +12,6 @@ | |||
| 12 | #include <linux/types.h> | 12 | #include <linux/types.h> |
| 13 | #include <asm/udbg.h> | 13 | #include <asm/udbg.h> |
| 14 | #include <asm/processor.h> | 14 | #include <asm/processor.h> |
| 15 | #include <asm/naca.h> | ||
| 16 | #include <asm/io.h> | 15 | #include <asm/io.h> |
| 17 | #include <asm/prom.h> | 16 | #include <asm/prom.h> |
| 18 | #include <asm/pmac_feature.h> | 17 | #include <asm/pmac_feature.h> |
diff --git a/arch/ppc64/lib/Makefile b/arch/ppc64/lib/Makefile deleted file mode 100644 index 42d5295bf345..000000000000 --- a/arch/ppc64/lib/Makefile +++ /dev/null | |||
| @@ -1,5 +0,0 @@ | |||
| 1 | # | ||
| 2 | # Makefile for ppc64-specific library files.. | ||
| 3 | # | ||
| 4 | |||
| 5 | lib-y := string.o | ||
diff --git a/arch/ppc64/lib/string.S b/arch/ppc64/lib/string.S deleted file mode 100644 index e21a0038a4d6..000000000000 --- a/arch/ppc64/lib/string.S +++ /dev/null | |||
| @@ -1,179 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * String handling functions for PowerPC. | ||
| 3 | * | ||
| 4 | * Copyright (C) 1996 Paul Mackerras. | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or | ||
| 7 | * modify it under the terms of the GNU General Public License | ||
| 8 | * as published by the Free Software Foundation; either version | ||
| 9 | * 2 of the License, or (at your option) any later version. | ||
| 10 | */ | ||
| 11 | #include <asm/processor.h> | ||
| 12 | #include <asm/errno.h> | ||
| 13 | #include <asm/ppc_asm.h> | ||
| 14 | |||
| 15 | _GLOBAL(strcpy) | ||
| 16 | addi r5,r3,-1 | ||
| 17 | addi r4,r4,-1 | ||
| 18 | 1: lbzu r0,1(r4) | ||
| 19 | cmpwi 0,r0,0 | ||
| 20 | stbu r0,1(r5) | ||
| 21 | bne 1b | ||
| 22 | blr | ||
| 23 | |||
| 24 | _GLOBAL(strncpy) | ||
| 25 | cmpwi 0,r5,0 | ||
| 26 | beqlr | ||
| 27 | mtctr r5 | ||
| 28 | addi r6,r3,-1 | ||
| 29 | addi r4,r4,-1 | ||
| 30 | 1: lbzu r0,1(r4) | ||
| 31 | cmpwi 0,r0,0 | ||
| 32 | stbu r0,1(r6) | ||
| 33 | bdnzf 2,1b /* dec ctr, branch if ctr != 0 && !cr0.eq */ | ||
| 34 | blr | ||
| 35 | |||
| 36 | _GLOBAL(strcat) | ||
| 37 | addi r5,r3,-1 | ||
| 38 | addi r4,r4,-1 | ||
| 39 | 1: lbzu r0,1(r5) | ||
| 40 | cmpwi 0,r0,0 | ||
| 41 | bne 1b | ||
| 42 | addi r5,r5,-1 | ||
| 43 | 1: lbzu r0,1(r4) | ||
| 44 | cmpwi 0,r0,0 | ||
| 45 | stbu r0,1(r5) | ||
| 46 | bne 1b | ||
| 47 | blr | ||
| 48 | |||
| 49 | _GLOBAL(strcmp) | ||
| 50 | addi r5,r3,-1 | ||
| 51 | addi r4,r4,-1 | ||
| 52 | 1: lbzu r3,1(r5) | ||
| 53 | cmpwi 1,r3,0 | ||
| 54 | lbzu r0,1(r4) | ||
| 55 | subf. r3,r0,r3 | ||
| 56 | beqlr 1 | ||
| 57 | beq 1b | ||
| 58 | blr | ||
| 59 | |||
| 60 | _GLOBAL(strlen) | ||
| 61 | addi r4,r3,-1 | ||
| 62 | 1: lbzu r0,1(r4) | ||
| 63 | cmpwi 0,r0,0 | ||
| 64 | bne 1b | ||
| 65 | subf r3,r3,r4 | ||
| 66 | blr | ||
| 67 | |||
| 68 | _GLOBAL(memcmp) | ||
| 69 | cmpwi 0,r5,0 | ||
| 70 | ble- 2f | ||
| 71 | mtctr r5 | ||
| 72 | addi r6,r3,-1 | ||
| 73 | addi r4,r4,-1 | ||
| 74 | 1: lbzu r3,1(r6) | ||
| 75 | lbzu r0,1(r4) | ||
| 76 | subf. r3,r0,r3 | ||
| 77 | bdnzt 2,1b | ||
| 78 | blr | ||
| 79 | 2: li r3,0 | ||
| 80 | blr | ||
| 81 | |||
| 82 | _GLOBAL(memchr) | ||
| 83 | cmpwi 0,r5,0 | ||
| 84 | ble- 2f | ||
| 85 | mtctr r5 | ||
| 86 | addi r3,r3,-1 | ||
| 87 | 1: lbzu r0,1(r3) | ||
| 88 | cmpw 0,r0,r4 | ||
| 89 | bdnzf 2,1b | ||
| 90 | beqlr | ||
| 91 | 2: li r3,0 | ||
| 92 | blr | ||
| 93 | |||
| 94 | _GLOBAL(__clear_user) | ||
| 95 | addi r6,r3,-4 | ||
| 96 | li r3,0 | ||
| 97 | li r5,0 | ||
| 98 | cmplwi 0,r4,4 | ||
| 99 | blt 7f | ||
| 100 | /* clear a single word */ | ||
| 101 | 11: stwu r5,4(r6) | ||
| 102 | beqlr | ||
| 103 | /* clear word sized chunks */ | ||
| 104 | andi. r0,r6,3 | ||
| 105 | add r4,r0,r4 | ||
| 106 | subf r6,r0,r6 | ||
| 107 | srwi r0,r4,2 | ||
| 108 | andi. r4,r4,3 | ||
| 109 | mtctr r0 | ||
| 110 | bdz 7f | ||
| 111 | 1: stwu r5,4(r6) | ||
| 112 | bdnz 1b | ||
| 113 | /* clear byte sized chunks */ | ||
| 114 | 7: cmpwi 0,r4,0 | ||
| 115 | beqlr | ||
| 116 | mtctr r4 | ||
| 117 | addi r6,r6,3 | ||
| 118 | 8: stbu r5,1(r6) | ||
| 119 | bdnz 8b | ||
| 120 | blr | ||
| 121 | 90: mr r3,r4 | ||
| 122 | blr | ||
| 123 | 91: mfctr r3 | ||
| 124 | slwi r3,r3,2 | ||
| 125 | add r3,r3,r4 | ||
| 126 | blr | ||
| 127 | 92: mfctr r3 | ||
| 128 | blr | ||
| 129 | |||
| 130 | .section __ex_table,"a" | ||
| 131 | .align 3 | ||
| 132 | .llong 11b,90b | ||
| 133 | .llong 1b,91b | ||
| 134 | .llong 8b,92b | ||
| 135 | .text | ||
| 136 | |||
| 137 | /* r3 = dst, r4 = src, r5 = count */ | ||
| 138 | _GLOBAL(__strncpy_from_user) | ||
| 139 | addi r6,r3,-1 | ||
| 140 | addi r4,r4,-1 | ||
| 141 | cmpwi 0,r5,0 | ||
| 142 | beq 2f | ||
| 143 | mtctr r5 | ||
| 144 | 1: lbzu r0,1(r4) | ||
| 145 | cmpwi 0,r0,0 | ||
| 146 | stbu r0,1(r6) | ||
| 147 | bdnzf 2,1b /* dec ctr, branch if ctr != 0 && !cr0.eq */ | ||
| 148 | beq 3f | ||
| 149 | 2: addi r6,r6,1 | ||
| 150 | 3: subf r3,r3,r6 | ||
| 151 | blr | ||
| 152 | 99: li r3,-EFAULT | ||
| 153 | blr | ||
| 154 | |||
| 155 | .section __ex_table,"a" | ||
| 156 | .align 3 | ||
| 157 | .llong 1b,99b | ||
| 158 | .text | ||
| 159 | |||
| 160 | /* r3 = str, r4 = len (> 0) */ | ||
| 161 | _GLOBAL(__strnlen_user) | ||
| 162 | addi r7,r3,-1 | ||
| 163 | mtctr r4 /* ctr = len */ | ||
| 164 | 1: lbzu r0,1(r7) /* get next byte */ | ||
| 165 | cmpwi 0,r0,0 | ||
| 166 | bdnzf 2,1b /* loop if --ctr != 0 && byte != 0 */ | ||
| 167 | addi r7,r7,1 | ||
| 168 | subf r3,r3,r7 /* number of bytes we have looked at */ | ||
| 169 | beqlr /* return if we found a 0 byte */ | ||
| 170 | cmpw 0,r3,r4 /* did we look at all len bytes? */ | ||
| 171 | blt 99f /* if not, must have hit top */ | ||
| 172 | addi r3,r4,1 /* return len + 1 to indicate no null found */ | ||
| 173 | blr | ||
| 174 | 99: li r3,0 /* bad address, return 0 */ | ||
| 175 | blr | ||
| 176 | |||
| 177 | .section __ex_table,"a" | ||
| 178 | .align 3 | ||
| 179 | .llong 1b,99b | ||
diff --git a/arch/sh/boards/superh/microdev/setup.c b/arch/sh/boards/superh/microdev/setup.c index c18919941ec0..1c1d65fb12df 100644 --- a/arch/sh/boards/superh/microdev/setup.c +++ b/arch/sh/boards/superh/microdev/setup.c | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | 13 | ||
| 14 | #include <linux/config.h> | 14 | #include <linux/config.h> |
| 15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
| 16 | #include <linux/device.h> | 16 | #include <linux/platform_device.h> |
| 17 | #include <linux/ioport.h> | 17 | #include <linux/ioport.h> |
| 18 | #include <asm/io.h> | 18 | #include <asm/io.h> |
| 19 | #include <asm/mach/irq.h> | 19 | #include <asm/mach/irq.h> |
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c index 1495007bf6c0..721e2601a75d 100644 --- a/arch/um/drivers/net_kern.c +++ b/arch/um/drivers/net_kern.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include "linux/ctype.h" | 20 | #include "linux/ctype.h" |
| 21 | #include "linux/bootmem.h" | 21 | #include "linux/bootmem.h" |
| 22 | #include "linux/ethtool.h" | 22 | #include "linux/ethtool.h" |
| 23 | #include "linux/platform_device.h" | ||
| 23 | #include "asm/uaccess.h" | 24 | #include "asm/uaccess.h" |
| 24 | #include "user_util.h" | 25 | #include "user_util.h" |
| 25 | #include "kern_util.h" | 26 | #include "kern_util.h" |
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index f73134333f64..b2c86257b0f8 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | #include "linux/blkpg.h" | 35 | #include "linux/blkpg.h" |
| 36 | #include "linux/genhd.h" | 36 | #include "linux/genhd.h" |
| 37 | #include "linux/spinlock.h" | 37 | #include "linux/spinlock.h" |
| 38 | #include "linux/platform_device.h" | ||
| 38 | #include "asm/segment.h" | 39 | #include "asm/segment.h" |
| 39 | #include "asm/uaccess.h" | 40 | #include "asm/uaccess.h" |
| 40 | #include "asm/irq.h" | 41 | #include "asm/irq.h" |
diff --git a/arch/um/include/net_kern.h b/arch/um/include/net_kern.h index 1c07949a13d6..f7de6df60dd7 100644 --- a/arch/um/include/net_kern.h +++ b/arch/um/include/net_kern.h | |||
| @@ -6,10 +6,11 @@ | |||
| 6 | #ifndef __UM_NET_KERN_H | 6 | #ifndef __UM_NET_KERN_H |
| 7 | #define __UM_NET_KERN_H | 7 | #define __UM_NET_KERN_H |
| 8 | 8 | ||
| 9 | #include "linux/netdevice.h" | 9 | #include <linux/netdevice.h> |
| 10 | #include "linux/skbuff.h" | 10 | #include <linux/platform_device.h> |
| 11 | #include "linux/socket.h" | 11 | #include <linux/skbuff.h> |
| 12 | #include "linux/list.h" | 12 | #include <linux/socket.h> |
| 13 | #include <linux/list.h> | ||
| 13 | 14 | ||
| 14 | struct uml_net { | 15 | struct uml_net { |
| 15 | struct list_head list; | 16 | struct list_head list; |
diff --git a/arch/x86_64/kernel/Makefile b/arch/x86_64/kernel/Makefile index bcdd0a805fe7..14328cab5d3a 100644 --- a/arch/x86_64/kernel/Makefile +++ b/arch/x86_64/kernel/Makefile | |||
| @@ -27,7 +27,6 @@ obj-$(CONFIG_CPU_FREQ) += cpufreq/ | |||
| 27 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o | 27 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o |
| 28 | obj-$(CONFIG_GART_IOMMU) += pci-gart.o aperture.o | 28 | obj-$(CONFIG_GART_IOMMU) += pci-gart.o aperture.o |
| 29 | obj-$(CONFIG_DUMMY_IOMMU) += pci-nommu.o pci-dma.o | 29 | obj-$(CONFIG_DUMMY_IOMMU) += pci-nommu.o pci-dma.o |
| 30 | obj-$(CONFIG_SWIOTLB) += swiotlb.o | ||
| 31 | obj-$(CONFIG_KPROBES) += kprobes.o | 30 | obj-$(CONFIG_KPROBES) += kprobes.o |
| 32 | obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o | 31 | obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o |
| 33 | 32 | ||
| @@ -41,7 +40,6 @@ CFLAGS_vsyscall.o := $(PROFILING) -g0 | |||
| 41 | bootflag-y += ../../i386/kernel/bootflag.o | 40 | bootflag-y += ../../i386/kernel/bootflag.o |
| 42 | cpuid-$(subst m,y,$(CONFIG_X86_CPUID)) += ../../i386/kernel/cpuid.o | 41 | cpuid-$(subst m,y,$(CONFIG_X86_CPUID)) += ../../i386/kernel/cpuid.o |
| 43 | topology-y += ../../i386/mach-default/topology.o | 42 | topology-y += ../../i386/mach-default/topology.o |
| 44 | swiotlb-$(CONFIG_SWIOTLB) += ../../ia64/lib/swiotlb.o | ||
| 45 | microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o | 43 | microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o |
| 46 | intel_cacheinfo-y += ../../i386/kernel/cpu/intel_cacheinfo.o | 44 | intel_cacheinfo-y += ../../i386/kernel/cpu/intel_cacheinfo.o |
| 47 | quirks-y += ../../i386/kernel/quirks.o | 45 | quirks-y += ../../i386/kernel/quirks.o |
diff --git a/arch/x86_64/lib/bitops.c b/arch/x86_64/lib/bitops.c index a29fb75b33ac..95b6d9639fba 100644 --- a/arch/x86_64/lib/bitops.c +++ b/arch/x86_64/lib/bitops.c | |||
| @@ -5,19 +5,23 @@ | |||
| 5 | #undef find_first_bit | 5 | #undef find_first_bit |
| 6 | #undef find_next_bit | 6 | #undef find_next_bit |
| 7 | 7 | ||
| 8 | /** | 8 | static inline long |
| 9 | * find_first_zero_bit - find the first zero bit in a memory region | 9 | __find_first_zero_bit(const unsigned long * addr, unsigned long size) |
| 10 | * @addr: The address to start the search at | ||
| 11 | * @size: The maximum size to search | ||
| 12 | * | ||
| 13 | * Returns the bit-number of the first zero bit, not the number of the byte | ||
| 14 | * containing a bit. | ||
| 15 | */ | ||
| 16 | inline long find_first_zero_bit(const unsigned long * addr, unsigned long size) | ||
| 17 | { | 10 | { |
| 18 | long d0, d1, d2; | 11 | long d0, d1, d2; |
| 19 | long res; | 12 | long res; |
| 20 | 13 | ||
| 14 | /* | ||
| 15 | * We must test the size in words, not in bits, because | ||
| 16 | * otherwise incoming sizes in the range -63..-1 will not run | ||
| 17 | * any scasq instructions, and then the flags used by the je | ||
| 18 | * instruction will have whatever random value was in place | ||
| 19 | * before. Nobody should call us like that, but | ||
| 20 | * find_next_zero_bit() does when offset and size are at the | ||
| 21 | * same word and it fails to find a zero itself. | ||
| 22 | */ | ||
| 23 | size += 63; | ||
| 24 | size >>= 6; | ||
| 21 | if (!size) | 25 | if (!size) |
| 22 | return 0; | 26 | return 0; |
| 23 | asm volatile( | 27 | asm volatile( |
| @@ -30,12 +34,30 @@ inline long find_first_zero_bit(const unsigned long * addr, unsigned long size) | |||
| 30 | " shlq $3,%%rdi\n" | 34 | " shlq $3,%%rdi\n" |
| 31 | " addq %%rdi,%%rdx" | 35 | " addq %%rdi,%%rdx" |
| 32 | :"=d" (res), "=&c" (d0), "=&D" (d1), "=&a" (d2) | 36 | :"=d" (res), "=&c" (d0), "=&D" (d1), "=&a" (d2) |
| 33 | :"0" (0ULL), "1" ((size + 63) >> 6), "2" (addr), "3" (-1ULL), | 37 | :"0" (0ULL), "1" (size), "2" (addr), "3" (-1ULL), |
| 34 | [addr] "r" (addr) : "memory"); | 38 | [addr] "S" (addr) : "memory"); |
| 39 | /* | ||
| 40 | * Any register would do for [addr] above, but GCC tends to | ||
| 41 | * prefer rbx over rsi, even though rsi is readily available | ||
| 42 | * and doesn't have to be saved. | ||
| 43 | */ | ||
| 35 | return res; | 44 | return res; |
| 36 | } | 45 | } |
| 37 | 46 | ||
| 38 | /** | 47 | /** |
| 48 | * find_first_zero_bit - find the first zero bit in a memory region | ||
| 49 | * @addr: The address to start the search at | ||
| 50 | * @size: The maximum size to search | ||
| 51 | * | ||
| 52 | * Returns the bit-number of the first zero bit, not the number of the byte | ||
| 53 | * containing a bit. | ||
| 54 | */ | ||
| 55 | long find_first_zero_bit(const unsigned long * addr, unsigned long size) | ||
| 56 | { | ||
| 57 | return __find_first_zero_bit (addr, size); | ||
| 58 | } | ||
| 59 | |||
| 60 | /** | ||
| 39 | * find_next_zero_bit - find the first zero bit in a memory region | 61 | * find_next_zero_bit - find the first zero bit in a memory region |
| 40 | * @addr: The address to base the search on | 62 | * @addr: The address to base the search on |
| 41 | * @offset: The bitnumber to start searching at | 63 | * @offset: The bitnumber to start searching at |
| @@ -43,7 +65,7 @@ inline long find_first_zero_bit(const unsigned long * addr, unsigned long size) | |||
| 43 | */ | 65 | */ |
| 44 | long find_next_zero_bit (const unsigned long * addr, long size, long offset) | 66 | long find_next_zero_bit (const unsigned long * addr, long size, long offset) |
| 45 | { | 67 | { |
| 46 | unsigned long * p = ((unsigned long *) addr) + (offset >> 6); | 68 | const unsigned long * p = addr + (offset >> 6); |
| 47 | unsigned long set = 0; | 69 | unsigned long set = 0; |
| 48 | unsigned long res, bit = offset&63; | 70 | unsigned long res, bit = offset&63; |
| 49 | 71 | ||
| @@ -63,8 +85,8 @@ long find_next_zero_bit (const unsigned long * addr, long size, long offset) | |||
| 63 | /* | 85 | /* |
| 64 | * No zero yet, search remaining full words for a zero | 86 | * No zero yet, search remaining full words for a zero |
| 65 | */ | 87 | */ |
| 66 | res = find_first_zero_bit ((const unsigned long *)p, | 88 | res = __find_first_zero_bit (p, size - 64 * (p - addr)); |
| 67 | size - 64 * (p - (unsigned long *) addr)); | 89 | |
| 68 | return (offset + set + res); | 90 | return (offset + set + res); |
| 69 | } | 91 | } |
| 70 | 92 | ||
| @@ -74,6 +96,19 @@ __find_first_bit(const unsigned long * addr, unsigned long size) | |||
| 74 | long d0, d1; | 96 | long d0, d1; |
| 75 | long res; | 97 | long res; |
| 76 | 98 | ||
| 99 | /* | ||
| 100 | * We must test the size in words, not in bits, because | ||
| 101 | * otherwise incoming sizes in the range -63..-1 will not run | ||
| 102 | * any scasq instructions, and then the flags used by the jz | ||
| 103 | * instruction will have whatever random value was in place | ||
| 104 | * before. Nobody should call us like that, but | ||
| 105 | * find_next_bit() does when offset and size are at the same | ||
| 106 | * word and it fails to find a one itself. | ||
| 107 | */ | ||
| 108 | size += 63; | ||
| 109 | size >>= 6; | ||
| 110 | if (!size) | ||
| 111 | return 0; | ||
| 77 | asm volatile( | 112 | asm volatile( |
| 78 | " repe; scasq\n" | 113 | " repe; scasq\n" |
| 79 | " jz 1f\n" | 114 | " jz 1f\n" |
| @@ -83,8 +118,7 @@ __find_first_bit(const unsigned long * addr, unsigned long size) | |||
| 83 | " shlq $3,%%rdi\n" | 118 | " shlq $3,%%rdi\n" |
| 84 | " addq %%rdi,%%rax" | 119 | " addq %%rdi,%%rax" |
| 85 | :"=a" (res), "=&c" (d0), "=&D" (d1) | 120 | :"=a" (res), "=&c" (d0), "=&D" (d1) |
| 86 | :"0" (0ULL), | 121 | :"0" (0ULL), "1" (size), "2" (addr), |
| 87 | "1" ((size + 63) >> 6), "2" (addr), | ||
| 88 | [addr] "r" (addr) : "memory"); | 122 | [addr] "r" (addr) : "memory"); |
| 89 | return res; | 123 | return res; |
| 90 | } | 124 | } |
diff --git a/arch/xtensa/platform-iss/network.c b/arch/xtensa/platform-iss/network.c index 498d7dced1f4..0682ffd38175 100644 --- a/arch/xtensa/platform-iss/network.c +++ b/arch/xtensa/platform-iss/network.c | |||
| @@ -33,6 +33,7 @@ | |||
| 33 | #include <linux/ethtool.h> | 33 | #include <linux/ethtool.h> |
| 34 | #include <linux/rtnetlink.h> | 34 | #include <linux/rtnetlink.h> |
| 35 | #include <linux/timer.h> | 35 | #include <linux/timer.h> |
| 36 | #include <linux/platform_device.h> | ||
| 36 | 37 | ||
| 37 | #include <xtensa/simcall.h> | 38 | #include <xtensa/simcall.h> |
| 38 | 39 | ||
