diff options
139 files changed, 8624 insertions, 548 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index d7c0984d4a86..e55bbd32dcac 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -114,9 +114,6 @@ config GENERIC_CALIBRATE_DELAY | |||
| 114 | bool | 114 | bool |
| 115 | default y | 115 | default y |
| 116 | 116 | ||
| 117 | config GENERIC_BUST_SPINLOCK | ||
| 118 | bool | ||
| 119 | |||
| 120 | config ARCH_MAY_HAVE_PC_FDC | 117 | config ARCH_MAY_HAVE_PC_FDC |
| 121 | bool | 118 | bool |
| 122 | 119 | ||
| @@ -247,6 +244,15 @@ config ARCH_IMX | |||
| 247 | help | 244 | help |
| 248 | Support for Motorola's i.MX family of processors (MX1, MXL). | 245 | Support for Motorola's i.MX family of processors (MX1, MXL). |
| 249 | 246 | ||
| 247 | config ARCH_IOP13XX | ||
| 248 | bool "IOP13xx-based" | ||
| 249 | depends on MMU | ||
| 250 | select PLAT_IOP | ||
| 251 | select PCI | ||
| 252 | select ARCH_SUPPORTS_MSI | ||
| 253 | help | ||
| 254 | Support for Intel's IOP13XX (XScale) family of processors. | ||
| 255 | |||
| 250 | config ARCH_IOP32X | 256 | config ARCH_IOP32X |
| 251 | bool "IOP32x-based" | 257 | bool "IOP32x-based" |
| 252 | depends on MMU | 258 | depends on MMU |
| @@ -264,22 +270,12 @@ config ARCH_IOP33X | |||
| 264 | help | 270 | help |
| 265 | Support for Intel's IOP33X (XScale) family of processors. | 271 | Support for Intel's IOP33X (XScale) family of processors. |
| 266 | 272 | ||
| 267 | config ARCH_IOP13XX | 273 | config ARCH_IXP23XX |
| 268 | bool "IOP13xx-based" | 274 | bool "IXP23XX-based" |
| 269 | depends on MMU | ||
| 270 | select PLAT_IOP | ||
| 271 | select PCI | ||
| 272 | select ARCH_SUPPORTS_MSI | ||
| 273 | help | ||
| 274 | Support for Intel's IOP13XX (XScale) family of processors. | ||
| 275 | |||
| 276 | config ARCH_IXP4XX | ||
| 277 | bool "IXP4xx-based" | ||
| 278 | depends on MMU | 275 | depends on MMU |
| 279 | select GENERIC_TIME | 276 | select PCI |
| 280 | select GENERIC_CLOCKEVENTS | ||
| 281 | help | 277 | help |
| 282 | Support for Intel's IXP4XX (XScale) family of processors. | 278 | Support for Intel's IXP23xx (XScale) family of processors. |
| 283 | 279 | ||
| 284 | config ARCH_IXP2000 | 280 | config ARCH_IXP2000 |
| 285 | bool "IXP2400/2800-based" | 281 | bool "IXP2400/2800-based" |
| @@ -288,12 +284,13 @@ config ARCH_IXP2000 | |||
| 288 | help | 284 | help |
| 289 | Support for Intel's IXP2400/2800 (XScale) family of processors. | 285 | Support for Intel's IXP2400/2800 (XScale) family of processors. |
| 290 | 286 | ||
| 291 | config ARCH_IXP23XX | 287 | config ARCH_IXP4XX |
| 292 | bool "IXP23XX-based" | 288 | bool "IXP4xx-based" |
| 293 | depends on MMU | 289 | depends on MMU |
| 294 | select PCI | 290 | select GENERIC_TIME |
| 291 | select GENERIC_CLOCKEVENTS | ||
| 295 | help | 292 | help |
| 296 | Support for Intel's IXP23xx (XScale) family of processors. | 293 | Support for Intel's IXP4XX (XScale) family of processors. |
| 297 | 294 | ||
| 298 | config ARCH_L7200 | 295 | config ARCH_L7200 |
| 299 | bool "LinkUp-L7200" | 296 | bool "LinkUp-L7200" |
| @@ -308,6 +305,12 @@ config ARCH_L7200 | |||
| 308 | If you have any questions or comments about the Linux kernel port | 305 | If you have any questions or comments about the Linux kernel port |
| 309 | to this board, send e-mail to <sjhill@cotw.com>. | 306 | to this board, send e-mail to <sjhill@cotw.com>. |
| 310 | 307 | ||
| 308 | config ARCH_KS8695 | ||
| 309 | bool "Micrel/Kendin KS8695" | ||
| 310 | help | ||
| 311 | Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based | ||
| 312 | System-on-Chip devices. | ||
| 313 | |||
| 311 | config ARCH_NS9XXX | 314 | config ARCH_NS9XXX |
| 312 | bool "NetSilicon NS9xxx" | 315 | bool "NetSilicon NS9xxx" |
| 313 | help | 316 | help |
| @@ -354,7 +357,6 @@ config ARCH_SA1100 | |||
| 354 | config ARCH_S3C2410 | 357 | config ARCH_S3C2410 |
| 355 | bool "Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442, S3C2443" | 358 | bool "Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442, S3C2443" |
| 356 | select GENERIC_GPIO | 359 | select GENERIC_GPIO |
| 357 | select GENERIC_TIME | ||
| 358 | help | 360 | help |
| 359 | Samsung S3C2410X CPU based systems, such as the Simtec Electronics | 361 | Samsung S3C2410X CPU based systems, such as the Simtec Electronics |
| 360 | BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or | 362 | BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or |
| @@ -377,6 +379,13 @@ config ARCH_LH7A40X | |||
| 377 | core with a wide array of integrated devices for | 379 | core with a wide array of integrated devices for |
| 378 | hand-held and low-power applications. | 380 | hand-held and low-power applications. |
| 379 | 381 | ||
| 382 | config ARCH_DAVINCI | ||
| 383 | bool "TI DaVinci" | ||
| 384 | select GENERIC_TIME | ||
| 385 | select GENERIC_CLOCKEVENTS | ||
| 386 | help | ||
| 387 | Support for TI's DaVinci platform. | ||
| 388 | |||
| 380 | config ARCH_OMAP | 389 | config ARCH_OMAP |
| 381 | bool "TI OMAP" | 390 | bool "TI OMAP" |
| 382 | select GENERIC_GPIO | 391 | select GENERIC_GPIO |
| @@ -445,6 +454,10 @@ source "arch/arm/mach-netx/Kconfig" | |||
| 445 | 454 | ||
| 446 | source "arch/arm/mach-ns9xxx/Kconfig" | 455 | source "arch/arm/mach-ns9xxx/Kconfig" |
| 447 | 456 | ||
| 457 | source "arch/arm/mach-davinci/Kconfig" | ||
| 458 | |||
| 459 | source "arch/arm/mach-ks8695/Kconfig" | ||
| 460 | |||
| 448 | # Definitions to make life easier | 461 | # Definitions to make life easier |
| 449 | config ARCH_ACORN | 462 | config ARCH_ACORN |
| 450 | bool | 463 | bool |
| @@ -505,7 +518,7 @@ config ISA_DMA_API | |||
| 505 | bool | 518 | bool |
| 506 | 519 | ||
| 507 | config PCI | 520 | config PCI |
| 508 | bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX | 521 | bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX || ARCH_KS8695 |
| 509 | help | 522 | help |
| 510 | Find out whether you have a PCI motherboard. PCI is the name of a | 523 | Find out whether you have a PCI motherboard. PCI is the name of a |
| 511 | bus system, i.e. the way the CPU talks to the other stuff inside | 524 | bus system, i.e. the way the CPU talks to the other stuff inside |
| @@ -674,7 +687,8 @@ config LEDS | |||
| 674 | ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \ | 687 | ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \ |
| 675 | ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \ | 688 | ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \ |
| 676 | ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \ | 689 | ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \ |
| 677 | ARCH_AT91 || MACH_TRIZEPS4 | 690 | ARCH_AT91 || MACH_TRIZEPS4 || ARCH_DAVINCI || \ |
| 691 | ARCH_KS8695 | ||
| 678 | help | 692 | help |
| 679 | If you say Y here, the LEDs on your machine will be used | 693 | If you say Y here, the LEDs on your machine will be used |
| 680 | to provide useful information about your current system status. | 694 | to provide useful information about your current system status. |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 00ea4305ad5d..cbd5010d3bc3 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
| @@ -135,6 +135,8 @@ endif | |||
| 135 | machine-$(CONFIG_ARCH_NETX) := netx | 135 | machine-$(CONFIG_ARCH_NETX) := netx |
| 136 | machine-$(CONFIG_ARCH_NS9XXX) := ns9xxx | 136 | machine-$(CONFIG_ARCH_NS9XXX) := ns9xxx |
| 137 | textofs-$(CONFIG_ARCH_NS9XXX) := 0x00108000 | 137 | textofs-$(CONFIG_ARCH_NS9XXX) := 0x00108000 |
| 138 | machine-$(CONFIG_ARCH_DAVINCI) := davinci | ||
| 139 | machine-$(CONFIG_ARCH_KS8695) := ks8695 | ||
| 138 | 140 | ||
| 139 | ifeq ($(CONFIG_ARCH_EBSA110),y) | 141 | ifeq ($(CONFIG_ARCH_EBSA110),y) |
| 140 | # This is what happens if you forget the IOCS16 line. | 142 | # This is what happens if you forget the IOCS16 line. |
diff --git a/arch/arm/configs/at91sam9rlek_defconfig b/arch/arm/configs/at91sam9rlek_defconfig new file mode 100644 index 000000000000..fbe8b3049343 --- /dev/null +++ b/arch/arm/configs/at91sam9rlek_defconfig | |||
| @@ -0,0 +1,957 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.21 | ||
| 4 | # Mon May 7 16:30:40 2007 | ||
| 5 | # | ||
| 6 | CONFIG_ARM=y | ||
| 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
| 8 | CONFIG_GENERIC_GPIO=y | ||
| 9 | # CONFIG_GENERIC_TIME is not set | ||
| 10 | CONFIG_MMU=y | ||
| 11 | # CONFIG_NO_IOPORT is not set | ||
| 12 | CONFIG_GENERIC_HARDIRQS=y | ||
| 13 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 14 | CONFIG_HARDIRQS_SW_RESEND=y | ||
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 16 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 17 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
| 18 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
| 19 | CONFIG_GENERIC_HWEIGHT=y | ||
| 20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 21 | CONFIG_ZONE_DMA=y | ||
| 22 | CONFIG_VECTORS_BASE=0xffff0000 | ||
| 23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 24 | |||
| 25 | # | ||
| 26 | # Code maturity level options | ||
| 27 | # | ||
| 28 | CONFIG_EXPERIMENTAL=y | ||
| 29 | CONFIG_BROKEN_ON_SMP=y | ||
| 30 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 31 | |||
| 32 | # | ||
| 33 | # General setup | ||
| 34 | # | ||
| 35 | CONFIG_LOCALVERSION="" | ||
| 36 | # CONFIG_LOCALVERSION_AUTO is not set | ||
| 37 | # CONFIG_SWAP is not set | ||
| 38 | CONFIG_SYSVIPC=y | ||
| 39 | # CONFIG_IPC_NS is not set | ||
| 40 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 41 | # CONFIG_POSIX_MQUEUE is not set | ||
| 42 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
| 43 | # CONFIG_TASKSTATS is not set | ||
| 44 | # CONFIG_UTS_NS is not set | ||
| 45 | # CONFIG_AUDIT is not set | ||
| 46 | # CONFIG_IKCONFIG is not set | ||
| 47 | CONFIG_SYSFS_DEPRECATED=y | ||
| 48 | # CONFIG_RELAY is not set | ||
| 49 | CONFIG_BLK_DEV_INITRD=y | ||
| 50 | CONFIG_INITRAMFS_SOURCE="" | ||
| 51 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
| 52 | CONFIG_SYSCTL=y | ||
| 53 | # CONFIG_EMBEDDED is not set | ||
| 54 | CONFIG_UID16=y | ||
| 55 | CONFIG_SYSCTL_SYSCALL=y | ||
| 56 | CONFIG_KALLSYMS=y | ||
| 57 | # CONFIG_KALLSYMS_ALL is not set | ||
| 58 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 59 | CONFIG_HOTPLUG=y | ||
| 60 | CONFIG_PRINTK=y | ||
| 61 | CONFIG_BUG=y | ||
| 62 | CONFIG_ELF_CORE=y | ||
| 63 | CONFIG_BASE_FULL=y | ||
| 64 | CONFIG_FUTEX=y | ||
| 65 | CONFIG_EPOLL=y | ||
| 66 | CONFIG_SHMEM=y | ||
| 67 | CONFIG_SLAB=y | ||
| 68 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 69 | CONFIG_RT_MUTEXES=y | ||
| 70 | # CONFIG_TINY_SHMEM is not set | ||
| 71 | CONFIG_BASE_SMALL=0 | ||
| 72 | # CONFIG_SLOB is not set | ||
| 73 | |||
| 74 | # | ||
| 75 | # Loadable module support | ||
| 76 | # | ||
| 77 | CONFIG_MODULES=y | ||
| 78 | CONFIG_MODULE_UNLOAD=y | ||
| 79 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
| 80 | # CONFIG_MODVERSIONS is not set | ||
| 81 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
| 82 | CONFIG_KMOD=y | ||
| 83 | |||
| 84 | # | ||
| 85 | # Block layer | ||
| 86 | # | ||
| 87 | CONFIG_BLOCK=y | ||
| 88 | # CONFIG_LBD is not set | ||
| 89 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 90 | # CONFIG_LSF is not set | ||
| 91 | |||
| 92 | # | ||
| 93 | # IO Schedulers | ||
| 94 | # | ||
| 95 | CONFIG_IOSCHED_NOOP=y | ||
| 96 | CONFIG_IOSCHED_AS=y | ||
| 97 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 98 | # CONFIG_IOSCHED_CFQ is not set | ||
| 99 | CONFIG_DEFAULT_AS=y | ||
| 100 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 101 | # CONFIG_DEFAULT_CFQ is not set | ||
| 102 | # CONFIG_DEFAULT_NOOP is not set | ||
| 103 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
| 104 | |||
| 105 | # | ||
| 106 | # System Type | ||
| 107 | # | ||
| 108 | # CONFIG_ARCH_AAEC2000 is not set | ||
| 109 | # CONFIG_ARCH_INTEGRATOR is not set | ||
| 110 | # CONFIG_ARCH_REALVIEW is not set | ||
| 111 | # CONFIG_ARCH_VERSATILE is not set | ||
| 112 | CONFIG_ARCH_AT91=y | ||
| 113 | # CONFIG_ARCH_CLPS7500 is not set | ||
| 114 | # CONFIG_ARCH_CLPS711X is not set | ||
| 115 | # CONFIG_ARCH_CO285 is not set | ||
| 116 | # CONFIG_ARCH_EBSA110 is not set | ||
| 117 | # CONFIG_ARCH_EP93XX is not set | ||
| 118 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
| 119 | # CONFIG_ARCH_NETX is not set | ||
| 120 | # CONFIG_ARCH_H720X is not set | ||
| 121 | # CONFIG_ARCH_IMX is not set | ||
| 122 | # CONFIG_ARCH_IOP32X is not set | ||
| 123 | # CONFIG_ARCH_IOP33X is not set | ||
| 124 | # CONFIG_ARCH_IOP13XX is not set | ||
| 125 | # CONFIG_ARCH_IXP4XX is not set | ||
| 126 | # CONFIG_ARCH_IXP2000 is not set | ||
| 127 | # CONFIG_ARCH_IXP23XX is not set | ||
| 128 | # CONFIG_ARCH_L7200 is not set | ||
| 129 | # CONFIG_ARCH_NS9XXX is not set | ||
| 130 | # CONFIG_ARCH_PNX4008 is not set | ||
| 131 | # CONFIG_ARCH_PXA is not set | ||
| 132 | # CONFIG_ARCH_RPC is not set | ||
| 133 | # CONFIG_ARCH_SA1100 is not set | ||
| 134 | # CONFIG_ARCH_S3C2410 is not set | ||
| 135 | # CONFIG_ARCH_SHARK is not set | ||
| 136 | # CONFIG_ARCH_LH7A40X is not set | ||
| 137 | # CONFIG_ARCH_OMAP is not set | ||
| 138 | |||
| 139 | # | ||
| 140 | # Atmel AT91 System-on-Chip | ||
| 141 | # | ||
| 142 | # CONFIG_ARCH_AT91RM9200 is not set | ||
| 143 | # CONFIG_ARCH_AT91SAM9260 is not set | ||
| 144 | # CONFIG_ARCH_AT91SAM9261 is not set | ||
| 145 | # CONFIG_ARCH_AT91SAM9263 is not set | ||
| 146 | CONFIG_ARCH_AT91SAM9RL=y | ||
| 147 | |||
| 148 | # | ||
| 149 | # AT91SAM9RL Board Type | ||
| 150 | # | ||
| 151 | CONFIG_MACH_AT91SAM9RLEK=y | ||
| 152 | |||
| 153 | # | ||
| 154 | # AT91 Board Options | ||
| 155 | # | ||
| 156 | |||
| 157 | # | ||
| 158 | # AT91 Feature Selections | ||
| 159 | # | ||
| 160 | # CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set | ||
| 161 | |||
| 162 | # | ||
| 163 | # Processor Type | ||
| 164 | # | ||
| 165 | CONFIG_CPU_32=y | ||
| 166 | CONFIG_CPU_ARM926T=y | ||
| 167 | CONFIG_CPU_32v5=y | ||
| 168 | CONFIG_CPU_ABRT_EV5TJ=y | ||
| 169 | CONFIG_CPU_CACHE_VIVT=y | ||
| 170 | CONFIG_CPU_COPY_V4WB=y | ||
| 171 | CONFIG_CPU_TLB_V4WBI=y | ||
| 172 | CONFIG_CPU_CP15=y | ||
| 173 | CONFIG_CPU_CP15_MMU=y | ||
| 174 | |||
| 175 | # | ||
| 176 | # Processor Features | ||
| 177 | # | ||
| 178 | # CONFIG_ARM_THUMB is not set | ||
| 179 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
| 180 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
| 181 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | ||
| 182 | # CONFIG_CPU_CACHE_ROUND_ROBIN is not set | ||
| 183 | # CONFIG_OUTER_CACHE is not set | ||
| 184 | |||
| 185 | # | ||
| 186 | # Bus support | ||
| 187 | # | ||
| 188 | |||
| 189 | # | ||
| 190 | # PCCARD (PCMCIA/CardBus) support | ||
| 191 | # | ||
| 192 | # CONFIG_PCCARD is not set | ||
| 193 | |||
| 194 | # | ||
| 195 | # Kernel Features | ||
| 196 | # | ||
| 197 | # CONFIG_PREEMPT is not set | ||
| 198 | # CONFIG_NO_IDLE_HZ is not set | ||
| 199 | CONFIG_HZ=100 | ||
| 200 | # CONFIG_AEABI is not set | ||
| 201 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | ||
| 202 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 203 | CONFIG_FLATMEM_MANUAL=y | ||
| 204 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 205 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 206 | CONFIG_FLATMEM=y | ||
| 207 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 208 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 209 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
| 210 | # CONFIG_RESOURCES_64BIT is not set | ||
| 211 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 212 | # CONFIG_LEDS is not set | ||
| 213 | CONFIG_ALIGNMENT_TRAP=y | ||
| 214 | |||
| 215 | # | ||
| 216 | # Boot options | ||
| 217 | # | ||
| 218 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
| 219 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
| 220 | CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,17105363 root=/dev/ram0 rw" | ||
| 221 | # CONFIG_XIP_KERNEL is not set | ||
| 222 | # CONFIG_KEXEC is not set | ||
| 223 | |||
| 224 | # | ||
| 225 | # Floating point emulation | ||
| 226 | # | ||
| 227 | |||
| 228 | # | ||
| 229 | # At least one emulation must be selected | ||
| 230 | # | ||
| 231 | CONFIG_FPE_NWFPE=y | ||
| 232 | # CONFIG_FPE_NWFPE_XP is not set | ||
| 233 | # CONFIG_FPE_FASTFPE is not set | ||
| 234 | # CONFIG_VFP is not set | ||
| 235 | |||
| 236 | # | ||
| 237 | # Userspace binary formats | ||
| 238 | # | ||
| 239 | CONFIG_BINFMT_ELF=y | ||
| 240 | # CONFIG_BINFMT_AOUT is not set | ||
| 241 | # CONFIG_BINFMT_MISC is not set | ||
| 242 | # CONFIG_ARTHUR is not set | ||
| 243 | |||
| 244 | # | ||
| 245 | # Power management options | ||
| 246 | # | ||
| 247 | # CONFIG_PM is not set | ||
| 248 | |||
| 249 | # | ||
| 250 | # Networking | ||
| 251 | # | ||
| 252 | CONFIG_NET=y | ||
| 253 | |||
| 254 | # | ||
| 255 | # Networking options | ||
| 256 | # | ||
| 257 | # CONFIG_NETDEBUG is not set | ||
| 258 | # CONFIG_PACKET is not set | ||
| 259 | CONFIG_UNIX=y | ||
| 260 | # CONFIG_NET_KEY is not set | ||
| 261 | # CONFIG_INET is not set | ||
| 262 | # CONFIG_NETWORK_SECMARK is not set | ||
| 263 | # CONFIG_NETFILTER is not set | ||
| 264 | # CONFIG_ATM is not set | ||
| 265 | # CONFIG_BRIDGE is not set | ||
| 266 | # CONFIG_VLAN_8021Q is not set | ||
| 267 | # CONFIG_DECNET is not set | ||
| 268 | # CONFIG_LLC2 is not set | ||
| 269 | # CONFIG_IPX is not set | ||
| 270 | # CONFIG_ATALK is not set | ||
| 271 | # CONFIG_X25 is not set | ||
| 272 | # CONFIG_LAPB is not set | ||
| 273 | # CONFIG_WAN_ROUTER is not set | ||
| 274 | |||
| 275 | # | ||
| 276 | # QoS and/or fair queueing | ||
| 277 | # | ||
| 278 | # CONFIG_NET_SCHED is not set | ||
| 279 | |||
| 280 | # | ||
| 281 | # Network testing | ||
| 282 | # | ||
| 283 | # CONFIG_NET_PKTGEN is not set | ||
| 284 | # CONFIG_HAMRADIO is not set | ||
| 285 | # CONFIG_IRDA is not set | ||
| 286 | # CONFIG_BT is not set | ||
| 287 | # CONFIG_IEEE80211 is not set | ||
| 288 | |||
| 289 | # | ||
| 290 | # Device Drivers | ||
| 291 | # | ||
| 292 | |||
| 293 | # | ||
| 294 | # Generic Driver Options | ||
| 295 | # | ||
| 296 | CONFIG_STANDALONE=y | ||
| 297 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 298 | # CONFIG_FW_LOADER is not set | ||
| 299 | # CONFIG_DEBUG_DRIVER is not set | ||
| 300 | # CONFIG_DEBUG_DEVRES is not set | ||
| 301 | # CONFIG_SYS_HYPERVISOR 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=y | ||
| 312 | # CONFIG_MTD_DEBUG is not set | ||
| 313 | CONFIG_MTD_CONCAT=y | ||
| 314 | CONFIG_MTD_PARTITIONS=y | ||
| 315 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 316 | CONFIG_MTD_CMDLINE_PARTS=y | ||
| 317 | # CONFIG_MTD_AFS_PARTS is not set | ||
| 318 | |||
| 319 | # | ||
| 320 | # User Modules And Translation Layers | ||
| 321 | # | ||
| 322 | CONFIG_MTD_CHAR=y | ||
| 323 | CONFIG_MTD_BLKDEVS=y | ||
| 324 | CONFIG_MTD_BLOCK=y | ||
| 325 | # CONFIG_FTL is not set | ||
| 326 | # CONFIG_NFTL is not set | ||
| 327 | # CONFIG_INFTL is not set | ||
| 328 | # CONFIG_RFD_FTL is not set | ||
| 329 | # CONFIG_SSFDC is not set | ||
| 330 | |||
| 331 | # | ||
| 332 | # RAM/ROM/Flash chip drivers | ||
| 333 | # | ||
| 334 | # CONFIG_MTD_CFI is not set | ||
| 335 | # CONFIG_MTD_JEDECPROBE is not set | ||
| 336 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 337 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 338 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 339 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 340 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 341 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 342 | CONFIG_MTD_CFI_I1=y | ||
| 343 | CONFIG_MTD_CFI_I2=y | ||
| 344 | # CONFIG_MTD_CFI_I4 is not set | ||
| 345 | # CONFIG_MTD_CFI_I8 is not set | ||
| 346 | # CONFIG_MTD_RAM is not set | ||
| 347 | # CONFIG_MTD_ROM is not set | ||
| 348 | # CONFIG_MTD_ABSENT is not set | ||
| 349 | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||
| 350 | |||
| 351 | # | ||
| 352 | # Mapping drivers for chip access | ||
| 353 | # | ||
| 354 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 355 | # CONFIG_MTD_PLATRAM is not set | ||
| 356 | |||
| 357 | # | ||
| 358 | # Self-contained MTD device drivers | ||
| 359 | # | ||
| 360 | CONFIG_MTD_DATAFLASH=y | ||
| 361 | # CONFIG_MTD_M25P80 is not set | ||
| 362 | # CONFIG_MTD_SLRAM is not set | ||
| 363 | # CONFIG_MTD_PHRAM is not set | ||
| 364 | # CONFIG_MTD_MTDRAM is not set | ||
| 365 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 366 | |||
| 367 | # | ||
| 368 | # Disk-On-Chip Device Drivers | ||
| 369 | # | ||
| 370 | # CONFIG_MTD_DOC2000 is not set | ||
| 371 | # CONFIG_MTD_DOC2001 is not set | ||
| 372 | # CONFIG_MTD_DOC2001PLUS is not set | ||
| 373 | |||
| 374 | # | ||
| 375 | # NAND Flash Device Drivers | ||
| 376 | # | ||
| 377 | CONFIG_MTD_NAND=y | ||
| 378 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 379 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 380 | CONFIG_MTD_NAND_IDS=y | ||
| 381 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 382 | CONFIG_MTD_NAND_AT91=y | ||
| 383 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
| 384 | |||
| 385 | # | ||
| 386 | # OneNAND Flash Device Drivers | ||
| 387 | # | ||
| 388 | # CONFIG_MTD_ONENAND is not set | ||
| 389 | |||
| 390 | # | ||
| 391 | # Parallel port support | ||
| 392 | # | ||
| 393 | # CONFIG_PARPORT is not set | ||
| 394 | |||
| 395 | # | ||
| 396 | # Plug and Play support | ||
| 397 | # | ||
| 398 | # CONFIG_PNPACPI is not set | ||
| 399 | |||
| 400 | # | ||
| 401 | # Block devices | ||
| 402 | # | ||
| 403 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 404 | CONFIG_BLK_DEV_LOOP=y | ||
| 405 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 406 | # CONFIG_BLK_DEV_NBD is not set | ||
| 407 | CONFIG_BLK_DEV_RAM=y | ||
| 408 | CONFIG_BLK_DEV_RAM_COUNT=4 | ||
| 409 | CONFIG_BLK_DEV_RAM_SIZE=24576 | ||
| 410 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
| 411 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 412 | # CONFIG_ATA_OVER_ETH is not set | ||
| 413 | |||
| 414 | # | ||
| 415 | # SCSI device support | ||
| 416 | # | ||
| 417 | # CONFIG_RAID_ATTRS is not set | ||
| 418 | CONFIG_SCSI=y | ||
| 419 | # CONFIG_SCSI_TGT is not set | ||
| 420 | # CONFIG_SCSI_NETLINK is not set | ||
| 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 is not set | ||
| 428 | # CONFIG_CHR_DEV_OSST is not set | ||
| 429 | # CONFIG_BLK_DEV_SR is not set | ||
| 430 | # CONFIG_CHR_DEV_SG is not set | ||
| 431 | # CONFIG_CHR_DEV_SCH is not set | ||
| 432 | |||
| 433 | # | ||
| 434 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
| 435 | # | ||
| 436 | CONFIG_SCSI_MULTI_LUN=y | ||
| 437 | # CONFIG_SCSI_CONSTANTS is not set | ||
| 438 | # CONFIG_SCSI_LOGGING is not set | ||
| 439 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 440 | |||
| 441 | # | ||
| 442 | # SCSI Transports | ||
| 443 | # | ||
| 444 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
| 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 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
| 449 | |||
| 450 | # | ||
| 451 | # SCSI low-level drivers | ||
| 452 | # | ||
| 453 | # CONFIG_SCSI_DEBUG is not set | ||
| 454 | |||
| 455 | # | ||
| 456 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
| 457 | # | ||
| 458 | # CONFIG_ATA is not set | ||
| 459 | |||
| 460 | # | ||
| 461 | # Multi-device support (RAID and LVM) | ||
| 462 | # | ||
| 463 | # CONFIG_MD is not set | ||
| 464 | |||
| 465 | # | ||
| 466 | # Fusion MPT device support | ||
| 467 | # | ||
| 468 | # CONFIG_FUSION is not set | ||
| 469 | |||
| 470 | # | ||
| 471 | # IEEE 1394 (FireWire) support | ||
| 472 | # | ||
| 473 | |||
| 474 | # | ||
| 475 | # I2O device support | ||
| 476 | # | ||
| 477 | |||
| 478 | # | ||
| 479 | # Network device support | ||
| 480 | # | ||
| 481 | # CONFIG_NETDEVICES is not set | ||
| 482 | # CONFIG_NETPOLL is not set | ||
| 483 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 484 | |||
| 485 | # | ||
| 486 | # ISDN subsystem | ||
| 487 | # | ||
| 488 | # CONFIG_ISDN is not set | ||
| 489 | |||
| 490 | # | ||
| 491 | # Input device support | ||
| 492 | # | ||
| 493 | CONFIG_INPUT=y | ||
| 494 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
| 495 | |||
| 496 | # | ||
| 497 | # Userland interfaces | ||
| 498 | # | ||
| 499 | CONFIG_INPUT_MOUSEDEV=y | ||
| 500 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
| 501 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=320 | ||
| 502 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 | ||
| 503 | # CONFIG_INPUT_JOYDEV is not set | ||
| 504 | # CONFIG_INPUT_TSDEV is not set | ||
| 505 | CONFIG_INPUT_EVDEV=y | ||
| 506 | # CONFIG_INPUT_EVBUG is not set | ||
| 507 | |||
| 508 | # | ||
| 509 | # Input Device Drivers | ||
| 510 | # | ||
| 511 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 512 | # CONFIG_INPUT_MOUSE is not set | ||
| 513 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 514 | CONFIG_INPUT_TOUCHSCREEN=y | ||
| 515 | # CONFIG_TOUCHSCREEN_ADS7846 is not set | ||
| 516 | # CONFIG_TOUCHSCREEN_GUNZE is not set | ||
| 517 | # CONFIG_TOUCHSCREEN_ELO is not set | ||
| 518 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | ||
| 519 | # CONFIG_TOUCHSCREEN_MK712 is not set | ||
| 520 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set | ||
| 521 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set | ||
| 522 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set | ||
| 523 | # CONFIG_TOUCHSCREEN_UCB1400 is not set | ||
| 524 | # CONFIG_INPUT_MISC is not set | ||
| 525 | |||
| 526 | # | ||
| 527 | # Hardware I/O ports | ||
| 528 | # | ||
| 529 | # CONFIG_SERIO is not set | ||
| 530 | # CONFIG_GAMEPORT is not set | ||
| 531 | |||
| 532 | # | ||
| 533 | # Character devices | ||
| 534 | # | ||
| 535 | CONFIG_VT=y | ||
| 536 | CONFIG_VT_CONSOLE=y | ||
| 537 | CONFIG_HW_CONSOLE=y | ||
| 538 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 539 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 540 | |||
| 541 | # | ||
| 542 | # Serial drivers | ||
| 543 | # | ||
| 544 | # CONFIG_SERIAL_8250 is not set | ||
| 545 | |||
| 546 | # | ||
| 547 | # Non-8250 serial port support | ||
| 548 | # | ||
| 549 | CONFIG_SERIAL_ATMEL=y | ||
| 550 | CONFIG_SERIAL_ATMEL_CONSOLE=y | ||
| 551 | # CONFIG_SERIAL_ATMEL_TTYAT is not set | ||
| 552 | CONFIG_SERIAL_CORE=y | ||
| 553 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 554 | CONFIG_UNIX98_PTYS=y | ||
| 555 | CONFIG_LEGACY_PTYS=y | ||
| 556 | CONFIG_LEGACY_PTY_COUNT=256 | ||
| 557 | |||
| 558 | # | ||
| 559 | # IPMI | ||
| 560 | # | ||
| 561 | # CONFIG_IPMI_HANDLER is not set | ||
| 562 | |||
| 563 | # | ||
| 564 | # Watchdog Cards | ||
| 565 | # | ||
| 566 | CONFIG_WATCHDOG=y | ||
| 567 | CONFIG_WATCHDOG_NOWAYOUT=y | ||
| 568 | |||
| 569 | # | ||
| 570 | # Watchdog Device Drivers | ||
| 571 | # | ||
| 572 | # CONFIG_SOFT_WATCHDOG is not set | ||
| 573 | CONFIG_HW_RANDOM=y | ||
| 574 | # CONFIG_NVRAM is not set | ||
| 575 | # CONFIG_DTLK is not set | ||
| 576 | # CONFIG_R3964 is not set | ||
| 577 | # CONFIG_RAW_DRIVER is not set | ||
| 578 | |||
| 579 | # | ||
| 580 | # TPM devices | ||
| 581 | # | ||
| 582 | # CONFIG_TCG_TPM is not set | ||
| 583 | |||
| 584 | # | ||
| 585 | # I2C support | ||
| 586 | # | ||
| 587 | # CONFIG_I2C is not set | ||
| 588 | |||
| 589 | # | ||
| 590 | # SPI support | ||
| 591 | # | ||
| 592 | CONFIG_SPI=y | ||
| 593 | # CONFIG_SPI_DEBUG is not set | ||
| 594 | CONFIG_SPI_MASTER=y | ||
| 595 | |||
| 596 | # | ||
| 597 | # SPI Master Controller Drivers | ||
| 598 | # | ||
| 599 | CONFIG_SPI_ATMEL=y | ||
| 600 | # CONFIG_SPI_BITBANG is not set | ||
| 601 | |||
| 602 | # | ||
| 603 | # SPI Protocol Masters | ||
| 604 | # | ||
| 605 | # CONFIG_SPI_AT25 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 | # Multifunction device drivers | ||
| 624 | # | ||
| 625 | # CONFIG_MFD_SM501 is not set | ||
| 626 | |||
| 627 | # | ||
| 628 | # LED devices | ||
| 629 | # | ||
| 630 | # CONFIG_NEW_LEDS is not set | ||
| 631 | |||
| 632 | # | ||
| 633 | # LED drivers | ||
| 634 | # | ||
| 635 | |||
| 636 | # | ||
| 637 | # LED Triggers | ||
| 638 | # | ||
| 639 | |||
| 640 | # | ||
| 641 | # Multimedia devices | ||
| 642 | # | ||
| 643 | # CONFIG_VIDEO_DEV is not set | ||
| 644 | |||
| 645 | # | ||
| 646 | # Digital Video Broadcasting Devices | ||
| 647 | # | ||
| 648 | |||
| 649 | # | ||
| 650 | # Graphics support | ||
| 651 | # | ||
| 652 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 653 | CONFIG_FB=y | ||
| 654 | # CONFIG_FIRMWARE_EDID is not set | ||
| 655 | # CONFIG_FB_DDC is not set | ||
| 656 | CONFIG_FB_CFB_FILLRECT=y | ||
| 657 | CONFIG_FB_CFB_COPYAREA=y | ||
| 658 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 659 | # CONFIG_FB_SVGALIB is not set | ||
| 660 | # CONFIG_FB_MACMODES is not set | ||
| 661 | # CONFIG_FB_BACKLIGHT is not set | ||
| 662 | # CONFIG_FB_MODE_HELPERS is not set | ||
| 663 | # CONFIG_FB_TILEBLITTING is not set | ||
| 664 | |||
| 665 | # | ||
| 666 | # Frame buffer hardware drivers | ||
| 667 | # | ||
| 668 | # CONFIG_FB_S1D13XXX is not set | ||
| 669 | CONFIG_FB_ATMEL=y | ||
| 670 | # CONFIG_FB_VIRTUAL is not set | ||
| 671 | |||
| 672 | # | ||
| 673 | # Console display driver support | ||
| 674 | # | ||
| 675 | # CONFIG_VGA_CONSOLE is not set | ||
| 676 | CONFIG_DUMMY_CONSOLE=y | ||
| 677 | # CONFIG_FRAMEBUFFER_CONSOLE is not set | ||
| 678 | |||
| 679 | # | ||
| 680 | # Logo configuration | ||
| 681 | # | ||
| 682 | # CONFIG_LOGO is not set | ||
| 683 | |||
| 684 | # | ||
| 685 | # Sound | ||
| 686 | # | ||
| 687 | CONFIG_SOUND=y | ||
| 688 | |||
| 689 | # | ||
| 690 | # Advanced Linux Sound Architecture | ||
| 691 | # | ||
| 692 | CONFIG_SND=y | ||
| 693 | CONFIG_SND_TIMER=y | ||
| 694 | CONFIG_SND_PCM=y | ||
| 695 | CONFIG_SND_SEQUENCER=y | ||
| 696 | CONFIG_SND_SEQ_DUMMY=y | ||
| 697 | CONFIG_SND_OSSEMUL=y | ||
| 698 | CONFIG_SND_MIXER_OSS=y | ||
| 699 | CONFIG_SND_PCM_OSS=y | ||
| 700 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
| 701 | CONFIG_SND_SEQUENCER_OSS=y | ||
| 702 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
| 703 | CONFIG_SND_SUPPORT_OLD_API=y | ||
| 704 | CONFIG_SND_VERBOSE_PROCFS=y | ||
| 705 | CONFIG_SND_VERBOSE_PRINTK=y | ||
| 706 | CONFIG_SND_DEBUG=y | ||
| 707 | CONFIG_SND_DEBUG_DETECT=y | ||
| 708 | # CONFIG_SND_PCM_XRUN_DEBUG is not set | ||
| 709 | |||
| 710 | # | ||
| 711 | # Generic devices | ||
| 712 | # | ||
| 713 | # CONFIG_SND_DUMMY is not set | ||
| 714 | # CONFIG_SND_VIRMIDI is not set | ||
| 715 | # CONFIG_SND_MTPAV is not set | ||
| 716 | # CONFIG_SND_SERIAL_U16550 is not set | ||
| 717 | # CONFIG_SND_MPU401 is not set | ||
| 718 | |||
| 719 | # | ||
| 720 | # ALSA ARM devices | ||
| 721 | # | ||
| 722 | |||
| 723 | # | ||
| 724 | # SoC audio support | ||
| 725 | # | ||
| 726 | # CONFIG_SND_SOC is not set | ||
| 727 | |||
| 728 | # | ||
| 729 | # Open Sound System | ||
| 730 | # | ||
| 731 | # CONFIG_SOUND_PRIME is not set | ||
| 732 | |||
| 733 | # | ||
| 734 | # HID Devices | ||
| 735 | # | ||
| 736 | CONFIG_HID=y | ||
| 737 | # CONFIG_HID_DEBUG is not set | ||
| 738 | |||
| 739 | # | ||
| 740 | # USB support | ||
| 741 | # | ||
| 742 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 743 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 744 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
| 745 | # CONFIG_USB is not set | ||
| 746 | |||
| 747 | # | ||
| 748 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
| 749 | # | ||
| 750 | |||
| 751 | # | ||
| 752 | # USB Gadget Support | ||
| 753 | # | ||
| 754 | # CONFIG_USB_GADGET is not set | ||
| 755 | |||
| 756 | # | ||
| 757 | # MMC/SD Card support | ||
| 758 | # | ||
| 759 | CONFIG_MMC=y | ||
| 760 | # CONFIG_MMC_DEBUG is not set | ||
| 761 | CONFIG_MMC_BLOCK=y | ||
| 762 | CONFIG_MMC_AT91=y | ||
| 763 | |||
| 764 | # | ||
| 765 | # Real Time Clock | ||
| 766 | # | ||
| 767 | CONFIG_RTC_LIB=y | ||
| 768 | # CONFIG_RTC_CLASS is not set | ||
| 769 | |||
| 770 | # | ||
| 771 | # File systems | ||
| 772 | # | ||
| 773 | CONFIG_EXT2_FS=y | ||
| 774 | # CONFIG_EXT2_FS_XATTR is not set | ||
| 775 | # CONFIG_EXT2_FS_XIP is not set | ||
| 776 | # CONFIG_EXT3_FS is not set | ||
| 777 | # CONFIG_EXT4DEV_FS is not set | ||
| 778 | # CONFIG_REISERFS_FS is not set | ||
| 779 | # CONFIG_JFS_FS is not set | ||
| 780 | # CONFIG_FS_POSIX_ACL is not set | ||
| 781 | # CONFIG_XFS_FS is not set | ||
| 782 | # CONFIG_GFS2_FS is not set | ||
| 783 | # CONFIG_OCFS2_FS is not set | ||
| 784 | # CONFIG_MINIX_FS is not set | ||
| 785 | # CONFIG_ROMFS_FS is not set | ||
| 786 | CONFIG_INOTIFY=y | ||
| 787 | CONFIG_INOTIFY_USER=y | ||
| 788 | # CONFIG_QUOTA is not set | ||
| 789 | CONFIG_DNOTIFY=y | ||
| 790 | # CONFIG_AUTOFS_FS is not set | ||
| 791 | # CONFIG_AUTOFS4_FS is not set | ||
| 792 | # CONFIG_FUSE_FS is not set | ||
| 793 | |||
| 794 | # | ||
| 795 | # CD-ROM/DVD Filesystems | ||
| 796 | # | ||
| 797 | # CONFIG_ISO9660_FS is not set | ||
| 798 | # CONFIG_UDF_FS is not set | ||
| 799 | |||
| 800 | # | ||
| 801 | # DOS/FAT/NT Filesystems | ||
| 802 | # | ||
| 803 | CONFIG_FAT_FS=y | ||
| 804 | CONFIG_MSDOS_FS=y | ||
| 805 | CONFIG_VFAT_FS=y | ||
| 806 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 807 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 808 | # CONFIG_NTFS_FS is not set | ||
| 809 | |||
| 810 | # | ||
| 811 | # Pseudo filesystems | ||
| 812 | # | ||
| 813 | CONFIG_PROC_FS=y | ||
| 814 | CONFIG_PROC_SYSCTL=y | ||
| 815 | CONFIG_SYSFS=y | ||
| 816 | CONFIG_TMPFS=y | ||
| 817 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
| 818 | # CONFIG_HUGETLB_PAGE is not set | ||
| 819 | CONFIG_RAMFS=y | ||
| 820 | # CONFIG_CONFIGFS_FS is not set | ||
| 821 | |||
| 822 | # | ||
| 823 | # Miscellaneous filesystems | ||
| 824 | # | ||
| 825 | # CONFIG_ADFS_FS is not set | ||
| 826 | # CONFIG_AFFS_FS is not set | ||
| 827 | # CONFIG_HFS_FS is not set | ||
| 828 | # CONFIG_HFSPLUS_FS is not set | ||
| 829 | # CONFIG_BEFS_FS is not set | ||
| 830 | # CONFIG_BFS_FS is not set | ||
| 831 | # CONFIG_EFS_FS is not set | ||
| 832 | # CONFIG_JFFS2_FS is not set | ||
| 833 | CONFIG_CRAMFS=y | ||
| 834 | # CONFIG_VXFS_FS is not set | ||
| 835 | # CONFIG_HPFS_FS is not set | ||
| 836 | # CONFIG_QNX4FS_FS is not set | ||
| 837 | # CONFIG_SYSV_FS is not set | ||
| 838 | # CONFIG_UFS_FS is not set | ||
| 839 | |||
| 840 | # | ||
| 841 | # Network File Systems | ||
| 842 | # | ||
| 843 | |||
| 844 | # | ||
| 845 | # Partition Types | ||
| 846 | # | ||
| 847 | # CONFIG_PARTITION_ADVANCED is not set | ||
| 848 | CONFIG_MSDOS_PARTITION=y | ||
| 849 | |||
| 850 | # | ||
| 851 | # Native Language Support | ||
| 852 | # | ||
| 853 | CONFIG_NLS=y | ||
| 854 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 855 | CONFIG_NLS_CODEPAGE_437=y | ||
| 856 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 857 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 858 | CONFIG_NLS_CODEPAGE_850=y | ||
| 859 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 860 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 861 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 862 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 863 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 864 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 865 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 866 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 867 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 868 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 869 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 870 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 871 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 872 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 873 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 874 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 875 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 876 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 877 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 878 | # CONFIG_NLS_ASCII is not set | ||
| 879 | CONFIG_NLS_ISO8859_1=y | ||
| 880 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 881 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 882 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 883 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 884 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 885 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 886 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 887 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 888 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 889 | CONFIG_NLS_ISO8859_15=y | ||
| 890 | # CONFIG_NLS_KOI8_R is not set | ||
| 891 | # CONFIG_NLS_KOI8_U is not set | ||
| 892 | CONFIG_NLS_UTF8=y | ||
| 893 | |||
| 894 | # | ||
| 895 | # Profiling support | ||
| 896 | # | ||
| 897 | # CONFIG_PROFILING is not set | ||
| 898 | |||
| 899 | # | ||
| 900 | # Kernel hacking | ||
| 901 | # | ||
| 902 | # CONFIG_PRINTK_TIME is not set | ||
| 903 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 904 | # CONFIG_MAGIC_SYSRQ is not set | ||
| 905 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 906 | # CONFIG_DEBUG_FS is not set | ||
| 907 | # CONFIG_HEADERS_CHECK is not set | ||
| 908 | CONFIG_DEBUG_KERNEL=y | ||
| 909 | # CONFIG_DEBUG_SHIRQ is not set | ||
| 910 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 911 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 912 | # CONFIG_SCHEDSTATS is not set | ||
| 913 | # CONFIG_TIMER_STATS is not set | ||
| 914 | # CONFIG_DEBUG_SLAB is not set | ||
| 915 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
| 916 | # CONFIG_RT_MUTEX_TESTER is not set | ||
| 917 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 918 | # CONFIG_DEBUG_MUTEXES is not set | ||
| 919 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 920 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 921 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 922 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 923 | CONFIG_DEBUG_INFO=y | ||
| 924 | # CONFIG_DEBUG_VM is not set | ||
| 925 | # CONFIG_DEBUG_LIST is not set | ||
| 926 | CONFIG_FRAME_POINTER=y | ||
| 927 | CONFIG_FORCED_INLINING=y | ||
| 928 | # CONFIG_RCU_TORTURE_TEST is not set | ||
| 929 | # CONFIG_FAULT_INJECTION is not set | ||
| 930 | CONFIG_DEBUG_USER=y | ||
| 931 | # CONFIG_DEBUG_ERRORS is not set | ||
| 932 | CONFIG_DEBUG_LL=y | ||
| 933 | # CONFIG_DEBUG_ICEDCC is not set | ||
| 934 | |||
| 935 | # | ||
| 936 | # Security options | ||
| 937 | # | ||
| 938 | # CONFIG_KEYS is not set | ||
| 939 | # CONFIG_SECURITY is not set | ||
| 940 | |||
| 941 | # | ||
| 942 | # Cryptographic options | ||
| 943 | # | ||
| 944 | # CONFIG_CRYPTO is not set | ||
| 945 | |||
| 946 | # | ||
| 947 | # Library routines | ||
| 948 | # | ||
| 949 | CONFIG_BITREVERSE=y | ||
| 950 | # CONFIG_CRC_CCITT is not set | ||
| 951 | # CONFIG_CRC16 is not set | ||
| 952 | CONFIG_CRC32=y | ||
| 953 | # CONFIG_LIBCRC32C is not set | ||
| 954 | CONFIG_ZLIB_INFLATE=y | ||
| 955 | CONFIG_PLIST=y | ||
| 956 | CONFIG_HAS_IOMEM=y | ||
| 957 | CONFIG_HAS_IOPORT=y | ||
diff --git a/arch/arm/configs/ks8695_defconfig b/arch/arm/configs/ks8695_defconfig new file mode 100644 index 000000000000..8ab21a0719e9 --- /dev/null +++ b/arch/arm/configs/ks8695_defconfig | |||
| @@ -0,0 +1,880 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.17-rc4 | ||
| 4 | # Thu May 25 15:42:51 2006 | ||
| 5 | # | ||
| 6 | CONFIG_ARM=y | ||
| 7 | CONFIG_MMU=y | ||
| 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 9 | CONFIG_GENERIC_HWEIGHT=y | ||
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 11 | CONFIG_VECTORS_BASE=0xffff0000 | ||
| 12 | |||
| 13 | # | ||
| 14 | # Code maturity level options | ||
| 15 | # | ||
| 16 | CONFIG_EXPERIMENTAL=y | ||
| 17 | CONFIG_BROKEN_ON_SMP=y | ||
| 18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 19 | |||
| 20 | # | ||
| 21 | # General setup | ||
| 22 | # | ||
| 23 | CONFIG_LOCALVERSION="" | ||
| 24 | CONFIG_LOCALVERSION_AUTO=y | ||
| 25 | # CONFIG_SWAP is not set | ||
| 26 | CONFIG_SYSVIPC=y | ||
| 27 | # CONFIG_POSIX_MQUEUE is not set | ||
| 28 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
| 29 | CONFIG_SYSCTL=y | ||
| 30 | # CONFIG_AUDIT is not set | ||
| 31 | # CONFIG_IKCONFIG is not set | ||
| 32 | # CONFIG_RELAY is not set | ||
| 33 | CONFIG_INITRAMFS_SOURCE="" | ||
| 34 | CONFIG_UID16=y | ||
| 35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
| 36 | # CONFIG_EMBEDDED is not set | ||
| 37 | CONFIG_KALLSYMS=y | ||
| 38 | # CONFIG_KALLSYMS_ALL is not set | ||
| 39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 40 | CONFIG_HOTPLUG=y | ||
| 41 | CONFIG_PRINTK=y | ||
| 42 | CONFIG_BUG=y | ||
| 43 | CONFIG_ELF_CORE=y | ||
| 44 | CONFIG_BASE_FULL=y | ||
| 45 | CONFIG_FUTEX=y | ||
| 46 | CONFIG_EPOLL=y | ||
| 47 | CONFIG_SHMEM=y | ||
| 48 | CONFIG_SLAB=y | ||
| 49 | # CONFIG_TINY_SHMEM is not set | ||
| 50 | CONFIG_BASE_SMALL=0 | ||
| 51 | # CONFIG_SLOB is not set | ||
| 52 | CONFIG_OBSOLETE_INTERMODULE=y | ||
| 53 | |||
| 54 | # | ||
| 55 | # Loadable module support | ||
| 56 | # | ||
| 57 | CONFIG_MODULES=y | ||
| 58 | CONFIG_MODULE_UNLOAD=y | ||
| 59 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
| 60 | # CONFIG_MODVERSIONS is not set | ||
| 61 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
| 62 | CONFIG_KMOD=y | ||
| 63 | |||
| 64 | # | ||
| 65 | # Block layer | ||
| 66 | # | ||
| 67 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 68 | |||
| 69 | # | ||
| 70 | # IO Schedulers | ||
| 71 | # | ||
| 72 | CONFIG_IOSCHED_NOOP=y | ||
| 73 | CONFIG_IOSCHED_AS=y | ||
| 74 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 75 | # CONFIG_IOSCHED_CFQ is not set | ||
| 76 | CONFIG_DEFAULT_AS=y | ||
| 77 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 78 | # CONFIG_DEFAULT_CFQ is not set | ||
| 79 | # CONFIG_DEFAULT_NOOP is not set | ||
| 80 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
| 81 | |||
| 82 | # | ||
| 83 | # System Type | ||
| 84 | # | ||
| 85 | # CONFIG_ARCH_CLPS7500 is not set | ||
| 86 | # CONFIG_ARCH_CLPS711X is not set | ||
| 87 | # CONFIG_ARCH_CO285 is not set | ||
| 88 | # CONFIG_ARCH_EBSA110 is not set | ||
| 89 | # CONFIG_ARCH_EP93XX is not set | ||
| 90 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
| 91 | # CONFIG_ARCH_INTEGRATOR is not set | ||
| 92 | # CONFIG_ARCH_IOP3XX is not set | ||
| 93 | # CONFIG_ARCH_IXP4XX is not set | ||
| 94 | # CONFIG_ARCH_IXP2000 is not set | ||
| 95 | # CONFIG_ARCH_IXP23XX is not set | ||
| 96 | # CONFIG_ARCH_L7200 is not set | ||
| 97 | # CONFIG_ARCH_PXA is not set | ||
| 98 | # CONFIG_ARCH_RPC is not set | ||
| 99 | # CONFIG_ARCH_SA1100 is not set | ||
| 100 | # CONFIG_ARCH_S3C2410 is not set | ||
| 101 | # CONFIG_ARCH_SHARK is not set | ||
| 102 | # CONFIG_ARCH_LH7A40X is not set | ||
| 103 | # CONFIG_ARCH_OMAP is not set | ||
| 104 | # CONFIG_ARCH_VERSATILE is not set | ||
| 105 | # CONFIG_ARCH_REALVIEW is not set | ||
| 106 | # CONFIG_ARCH_IMX is not set | ||
| 107 | # CONFIG_ARCH_H720X is not set | ||
| 108 | # CONFIG_ARCH_AAEC2000 is not set | ||
| 109 | # CONFIG_ARCH_AT91 is not set | ||
| 110 | CONFIG_ARCH_KS8695=y | ||
| 111 | |||
| 112 | # | ||
| 113 | # Kendin/Micrel KS8695 Implementations | ||
| 114 | # | ||
| 115 | CONFIG_MACH_KS8695=y | ||
| 116 | # CONFIG_MACH_DSM320 is not set | ||
| 117 | # CONFIG_MACH_CM4002 is not set | ||
| 118 | # CONFIG_MACH_CM4008 is not set | ||
| 119 | # CONFIG_MACH_CM40xx is not set | ||
| 120 | # CONFIG_MACH_LITE300 is not set | ||
| 121 | # CONFIG_MACH_SE4200 is not set | ||
| 122 | # CONFIG_MACH_MANGA_KS8695 is not set | ||
| 123 | |||
| 124 | # | ||
| 125 | # Processor Type | ||
| 126 | # | ||
| 127 | CONFIG_CPU_32=y | ||
| 128 | CONFIG_CPU_ARM922T=y | ||
| 129 | CONFIG_CPU_32v4=y | ||
| 130 | CONFIG_CPU_ABRT_EV4T=y | ||
| 131 | CONFIG_CPU_CACHE_V4WT=y | ||
| 132 | CONFIG_CPU_CACHE_VIVT=y | ||
| 133 | CONFIG_CPU_COPY_V4WB=y | ||
| 134 | CONFIG_CPU_TLB_V4WBI=y | ||
| 135 | |||
| 136 | # | ||
| 137 | # Processor Features | ||
| 138 | # | ||
| 139 | # CONFIG_ARM_THUMB is not set | ||
| 140 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
| 141 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
| 142 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | ||
| 143 | |||
| 144 | # | ||
| 145 | # Bus support | ||
| 146 | # | ||
| 147 | CONFIG_PCI=y | ||
| 148 | CONFIG_PCI_DEBUG=y | ||
| 149 | |||
| 150 | # | ||
| 151 | # PCCARD (PCMCIA/CardBus) support | ||
| 152 | # | ||
| 153 | CONFIG_PCCARD=y | ||
| 154 | # CONFIG_PCMCIA_DEBUG is not set | ||
| 155 | CONFIG_PCMCIA=y | ||
| 156 | CONFIG_PCMCIA_LOAD_CIS=y | ||
| 157 | CONFIG_PCMCIA_IOCTL=y | ||
| 158 | CONFIG_CARDBUS=y | ||
| 159 | |||
| 160 | # | ||
| 161 | # PC-card bridges | ||
| 162 | # | ||
| 163 | CONFIG_YENTA=y | ||
| 164 | CONFIG_YENTA_O2=y | ||
| 165 | CONFIG_YENTA_RICOH=y | ||
| 166 | CONFIG_YENTA_TI=y | ||
| 167 | CONFIG_YENTA_ENE_TUNE=y | ||
| 168 | CONFIG_YENTA_TOSHIBA=y | ||
| 169 | # CONFIG_PD6729 is not set | ||
| 170 | # CONFIG_I82092 is not set | ||
| 171 | CONFIG_PCCARD_NONSTATIC=y | ||
| 172 | |||
| 173 | # | ||
| 174 | # Kernel Features | ||
| 175 | # | ||
| 176 | # CONFIG_PREEMPT is not set | ||
| 177 | # CONFIG_NO_IDLE_HZ is not set | ||
| 178 | CONFIG_HZ=100 | ||
| 179 | # CONFIG_AEABI is not set | ||
| 180 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | ||
| 181 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 182 | CONFIG_FLATMEM_MANUAL=y | ||
| 183 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 184 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 185 | CONFIG_FLATMEM=y | ||
| 186 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 187 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 188 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
| 189 | CONFIG_ALIGNMENT_TRAP=y | ||
| 190 | |||
| 191 | # | ||
| 192 | # Boot options | ||
| 193 | # | ||
| 194 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
| 195 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
| 196 | CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw" | ||
| 197 | # CONFIG_XIP_KERNEL is not set | ||
| 198 | |||
| 199 | # | ||
| 200 | # Floating point emulation | ||
| 201 | # | ||
| 202 | |||
| 203 | # | ||
| 204 | # At least one emulation must be selected | ||
| 205 | # | ||
| 206 | CONFIG_FPE_NWFPE=y | ||
| 207 | # CONFIG_FPE_NWFPE_XP is not set | ||
| 208 | # CONFIG_FPE_FASTFPE is not set | ||
| 209 | |||
| 210 | # | ||
| 211 | # Userspace binary formats | ||
| 212 | # | ||
| 213 | CONFIG_BINFMT_ELF=y | ||
| 214 | # CONFIG_BINFMT_AOUT is not set | ||
| 215 | # CONFIG_BINFMT_MISC is not set | ||
| 216 | # CONFIG_ARTHUR is not set | ||
| 217 | |||
| 218 | # | ||
| 219 | # Power management options | ||
| 220 | # | ||
| 221 | # CONFIG_PM is not set | ||
| 222 | # CONFIG_APM is not set | ||
| 223 | |||
| 224 | # | ||
| 225 | # Networking | ||
| 226 | # | ||
| 227 | CONFIG_NET=y | ||
| 228 | |||
| 229 | # | ||
| 230 | # Networking options | ||
| 231 | # | ||
| 232 | # CONFIG_NETDEBUG is not set | ||
| 233 | CONFIG_PACKET=y | ||
| 234 | # CONFIG_PACKET_MMAP is not set | ||
| 235 | CONFIG_UNIX=y | ||
| 236 | # CONFIG_NET_KEY is not set | ||
| 237 | CONFIG_INET=y | ||
| 238 | # CONFIG_IP_MULTICAST is not set | ||
| 239 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 240 | CONFIG_IP_FIB_HASH=y | ||
| 241 | CONFIG_IP_PNP=y | ||
| 242 | # CONFIG_IP_PNP_DHCP is not set | ||
| 243 | CONFIG_IP_PNP_BOOTP=y | ||
| 244 | # CONFIG_IP_PNP_RARP is not set | ||
| 245 | # CONFIG_NET_IPIP is not set | ||
| 246 | # CONFIG_NET_IPGRE is not set | ||
| 247 | # CONFIG_ARPD is not set | ||
| 248 | # CONFIG_SYN_COOKIES is not set | ||
| 249 | # CONFIG_INET_AH is not set | ||
| 250 | # CONFIG_INET_ESP is not set | ||
| 251 | # CONFIG_INET_IPCOMP is not set | ||
| 252 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
| 253 | # CONFIG_INET_TUNNEL is not set | ||
| 254 | CONFIG_INET_DIAG=y | ||
| 255 | CONFIG_INET_TCP_DIAG=y | ||
| 256 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 257 | CONFIG_TCP_CONG_BIC=y | ||
| 258 | # CONFIG_IPV6 is not set | ||
| 259 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
| 260 | # CONFIG_INET6_TUNNEL is not set | ||
| 261 | # CONFIG_NETFILTER is not set | ||
| 262 | |||
| 263 | # | ||
| 264 | # DCCP Configuration (EXPERIMENTAL) | ||
| 265 | # | ||
| 266 | # CONFIG_IP_DCCP is not set | ||
| 267 | |||
| 268 | # | ||
| 269 | # SCTP Configuration (EXPERIMENTAL) | ||
| 270 | # | ||
| 271 | # CONFIG_IP_SCTP is not set | ||
| 272 | |||
| 273 | # | ||
| 274 | # TIPC Configuration (EXPERIMENTAL) | ||
| 275 | # | ||
| 276 | # CONFIG_TIPC is not set | ||
| 277 | # CONFIG_ATM is not set | ||
| 278 | # CONFIG_BRIDGE is not set | ||
| 279 | # CONFIG_VLAN_8021Q is not set | ||
| 280 | # CONFIG_DECNET is not set | ||
| 281 | # CONFIG_LLC2 is not set | ||
| 282 | # CONFIG_IPX is not set | ||
| 283 | # CONFIG_ATALK is not set | ||
| 284 | # CONFIG_X25 is not set | ||
| 285 | # CONFIG_LAPB is not set | ||
| 286 | # CONFIG_NET_DIVERT is not set | ||
| 287 | # CONFIG_ECONET is not set | ||
| 288 | # CONFIG_WAN_ROUTER is not set | ||
| 289 | |||
| 290 | # | ||
| 291 | # QoS and/or fair queueing | ||
| 292 | # | ||
| 293 | # CONFIG_NET_SCHED is not set | ||
| 294 | |||
| 295 | # | ||
| 296 | # Network testing | ||
| 297 | # | ||
| 298 | # CONFIG_NET_PKTGEN is not set | ||
| 299 | # CONFIG_HAMRADIO is not set | ||
| 300 | # CONFIG_IRDA is not set | ||
| 301 | # CONFIG_BT is not set | ||
| 302 | # CONFIG_IEEE80211 is not set | ||
| 303 | |||
| 304 | # | ||
| 305 | # Device Drivers | ||
| 306 | # | ||
| 307 | |||
| 308 | # | ||
| 309 | # Generic Driver Options | ||
| 310 | # | ||
| 311 | CONFIG_STANDALONE=y | ||
| 312 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 313 | CONFIG_FW_LOADER=y | ||
| 314 | # CONFIG_DEBUG_DRIVER is not set | ||
| 315 | |||
| 316 | # | ||
| 317 | # Connector - unified userspace <-> kernelspace linker | ||
| 318 | # | ||
| 319 | # CONFIG_CONNECTOR is not set | ||
| 320 | |||
| 321 | # | ||
| 322 | # Memory Technology Devices (MTD) | ||
| 323 | # | ||
| 324 | CONFIG_MTD=y | ||
| 325 | # CONFIG_MTD_DEBUG is not set | ||
| 326 | # CONFIG_MTD_CONCAT is not set | ||
| 327 | CONFIG_MTD_PARTITIONS=y | ||
| 328 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 329 | CONFIG_MTD_CMDLINE_PARTS=y | ||
| 330 | # CONFIG_MTD_AFS_PARTS is not set | ||
| 331 | |||
| 332 | # | ||
| 333 | # User Modules And Translation Layers | ||
| 334 | # | ||
| 335 | CONFIG_MTD_CHAR=y | ||
| 336 | CONFIG_MTD_BLOCK=y | ||
| 337 | # CONFIG_FTL is not set | ||
| 338 | # CONFIG_NFTL is not set | ||
| 339 | # CONFIG_INFTL is not set | ||
| 340 | # CONFIG_RFD_FTL is not set | ||
| 341 | |||
| 342 | # | ||
| 343 | # RAM/ROM/Flash chip drivers | ||
| 344 | # | ||
| 345 | CONFIG_MTD_CFI=y | ||
| 346 | CONFIG_MTD_JEDECPROBE=y | ||
| 347 | CONFIG_MTD_GEN_PROBE=y | ||
| 348 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 349 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 350 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 351 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 352 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 353 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 354 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 355 | CONFIG_MTD_CFI_I1=y | ||
| 356 | CONFIG_MTD_CFI_I2=y | ||
| 357 | # CONFIG_MTD_CFI_I4 is not set | ||
| 358 | # CONFIG_MTD_CFI_I8 is not set | ||
| 359 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
| 360 | CONFIG_MTD_CFI_AMDSTD=y | ||
| 361 | # CONFIG_MTD_CFI_STAA is not set | ||
| 362 | CONFIG_MTD_CFI_UTIL=y | ||
| 363 | # CONFIG_MTD_RAM is not set | ||
| 364 | # CONFIG_MTD_ROM is not set | ||
| 365 | # CONFIG_MTD_ABSENT is not set | ||
| 366 | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||
| 367 | |||
| 368 | # | ||
| 369 | # Mapping drivers for chip access | ||
| 370 | # | ||
| 371 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 372 | # CONFIG_MTD_PHYSMAP is not set | ||
| 373 | # CONFIG_MTD_ARM_INTEGRATOR is not set | ||
| 374 | # CONFIG_MTD_IMPA7 is not set | ||
| 375 | # CONFIG_MTD_PLATRAM is not set | ||
| 376 | |||
| 377 | # | ||
| 378 | # Self-contained MTD device drivers | ||
| 379 | # | ||
| 380 | # CONFIG_MTD_PMC551 is not set | ||
| 381 | # CONFIG_MTD_SLRAM is not set | ||
| 382 | # CONFIG_MTD_PHRAM is not set | ||
| 383 | # CONFIG_MTD_MTDRAM is not set | ||
| 384 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 385 | |||
| 386 | # | ||
| 387 | # Disk-On-Chip Device Drivers | ||
| 388 | # | ||
| 389 | # CONFIG_MTD_DOC2000 is not set | ||
| 390 | # CONFIG_MTD_DOC2001 is not set | ||
| 391 | # CONFIG_MTD_DOC2001PLUS is not set | ||
| 392 | |||
| 393 | # | ||
| 394 | # NAND Flash Device Drivers | ||
| 395 | # | ||
| 396 | # CONFIG_MTD_NAND is not set | ||
| 397 | |||
| 398 | # | ||
| 399 | # OneNAND Flash Device Drivers | ||
| 400 | # | ||
| 401 | # CONFIG_MTD_ONENAND is not set | ||
| 402 | |||
| 403 | # | ||
| 404 | # Parallel port support | ||
| 405 | # | ||
| 406 | # CONFIG_PARPORT is not set | ||
| 407 | |||
| 408 | # | ||
| 409 | # Plug and Play support | ||
| 410 | # | ||
| 411 | |||
| 412 | # | ||
| 413 | # Block devices | ||
| 414 | # | ||
| 415 | # CONFIG_BLK_CPQ_DA is not set | ||
| 416 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 417 | # CONFIG_BLK_DEV_DAC960 is not set | ||
| 418 | # CONFIG_BLK_DEV_UMEM is not set | ||
| 419 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 420 | # CONFIG_BLK_DEV_LOOP is not set | ||
| 421 | # CONFIG_BLK_DEV_NBD is not set | ||
| 422 | # CONFIG_BLK_DEV_SX8 is not set | ||
| 423 | CONFIG_BLK_DEV_RAM=y | ||
| 424 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 425 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
| 426 | CONFIG_BLK_DEV_INITRD=y | ||
| 427 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 428 | # CONFIG_ATA_OVER_ETH is not set | ||
| 429 | |||
| 430 | # | ||
| 431 | # ATA/ATAPI/MFM/RLL support | ||
| 432 | # | ||
| 433 | # CONFIG_IDE is not set | ||
| 434 | |||
| 435 | # | ||
| 436 | # SCSI device support | ||
| 437 | # | ||
| 438 | # CONFIG_RAID_ATTRS is not set | ||
| 439 | # CONFIG_SCSI is not set | ||
| 440 | |||
| 441 | # | ||
| 442 | # Multi-device support (RAID and LVM) | ||
| 443 | # | ||
| 444 | # CONFIG_MD is not set | ||
| 445 | |||
| 446 | # | ||
| 447 | # Fusion MPT device support | ||
| 448 | # | ||
| 449 | # CONFIG_FUSION is not set | ||
| 450 | |||
| 451 | # | ||
| 452 | # IEEE 1394 (FireWire) support | ||
| 453 | # | ||
| 454 | # CONFIG_IEEE1394 is not set | ||
| 455 | |||
| 456 | # | ||
| 457 | # I2O device support | ||
| 458 | # | ||
| 459 | # CONFIG_I2O is not set | ||
| 460 | |||
| 461 | # | ||
| 462 | # Network device support | ||
| 463 | # | ||
| 464 | CONFIG_NETDEVICES=y | ||
| 465 | # CONFIG_DUMMY is not set | ||
| 466 | # CONFIG_BONDING is not set | ||
| 467 | # CONFIG_EQUALIZER is not set | ||
| 468 | # CONFIG_TUN is not set | ||
| 469 | |||
| 470 | # | ||
| 471 | # ARCnet devices | ||
| 472 | # | ||
| 473 | # CONFIG_ARCNET is not set | ||
| 474 | |||
| 475 | # | ||
| 476 | # PHY device support | ||
| 477 | # | ||
| 478 | # CONFIG_PHYLIB is not set | ||
| 479 | |||
| 480 | # | ||
| 481 | # Ethernet (10 or 100Mbit) | ||
| 482 | # | ||
| 483 | CONFIG_NET_ETHERNET=y | ||
| 484 | # CONFIG_MII is not set | ||
| 485 | CONFIG_ARM_KS8695_ETHER=y | ||
| 486 | # CONFIG_HAPPYMEAL is not set | ||
| 487 | # CONFIG_SUNGEM is not set | ||
| 488 | # CONFIG_CASSINI is not set | ||
| 489 | # CONFIG_NET_VENDOR_3COM is not set | ||
| 490 | # CONFIG_SMC91X is not set | ||
| 491 | # CONFIG_DM9000 is not set | ||
| 492 | |||
| 493 | # | ||
| 494 | # Tulip family network device support | ||
| 495 | # | ||
| 496 | # CONFIG_NET_TULIP is not set | ||
| 497 | # CONFIG_HP100 is not set | ||
| 498 | # CONFIG_NET_PCI is not set | ||
| 499 | |||
| 500 | # | ||
| 501 | # Ethernet (1000 Mbit) | ||
| 502 | # | ||
| 503 | # CONFIG_ACENIC is not set | ||
| 504 | # CONFIG_DL2K is not set | ||
| 505 | # CONFIG_E1000 is not set | ||
| 506 | # CONFIG_NS83820 is not set | ||
| 507 | # CONFIG_HAMACHI is not set | ||
| 508 | # CONFIG_YELLOWFIN is not set | ||
| 509 | # CONFIG_R8169 is not set | ||
| 510 | # CONFIG_SIS190 is not set | ||
| 511 | # CONFIG_SKGE is not set | ||
| 512 | # CONFIG_SKY2 is not set | ||
| 513 | # CONFIG_SK98LIN is not set | ||
| 514 | # CONFIG_TIGON3 is not set | ||
| 515 | # CONFIG_BNX2 is not set | ||
| 516 | |||
| 517 | # | ||
| 518 | # Ethernet (10000 Mbit) | ||
| 519 | # | ||
| 520 | # CONFIG_CHELSIO_T1 is not set | ||
| 521 | # CONFIG_IXGB is not set | ||
| 522 | # CONFIG_S2IO is not set | ||
| 523 | |||
| 524 | # | ||
| 525 | # Token Ring devices | ||
| 526 | # | ||
| 527 | # CONFIG_TR is not set | ||
| 528 | |||
| 529 | # | ||
| 530 | # Wireless LAN (non-hamradio) | ||
| 531 | # | ||
| 532 | # CONFIG_NET_RADIO is not set | ||
| 533 | |||
| 534 | # | ||
| 535 | # PCMCIA network device support | ||
| 536 | # | ||
| 537 | # CONFIG_NET_PCMCIA is not set | ||
| 538 | |||
| 539 | # | ||
| 540 | # Wan interfaces | ||
| 541 | # | ||
| 542 | # CONFIG_WAN is not set | ||
| 543 | # CONFIG_FDDI is not set | ||
| 544 | # CONFIG_HIPPI is not set | ||
| 545 | # CONFIG_PPP is not set | ||
| 546 | # CONFIG_SLIP is not set | ||
| 547 | # CONFIG_SHAPER is not set | ||
| 548 | # CONFIG_NETCONSOLE is not set | ||
| 549 | # CONFIG_NETPOLL is not set | ||
| 550 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 551 | |||
| 552 | # | ||
| 553 | # ISDN subsystem | ||
| 554 | # | ||
| 555 | # CONFIG_ISDN is not set | ||
| 556 | |||
| 557 | # | ||
| 558 | # Input device support | ||
| 559 | # | ||
| 560 | CONFIG_INPUT=y | ||
| 561 | |||
| 562 | # | ||
| 563 | # Userland interfaces | ||
| 564 | # | ||
| 565 | CONFIG_INPUT_MOUSEDEV=y | ||
| 566 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
| 567 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 568 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 569 | # CONFIG_INPUT_JOYDEV is not set | ||
| 570 | # CONFIG_INPUT_TSDEV is not set | ||
| 571 | # CONFIG_INPUT_EVDEV is not set | ||
| 572 | # CONFIG_INPUT_EVBUG is not set | ||
| 573 | |||
| 574 | # | ||
| 575 | # Input Device Drivers | ||
| 576 | # | ||
| 577 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 578 | # CONFIG_INPUT_MOUSE is not set | ||
| 579 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 580 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 581 | # CONFIG_INPUT_MISC is not set | ||
| 582 | |||
| 583 | # | ||
| 584 | # Hardware I/O ports | ||
| 585 | # | ||
| 586 | # CONFIG_SERIO is not set | ||
| 587 | # CONFIG_GAMEPORT is not set | ||
| 588 | |||
| 589 | # | ||
| 590 | # Character devices | ||
| 591 | # | ||
| 592 | CONFIG_VT=y | ||
| 593 | CONFIG_VT_CONSOLE=y | ||
| 594 | CONFIG_HW_CONSOLE=y | ||
| 595 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 596 | |||
| 597 | # | ||
| 598 | # Serial drivers | ||
| 599 | # | ||
| 600 | # CONFIG_SERIAL_8250 is not set | ||
| 601 | |||
| 602 | # | ||
| 603 | # Non-8250 serial port support | ||
| 604 | # | ||
| 605 | CONFIG_SERIAL_KS8695=y | ||
| 606 | CONFIG_SERIAL_KS8695_CONSOLE=y | ||
| 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=y | ||
| 612 | CONFIG_LEGACY_PTY_COUNT=256 | ||
| 613 | |||
| 614 | # | ||
| 615 | # IPMI | ||
| 616 | # | ||
| 617 | # CONFIG_IPMI_HANDLER is not set | ||
| 618 | |||
| 619 | # | ||
| 620 | # Watchdog Cards | ||
| 621 | # | ||
| 622 | # CONFIG_WATCHDOG is not set | ||
| 623 | # CONFIG_NVRAM is not set | ||
| 624 | # CONFIG_DTLK is not set | ||
| 625 | # CONFIG_R3964 is not set | ||
| 626 | # CONFIG_APPLICOM is not set | ||
| 627 | |||
| 628 | # | ||
| 629 | # Ftape, the floppy tape device driver | ||
| 630 | # | ||
| 631 | # CONFIG_DRM is not set | ||
| 632 | |||
| 633 | # | ||
| 634 | # PCMCIA character devices | ||
| 635 | # | ||
| 636 | # CONFIG_SYNCLINK_CS is not set | ||
| 637 | # CONFIG_CARDMAN_4000 is not set | ||
| 638 | # CONFIG_CARDMAN_4040 is not set | ||
| 639 | # CONFIG_RAW_DRIVER is not set | ||
| 640 | |||
| 641 | # | ||
| 642 | # TPM devices | ||
| 643 | # | ||
| 644 | # CONFIG_TCG_TPM is not set | ||
| 645 | # CONFIG_TELCLOCK is not set | ||
| 646 | |||
| 647 | # | ||
| 648 | # I2C support | ||
| 649 | # | ||
| 650 | # CONFIG_I2C is not set | ||
| 651 | |||
| 652 | # | ||
| 653 | # SPI support | ||
| 654 | # | ||
| 655 | # CONFIG_SPI is not set | ||
| 656 | # CONFIG_SPI_MASTER is not set | ||
| 657 | |||
| 658 | # | ||
| 659 | # Dallas's 1-wire bus | ||
| 660 | # | ||
| 661 | # CONFIG_W1 is not set | ||
| 662 | |||
| 663 | # | ||
| 664 | # Hardware Monitoring support | ||
| 665 | # | ||
| 666 | # CONFIG_HWMON is not set | ||
| 667 | # CONFIG_HWMON_VID is not set | ||
| 668 | |||
| 669 | # | ||
| 670 | # Misc devices | ||
| 671 | # | ||
| 672 | |||
| 673 | # | ||
| 674 | # LED devices | ||
| 675 | # | ||
| 676 | # CONFIG_NEW_LEDS is not set | ||
| 677 | |||
| 678 | # | ||
| 679 | # LED drivers | ||
| 680 | # | ||
| 681 | |||
| 682 | # | ||
| 683 | # LED Triggers | ||
| 684 | # | ||
| 685 | |||
| 686 | # | ||
| 687 | # Multimedia devices | ||
| 688 | # | ||
| 689 | # CONFIG_VIDEO_DEV is not set | ||
| 690 | |||
| 691 | # | ||
| 692 | # Digital Video Broadcasting Devices | ||
| 693 | # | ||
| 694 | # CONFIG_DVB is not set | ||
| 695 | |||
| 696 | # | ||
| 697 | # Graphics support | ||
| 698 | # | ||
| 699 | # CONFIG_FB is not set | ||
| 700 | |||
| 701 | # | ||
| 702 | # Console display driver support | ||
| 703 | # | ||
| 704 | # CONFIG_VGA_CONSOLE is not set | ||
| 705 | CONFIG_DUMMY_CONSOLE=y | ||
| 706 | |||
| 707 | # | ||
| 708 | # Sound | ||
| 709 | # | ||
| 710 | # CONFIG_SOUND is not set | ||
| 711 | |||
| 712 | # | ||
| 713 | # USB support | ||
| 714 | # | ||
| 715 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 716 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 717 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 718 | # CONFIG_USB is not set | ||
| 719 | |||
| 720 | # | ||
| 721 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
| 722 | # | ||
| 723 | |||
| 724 | # | ||
| 725 | # USB Gadget Support | ||
| 726 | # | ||
| 727 | # CONFIG_USB_GADGET is not set | ||
| 728 | |||
| 729 | # | ||
| 730 | # MMC/SD Card support | ||
| 731 | # | ||
| 732 | # CONFIG_MMC is not set | ||
| 733 | |||
| 734 | # | ||
| 735 | # Real Time Clock | ||
| 736 | # | ||
| 737 | CONFIG_RTC_LIB=y | ||
| 738 | # CONFIG_RTC_CLASS is not set | ||
| 739 | |||
| 740 | # | ||
| 741 | # File systems | ||
| 742 | # | ||
| 743 | CONFIG_EXT2_FS=y | ||
| 744 | # CONFIG_EXT2_FS_XATTR is not set | ||
| 745 | # CONFIG_EXT2_FS_XIP is not set | ||
| 746 | # CONFIG_EXT3_FS is not set | ||
| 747 | # CONFIG_REISERFS_FS is not set | ||
| 748 | # CONFIG_JFS_FS is not set | ||
| 749 | # CONFIG_FS_POSIX_ACL is not set | ||
| 750 | # CONFIG_XFS_FS is not set | ||
| 751 | # CONFIG_OCFS2_FS is not set | ||
| 752 | # CONFIG_MINIX_FS is not set | ||
| 753 | # CONFIG_ROMFS_FS is not set | ||
| 754 | CONFIG_INOTIFY=y | ||
| 755 | # CONFIG_QUOTA is not set | ||
| 756 | CONFIG_DNOTIFY=y | ||
| 757 | # CONFIG_AUTOFS_FS is not set | ||
| 758 | # CONFIG_AUTOFS4_FS is not set | ||
| 759 | # CONFIG_FUSE_FS is not set | ||
| 760 | |||
| 761 | # | ||
| 762 | # CD-ROM/DVD Filesystems | ||
| 763 | # | ||
| 764 | # CONFIG_ISO9660_FS is not set | ||
| 765 | # CONFIG_UDF_FS is not set | ||
| 766 | |||
| 767 | # | ||
| 768 | # DOS/FAT/NT Filesystems | ||
| 769 | # | ||
| 770 | # CONFIG_MSDOS_FS is not set | ||
| 771 | # CONFIG_VFAT_FS is not set | ||
| 772 | # CONFIG_NTFS_FS is not set | ||
| 773 | |||
| 774 | # | ||
| 775 | # Pseudo filesystems | ||
| 776 | # | ||
| 777 | CONFIG_PROC_FS=y | ||
| 778 | CONFIG_SYSFS=y | ||
| 779 | CONFIG_TMPFS=y | ||
| 780 | # CONFIG_HUGETLB_PAGE is not set | ||
| 781 | CONFIG_RAMFS=y | ||
| 782 | # CONFIG_CONFIGFS_FS is not set | ||
| 783 | |||
| 784 | # | ||
| 785 | # Miscellaneous filesystems | ||
| 786 | # | ||
| 787 | # CONFIG_ADFS_FS is not set | ||
| 788 | # CONFIG_AFFS_FS is not set | ||
| 789 | # CONFIG_HFS_FS is not set | ||
| 790 | # CONFIG_HFSPLUS_FS is not set | ||
| 791 | # CONFIG_BEFS_FS is not set | ||
| 792 | # CONFIG_BFS_FS is not set | ||
| 793 | # CONFIG_EFS_FS is not set | ||
| 794 | # CONFIG_JFFS_FS is not set | ||
| 795 | # CONFIG_JFFS2_FS is not set | ||
| 796 | CONFIG_CRAMFS=y | ||
| 797 | # CONFIG_VXFS_FS is not set | ||
| 798 | # CONFIG_HPFS_FS is not set | ||
| 799 | # CONFIG_QNX4FS_FS is not set | ||
| 800 | # CONFIG_SYSV_FS is not set | ||
| 801 | # CONFIG_UFS_FS is not set | ||
| 802 | |||
| 803 | # | ||
| 804 | # Network File Systems | ||
| 805 | # | ||
| 806 | # CONFIG_NFS_FS is not set | ||
| 807 | # CONFIG_NFSD is not set | ||
| 808 | # CONFIG_SMB_FS is not set | ||
| 809 | # CONFIG_CIFS is not set | ||
| 810 | # CONFIG_NCP_FS is not set | ||
| 811 | # CONFIG_CODA_FS is not set | ||
| 812 | # CONFIG_AFS_FS is not set | ||
| 813 | # CONFIG_9P_FS is not set | ||
| 814 | |||
| 815 | # | ||
| 816 | # Partition Types | ||
| 817 | # | ||
| 818 | # CONFIG_PARTITION_ADVANCED is not set | ||
| 819 | CONFIG_MSDOS_PARTITION=y | ||
| 820 | |||
| 821 | # | ||
| 822 | # Native Language Support | ||
| 823 | # | ||
| 824 | # CONFIG_NLS is not set | ||
| 825 | |||
| 826 | # | ||
| 827 | # Profiling support | ||
| 828 | # | ||
| 829 | # CONFIG_PROFILING is not set | ||
| 830 | |||
| 831 | # | ||
| 832 | # Kernel hacking | ||
| 833 | # | ||
| 834 | # CONFIG_PRINTK_TIME is not set | ||
| 835 | # CONFIG_MAGIC_SYSRQ is not set | ||
| 836 | CONFIG_DEBUG_KERNEL=y | ||
| 837 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 838 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 839 | # CONFIG_SCHEDSTATS is not set | ||
| 840 | # CONFIG_DEBUG_SLAB is not set | ||
| 841 | CONFIG_DEBUG_MUTEXES=y | ||
| 842 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 843 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 844 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 845 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 846 | # CONFIG_DEBUG_INFO is not set | ||
| 847 | # CONFIG_DEBUG_FS is not set | ||
| 848 | # CONFIG_DEBUG_VM is not set | ||
| 849 | CONFIG_FRAME_POINTER=y | ||
| 850 | # CONFIG_UNWIND_INFO is not set | ||
| 851 | CONFIG_FORCED_INLINING=y | ||
| 852 | # CONFIG_RCU_TORTURE_TEST is not set | ||
| 853 | CONFIG_DEBUG_USER=y | ||
| 854 | # CONFIG_DEBUG_ERRORS is not set | ||
| 855 | CONFIG_DEBUG_LL=y | ||
| 856 | # CONFIG_DEBUG_ICEDCC is not set | ||
| 857 | |||
| 858 | # | ||
| 859 | # Security options | ||
| 860 | # | ||
| 861 | # CONFIG_KEYS is not set | ||
| 862 | # CONFIG_SECURITY is not set | ||
| 863 | |||
| 864 | # | ||
| 865 | # Cryptographic options | ||
| 866 | # | ||
| 867 | # CONFIG_CRYPTO is not set | ||
| 868 | |||
| 869 | # | ||
| 870 | # Hardware crypto devices | ||
| 871 | # | ||
| 872 | |||
| 873 | # | ||
| 874 | # Library routines | ||
| 875 | # | ||
| 876 | # CONFIG_CRC_CCITT is not set | ||
| 877 | # CONFIG_CRC16 is not set | ||
| 878 | CONFIG_CRC32=y | ||
| 879 | # CONFIG_LIBCRC32C is not set | ||
| 880 | CONFIG_ZLIB_INFLATE=y | ||
diff --git a/arch/arm/configs/trizeps4_defconfig b/arch/arm/configs/trizeps4_defconfig index a6698dc4f6b9..6db6392806f9 100644 --- a/arch/arm/configs/trizeps4_defconfig +++ b/arch/arm/configs/trizeps4_defconfig | |||
| @@ -1,15 +1,27 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.17 | 3 | # Linux kernel version: 2.6.21 |
| 4 | # Sat Jun 24 22:45:14 2006 | 4 | # Mon Apr 30 21:23:20 2007 |
| 5 | # | 5 | # |
| 6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
| 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
| 8 | CONFIG_GENERIC_GPIO=y | ||
| 9 | CONFIG_GENERIC_TIME=y | ||
| 7 | CONFIG_MMU=y | 10 | CONFIG_MMU=y |
| 11 | # CONFIG_NO_IOPORT is not set | ||
| 12 | CONFIG_GENERIC_HARDIRQS=y | ||
| 13 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 14 | CONFIG_HARDIRQS_SW_RESEND=y | ||
| 15 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 16 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
| 17 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
| 18 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
| 9 | CONFIG_GENERIC_HWEIGHT=y | 19 | CONFIG_GENERIC_HWEIGHT=y |
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 20 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 21 | CONFIG_ZONE_DMA=y | ||
| 11 | CONFIG_ARCH_MTD_XIP=y | 22 | CONFIG_ARCH_MTD_XIP=y |
| 12 | CONFIG_VECTORS_BASE=0xffff0000 | 23 | CONFIG_VECTORS_BASE=0xffff0000 |
| 24 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 13 | 25 | ||
| 14 | # | 26 | # |
| 15 | # Code maturity level options | 27 | # Code maturity level options |
| @@ -26,18 +38,25 @@ CONFIG_LOCALVERSION="" | |||
| 26 | CONFIG_LOCALVERSION_AUTO=y | 38 | CONFIG_LOCALVERSION_AUTO=y |
| 27 | CONFIG_SWAP=y | 39 | CONFIG_SWAP=y |
| 28 | CONFIG_SYSVIPC=y | 40 | CONFIG_SYSVIPC=y |
| 41 | # CONFIG_IPC_NS is not set | ||
| 42 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 29 | CONFIG_POSIX_MQUEUE=y | 43 | CONFIG_POSIX_MQUEUE=y |
| 30 | CONFIG_BSD_PROCESS_ACCT=y | 44 | CONFIG_BSD_PROCESS_ACCT=y |
| 31 | CONFIG_BSD_PROCESS_ACCT_V3=y | 45 | CONFIG_BSD_PROCESS_ACCT_V3=y |
| 32 | CONFIG_SYSCTL=y | 46 | # CONFIG_TASKSTATS is not set |
| 33 | CONFIG_AUDIT=y | 47 | # CONFIG_UTS_NS is not set |
| 48 | # CONFIG_AUDIT is not set | ||
| 34 | CONFIG_IKCONFIG=y | 49 | CONFIG_IKCONFIG=y |
| 35 | CONFIG_IKCONFIG_PROC=y | 50 | CONFIG_IKCONFIG_PROC=y |
| 51 | CONFIG_SYSFS_DEPRECATED=y | ||
| 36 | # CONFIG_RELAY is not set | 52 | # CONFIG_RELAY is not set |
| 53 | CONFIG_BLK_DEV_INITRD=y | ||
| 37 | CONFIG_INITRAMFS_SOURCE="" | 54 | CONFIG_INITRAMFS_SOURCE="" |
| 38 | CONFIG_UID16=y | ||
| 39 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 55 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
| 56 | CONFIG_SYSCTL=y | ||
| 40 | CONFIG_EMBEDDED=y | 57 | CONFIG_EMBEDDED=y |
| 58 | CONFIG_UID16=y | ||
| 59 | CONFIG_SYSCTL_SYSCALL=y | ||
| 41 | CONFIG_KALLSYMS=y | 60 | CONFIG_KALLSYMS=y |
| 42 | CONFIG_KALLSYMS_EXTRA_PASS=y | 61 | CONFIG_KALLSYMS_EXTRA_PASS=y |
| 43 | CONFIG_HOTPLUG=y | 62 | CONFIG_HOTPLUG=y |
| @@ -49,10 +68,11 @@ CONFIG_FUTEX=y | |||
| 49 | CONFIG_EPOLL=y | 68 | CONFIG_EPOLL=y |
| 50 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
| 51 | CONFIG_SLAB=y | 70 | CONFIG_SLAB=y |
| 71 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 72 | CONFIG_RT_MUTEXES=y | ||
| 52 | # CONFIG_TINY_SHMEM is not set | 73 | # CONFIG_TINY_SHMEM is not set |
| 53 | CONFIG_BASE_SMALL=0 | 74 | CONFIG_BASE_SMALL=0 |
| 54 | # CONFIG_SLOB is not set | 75 | # CONFIG_SLOB is not set |
| 55 | CONFIG_OBSOLETE_INTERMODULE=y | ||
| 56 | 76 | ||
| 57 | # | 77 | # |
| 58 | # Loadable module support | 78 | # Loadable module support |
| @@ -60,14 +80,17 @@ CONFIG_OBSOLETE_INTERMODULE=y | |||
| 60 | CONFIG_MODULES=y | 80 | CONFIG_MODULES=y |
| 61 | CONFIG_MODULE_UNLOAD=y | 81 | CONFIG_MODULE_UNLOAD=y |
| 62 | CONFIG_MODULE_FORCE_UNLOAD=y | 82 | CONFIG_MODULE_FORCE_UNLOAD=y |
| 63 | # CONFIG_MODVERSIONS is not set | 83 | CONFIG_MODVERSIONS=y |
| 64 | CONFIG_MODULE_SRCVERSION_ALL=y | 84 | CONFIG_MODULE_SRCVERSION_ALL=y |
| 65 | CONFIG_KMOD=y | 85 | CONFIG_KMOD=y |
| 66 | 86 | ||
| 67 | # | 87 | # |
| 68 | # Block layer | 88 | # Block layer |
| 69 | # | 89 | # |
| 90 | CONFIG_BLOCK=y | ||
| 91 | CONFIG_LBD=y | ||
| 70 | # CONFIG_BLK_DEV_IO_TRACE is not set | 92 | # CONFIG_BLK_DEV_IO_TRACE is not set |
| 93 | CONFIG_LSF=y | ||
| 71 | 94 | ||
| 72 | # | 95 | # |
| 73 | # IO Schedulers | 96 | # IO Schedulers |
| @@ -85,18 +108,29 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
| 85 | # | 108 | # |
| 86 | # System Type | 109 | # System Type |
| 87 | # | 110 | # |
| 111 | # CONFIG_ARCH_AAEC2000 is not set | ||
| 112 | # CONFIG_ARCH_INTEGRATOR is not set | ||
| 113 | # CONFIG_ARCH_REALVIEW is not set | ||
| 114 | # CONFIG_ARCH_VERSATILE is not set | ||
| 115 | # CONFIG_ARCH_AT91 is not set | ||
| 88 | # CONFIG_ARCH_CLPS7500 is not set | 116 | # CONFIG_ARCH_CLPS7500 is not set |
| 89 | # CONFIG_ARCH_CLPS711X is not set | 117 | # CONFIG_ARCH_CLPS711X is not set |
| 90 | # CONFIG_ARCH_CO285 is not set | 118 | # CONFIG_ARCH_CO285 is not set |
| 91 | # CONFIG_ARCH_EBSA110 is not set | 119 | # CONFIG_ARCH_EBSA110 is not set |
| 92 | # CONFIG_ARCH_EP93XX is not set | 120 | # CONFIG_ARCH_EP93XX is not set |
| 93 | # CONFIG_ARCH_FOOTBRIDGE is not set | 121 | # CONFIG_ARCH_FOOTBRIDGE is not set |
| 94 | # CONFIG_ARCH_INTEGRATOR is not set | 122 | # CONFIG_ARCH_NETX is not set |
| 95 | # CONFIG_ARCH_IOP3XX is not set | 123 | # CONFIG_ARCH_H720X is not set |
| 124 | # CONFIG_ARCH_IMX is not set | ||
| 125 | # CONFIG_ARCH_IOP32X is not set | ||
| 126 | # CONFIG_ARCH_IOP33X is not set | ||
| 127 | # CONFIG_ARCH_IOP13XX is not set | ||
| 96 | # CONFIG_ARCH_IXP4XX is not set | 128 | # CONFIG_ARCH_IXP4XX is not set |
| 97 | # CONFIG_ARCH_IXP2000 is not set | 129 | # CONFIG_ARCH_IXP2000 is not set |
| 98 | # CONFIG_ARCH_IXP23XX is not set | 130 | # CONFIG_ARCH_IXP23XX is not set |
| 99 | # CONFIG_ARCH_L7200 is not set | 131 | # CONFIG_ARCH_L7200 is not set |
| 132 | # CONFIG_ARCH_NS9XXX is not set | ||
| 133 | # CONFIG_ARCH_PNX4008 is not set | ||
| 100 | CONFIG_ARCH_PXA=y | 134 | CONFIG_ARCH_PXA=y |
| 101 | # CONFIG_ARCH_RPC is not set | 135 | # CONFIG_ARCH_RPC is not set |
| 102 | # CONFIG_ARCH_SA1100 is not set | 136 | # CONFIG_ARCH_SA1100 is not set |
| @@ -104,12 +138,6 @@ CONFIG_ARCH_PXA=y | |||
| 104 | # CONFIG_ARCH_SHARK is not set | 138 | # CONFIG_ARCH_SHARK is not set |
| 105 | # CONFIG_ARCH_LH7A40X is not set | 139 | # CONFIG_ARCH_LH7A40X is not set |
| 106 | # CONFIG_ARCH_OMAP is not set | 140 | # CONFIG_ARCH_OMAP is not set |
| 107 | # CONFIG_ARCH_VERSATILE is not set | ||
| 108 | # CONFIG_ARCH_REALVIEW is not set | ||
| 109 | # CONFIG_ARCH_IMX is not set | ||
| 110 | # CONFIG_ARCH_H720X is not set | ||
| 111 | # CONFIG_ARCH_AAEC2000 is not set | ||
| 112 | # CONFIG_ARCH_AT91RM9200 is not set | ||
| 113 | 141 | ||
| 114 | # | 142 | # |
| 115 | # Intel PXA2xx Implementations | 143 | # Intel PXA2xx Implementations |
| @@ -133,11 +161,16 @@ CONFIG_CPU_32v5=y | |||
| 133 | CONFIG_CPU_ABRT_EV5T=y | 161 | CONFIG_CPU_ABRT_EV5T=y |
| 134 | CONFIG_CPU_CACHE_VIVT=y | 162 | CONFIG_CPU_CACHE_VIVT=y |
| 135 | CONFIG_CPU_TLB_V4WBI=y | 163 | CONFIG_CPU_TLB_V4WBI=y |
| 164 | CONFIG_CPU_CP15=y | ||
| 165 | CONFIG_CPU_CP15_MMU=y | ||
| 136 | 166 | ||
| 137 | # | 167 | # |
| 138 | # Processor Features | 168 | # Processor Features |
| 139 | # | 169 | # |
| 140 | CONFIG_ARM_THUMB=y | 170 | CONFIG_ARM_THUMB=y |
| 171 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
| 172 | # CONFIG_OUTER_CACHE is not set | ||
| 173 | CONFIG_IWMMXT=y | ||
| 141 | CONFIG_XSCALE_PMU=y | 174 | CONFIG_XSCALE_PMU=y |
| 142 | 175 | ||
| 143 | # | 176 | # |
| @@ -147,16 +180,16 @@ CONFIG_XSCALE_PMU=y | |||
| 147 | # | 180 | # |
| 148 | # PCCARD (PCMCIA/CardBus) support | 181 | # PCCARD (PCMCIA/CardBus) support |
| 149 | # | 182 | # |
| 150 | CONFIG_PCCARD=m | 183 | CONFIG_PCCARD=y |
| 151 | # CONFIG_PCMCIA_DEBUG is not set | 184 | # CONFIG_PCMCIA_DEBUG is not set |
| 152 | CONFIG_PCMCIA=m | 185 | CONFIG_PCMCIA=y |
| 153 | CONFIG_PCMCIA_LOAD_CIS=y | 186 | # CONFIG_PCMCIA_LOAD_CIS is not set |
| 154 | CONFIG_PCMCIA_IOCTL=y | 187 | CONFIG_PCMCIA_IOCTL=y |
| 155 | 188 | ||
| 156 | # | 189 | # |
| 157 | # PC-card bridges | 190 | # PC-card bridges |
| 158 | # | 191 | # |
| 159 | CONFIG_PCMCIA_PXA2XX=m | 192 | CONFIG_PCMCIA_PXA2XX=y |
| 160 | 193 | ||
| 161 | # | 194 | # |
| 162 | # Kernel Features | 195 | # Kernel Features |
| @@ -164,7 +197,8 @@ CONFIG_PCMCIA_PXA2XX=m | |||
| 164 | CONFIG_PREEMPT=y | 197 | CONFIG_PREEMPT=y |
| 165 | # CONFIG_NO_IDLE_HZ is not set | 198 | # CONFIG_NO_IDLE_HZ is not set |
| 166 | CONFIG_HZ=100 | 199 | CONFIG_HZ=100 |
| 167 | # CONFIG_AEABI is not set | 200 | CONFIG_AEABI=y |
| 201 | CONFIG_OABI_COMPAT=y | ||
| 168 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | 202 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set |
| 169 | CONFIG_SELECT_MEMORY_MODEL=y | 203 | CONFIG_SELECT_MEMORY_MODEL=y |
| 170 | CONFIG_FLATMEM_MANUAL=y | 204 | CONFIG_FLATMEM_MANUAL=y |
| @@ -174,6 +208,8 @@ CONFIG_FLATMEM=y | |||
| 174 | CONFIG_FLAT_NODE_MEM_MAP=y | 208 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 175 | # CONFIG_SPARSEMEM_STATIC is not set | 209 | # CONFIG_SPARSEMEM_STATIC is not set |
| 176 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 210 | CONFIG_SPLIT_PTLOCK_CPUS=4096 |
| 211 | # CONFIG_RESOURCES_64BIT is not set | ||
| 212 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 177 | CONFIG_LEDS=y | 213 | CONFIG_LEDS=y |
| 178 | CONFIG_LEDS_TIMER=y | 214 | CONFIG_LEDS_TIMER=y |
| 179 | CONFIG_LEDS_CPU=y | 215 | CONFIG_LEDS_CPU=y |
| @@ -184,8 +220,9 @@ CONFIG_ALIGNMENT_TRAP=y | |||
| 184 | # | 220 | # |
| 185 | CONFIG_ZBOOT_ROM_TEXT=0 | 221 | CONFIG_ZBOOT_ROM_TEXT=0 |
| 186 | CONFIG_ZBOOT_ROM_BSS=0 | 222 | CONFIG_ZBOOT_ROM_BSS=0 |
| 187 | CONFIG_CMDLINE="root=/dev/nfs ip=bootp console=ttyS0,115200n8" | 223 | CONFIG_CMDLINE="root=fe01 console=ttyS0,38400n8 loglevel=5" |
| 188 | # CONFIG_XIP_KERNEL is not set | 224 | # CONFIG_XIP_KERNEL is not set |
| 225 | # CONFIG_KEXEC is not set | ||
| 189 | 226 | ||
| 190 | # | 227 | # |
| 191 | # Floating point emulation | 228 | # Floating point emulation |
| @@ -203,16 +240,16 @@ CONFIG_FPE_NWFPE_XP=y | |||
| 203 | # | 240 | # |
| 204 | CONFIG_BINFMT_ELF=y | 241 | CONFIG_BINFMT_ELF=y |
| 205 | # CONFIG_BINFMT_AOUT is not set | 242 | # CONFIG_BINFMT_AOUT is not set |
| 206 | CONFIG_BINFMT_MISC=m | 243 | # CONFIG_BINFMT_MISC is not set |
| 207 | # CONFIG_ARTHUR is not set | ||
| 208 | 244 | ||
| 209 | # | 245 | # |
| 210 | # Power management options | 246 | # Power management options |
| 211 | # | 247 | # |
| 212 | CONFIG_PM=y | 248 | CONFIG_PM=y |
| 213 | CONFIG_PM_LEGACY=y | 249 | # CONFIG_PM_LEGACY is not set |
| 214 | # CONFIG_PM_DEBUG is not set | 250 | # CONFIG_PM_DEBUG is not set |
| 215 | CONFIG_APM=y | 251 | # CONFIG_PM_SYSFS_DEPRECATED is not set |
| 252 | # CONFIG_APM_EMULATION is not set | ||
| 216 | 253 | ||
| 217 | # | 254 | # |
| 218 | # Networking | 255 | # Networking |
| @@ -222,13 +259,15 @@ CONFIG_NET=y | |||
| 222 | # | 259 | # |
| 223 | # Networking options | 260 | # Networking options |
| 224 | # | 261 | # |
| 225 | # CONFIG_NETDEBUG is not set | ||
| 226 | CONFIG_PACKET=y | 262 | CONFIG_PACKET=y |
| 227 | CONFIG_PACKET_MMAP=y | 263 | CONFIG_PACKET_MMAP=y |
| 228 | CONFIG_UNIX=y | 264 | CONFIG_UNIX=y |
| 229 | CONFIG_XFRM=y | 265 | CONFIG_XFRM=y |
| 230 | CONFIG_XFRM_USER=m | 266 | CONFIG_XFRM_USER=m |
| 267 | # CONFIG_XFRM_SUB_POLICY is not set | ||
| 268 | # CONFIG_XFRM_MIGRATE is not set | ||
| 231 | CONFIG_NET_KEY=y | 269 | CONFIG_NET_KEY=y |
| 270 | # CONFIG_NET_KEY_MIGRATE is not set | ||
| 232 | CONFIG_INET=y | 271 | CONFIG_INET=y |
| 233 | # CONFIG_IP_MULTICAST is not set | 272 | # CONFIG_IP_MULTICAST is not set |
| 234 | # CONFIG_IP_ADVANCED_ROUTER is not set | 273 | # CONFIG_IP_ADVANCED_ROUTER is not set |
| @@ -246,24 +285,25 @@ CONFIG_IP_PNP_BOOTP=y | |||
| 246 | # CONFIG_INET_IPCOMP is not set | 285 | # CONFIG_INET_IPCOMP is not set |
| 247 | # CONFIG_INET_XFRM_TUNNEL is not set | 286 | # CONFIG_INET_XFRM_TUNNEL is not set |
| 248 | # CONFIG_INET_TUNNEL is not set | 287 | # CONFIG_INET_TUNNEL is not set |
| 288 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 289 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 290 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 249 | CONFIG_INET_DIAG=y | 291 | CONFIG_INET_DIAG=y |
| 250 | CONFIG_INET_TCP_DIAG=y | 292 | CONFIG_INET_TCP_DIAG=y |
| 251 | # CONFIG_TCP_CONG_ADVANCED is not set | 293 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 252 | CONFIG_TCP_CONG_BIC=y | 294 | CONFIG_TCP_CONG_CUBIC=y |
| 295 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 296 | # CONFIG_TCP_MD5SIG is not set | ||
| 253 | 297 | ||
| 254 | # | 298 | # |
| 255 | # IP: Virtual Server Configuration | 299 | # IP: Virtual Server Configuration |
| 256 | # | 300 | # |
| 257 | # CONFIG_IP_VS is not set | 301 | # CONFIG_IP_VS is not set |
| 258 | CONFIG_IPV6=m | 302 | # CONFIG_IPV6 is not set |
| 259 | # CONFIG_IPV6_PRIVACY is not set | ||
| 260 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
| 261 | # CONFIG_INET6_AH is not set | ||
| 262 | # CONFIG_INET6_ESP is not set | ||
| 263 | # CONFIG_INET6_IPCOMP is not set | ||
| 264 | # CONFIG_INET6_XFRM_TUNNEL is not set | 303 | # CONFIG_INET6_XFRM_TUNNEL is not set |
| 265 | # CONFIG_INET6_TUNNEL is not set | 304 | # CONFIG_INET6_TUNNEL is not set |
| 266 | # CONFIG_IPV6_TUNNEL is not set | 305 | # CONFIG_NETLABEL is not set |
| 306 | # CONFIG_NETWORK_SECMARK is not set | ||
| 267 | CONFIG_NETFILTER=y | 307 | CONFIG_NETFILTER=y |
| 268 | # CONFIG_NETFILTER_DEBUG is not set | 308 | # CONFIG_NETFILTER_DEBUG is not set |
| 269 | 309 | ||
| @@ -271,29 +311,16 @@ CONFIG_NETFILTER=y | |||
| 271 | # Core Netfilter Configuration | 311 | # Core Netfilter Configuration |
| 272 | # | 312 | # |
| 273 | # CONFIG_NETFILTER_NETLINK is not set | 313 | # CONFIG_NETFILTER_NETLINK is not set |
| 314 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
| 315 | # CONFIG_NF_CONNTRACK is not set | ||
| 274 | # CONFIG_NETFILTER_XTABLES is not set | 316 | # CONFIG_NETFILTER_XTABLES is not set |
| 275 | 317 | ||
| 276 | # | 318 | # |
| 277 | # IP: Netfilter Configuration | 319 | # IP: Netfilter Configuration |
| 278 | # | 320 | # |
| 279 | CONFIG_IP_NF_CONNTRACK=m | ||
| 280 | CONFIG_IP_NF_CT_ACCT=y | ||
| 281 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
| 282 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
| 283 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
| 284 | CONFIG_IP_NF_FTP=m | ||
| 285 | CONFIG_IP_NF_IRC=m | ||
| 286 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 287 | CONFIG_IP_NF_TFTP=m | ||
| 288 | CONFIG_IP_NF_AMANDA=m | ||
| 289 | # CONFIG_IP_NF_PPTP is not set | ||
| 290 | # CONFIG_IP_NF_H323 is not set | ||
| 291 | CONFIG_IP_NF_QUEUE=m | 321 | CONFIG_IP_NF_QUEUE=m |
| 292 | 322 | # CONFIG_IP_NF_IPTABLES is not set | |
| 293 | # | 323 | # CONFIG_IP_NF_ARPTABLES is not set |
| 294 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
| 295 | # | ||
| 296 | # CONFIG_IP6_NF_QUEUE is not set | ||
| 297 | 324 | ||
| 298 | # | 325 | # |
| 299 | # DCCP Configuration (EXPERIMENTAL) | 326 | # DCCP Configuration (EXPERIMENTAL) |
| @@ -318,7 +345,6 @@ CONFIG_VLAN_8021Q=m | |||
| 318 | # CONFIG_ATALK is not set | 345 | # CONFIG_ATALK is not set |
| 319 | # CONFIG_X25 is not set | 346 | # CONFIG_X25 is not set |
| 320 | # CONFIG_LAPB is not set | 347 | # CONFIG_LAPB is not set |
| 321 | # CONFIG_NET_DIVERT is not set | ||
| 322 | # CONFIG_ECONET is not set | 348 | # CONFIG_ECONET is not set |
| 323 | # CONFIG_WAN_ROUTER is not set | 349 | # CONFIG_WAN_ROUTER is not set |
| 324 | 350 | ||
| @@ -378,6 +404,7 @@ CONFIG_IRTTY_SIR=m | |||
| 378 | # CONFIG_USB_IRDA is not set | 404 | # CONFIG_USB_IRDA is not set |
| 379 | # CONFIG_SIGMATEL_FIR is not set | 405 | # CONFIG_SIGMATEL_FIR is not set |
| 380 | # CONFIG_PXA_FICP is not set | 406 | # CONFIG_PXA_FICP is not set |
| 407 | # CONFIG_MCS_FIR is not set | ||
| 381 | CONFIG_BT=m | 408 | CONFIG_BT=m |
| 382 | CONFIG_BT_L2CAP=m | 409 | CONFIG_BT_L2CAP=m |
| 383 | CONFIG_BT_SCO=m | 410 | CONFIG_BT_SCO=m |
| @@ -401,14 +428,20 @@ CONFIG_BT_HIDP=m | |||
| 401 | # CONFIG_BT_HCIBLUECARD is not set | 428 | # CONFIG_BT_HCIBLUECARD is not set |
| 402 | # CONFIG_BT_HCIBTUART is not set | 429 | # CONFIG_BT_HCIBTUART is not set |
| 403 | # CONFIG_BT_HCIVHCI is not set | 430 | # CONFIG_BT_HCIVHCI is not set |
| 404 | CONFIG_IEEE80211=m | 431 | # CONFIG_AF_RXRPC is not set |
| 432 | |||
| 433 | # | ||
| 434 | # Wireless | ||
| 435 | # | ||
| 436 | CONFIG_CFG80211=y | ||
| 437 | CONFIG_WIRELESS_EXT=y | ||
| 438 | CONFIG_IEEE80211=y | ||
| 405 | # CONFIG_IEEE80211_DEBUG is not set | 439 | # CONFIG_IEEE80211_DEBUG is not set |
| 406 | CONFIG_IEEE80211_CRYPT_WEP=m | 440 | CONFIG_IEEE80211_CRYPT_WEP=y |
| 407 | CONFIG_IEEE80211_CRYPT_CCMP=m | 441 | CONFIG_IEEE80211_CRYPT_CCMP=m |
| 408 | CONFIG_IEEE80211_CRYPT_TKIP=m | 442 | CONFIG_IEEE80211_CRYPT_TKIP=m |
| 409 | CONFIG_IEEE80211_SOFTMAC=m | 443 | CONFIG_IEEE80211_SOFTMAC=m |
| 410 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | 444 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set |
| 411 | CONFIG_WIRELESS_EXT=y | ||
| 412 | 445 | ||
| 413 | # | 446 | # |
| 414 | # Device Drivers | 447 | # Device Drivers |
| @@ -420,16 +453,13 @@ CONFIG_WIRELESS_EXT=y | |||
| 420 | CONFIG_STANDALONE=y | 453 | CONFIG_STANDALONE=y |
| 421 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 454 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
| 422 | CONFIG_FW_LOADER=y | 455 | CONFIG_FW_LOADER=y |
| 456 | # CONFIG_SYS_HYPERVISOR is not set | ||
| 423 | 457 | ||
| 424 | # | 458 | # |
| 425 | # Connector - unified userspace <-> kernelspace linker | 459 | # Connector - unified userspace <-> kernelspace linker |
| 426 | # | 460 | # |
| 427 | CONFIG_CONNECTOR=y | 461 | CONFIG_CONNECTOR=y |
| 428 | CONFIG_PROC_EVENTS=y | 462 | CONFIG_PROC_EVENTS=y |
| 429 | |||
| 430 | # | ||
| 431 | # Memory Technology Devices (MTD) | ||
| 432 | # | ||
| 433 | CONFIG_MTD=y | 463 | CONFIG_MTD=y |
| 434 | # CONFIG_MTD_DEBUG is not set | 464 | # CONFIG_MTD_DEBUG is not set |
| 435 | CONFIG_MTD_CONCAT=y | 465 | CONFIG_MTD_CONCAT=y |
| @@ -445,12 +475,13 @@ CONFIG_MTD_REDBOOT_PARTS_READONLY=y | |||
| 445 | # User Modules And Translation Layers | 475 | # User Modules And Translation Layers |
| 446 | # | 476 | # |
| 447 | CONFIG_MTD_CHAR=y | 477 | CONFIG_MTD_CHAR=y |
| 478 | CONFIG_MTD_BLKDEVS=y | ||
| 448 | CONFIG_MTD_BLOCK=y | 479 | CONFIG_MTD_BLOCK=y |
| 449 | # CONFIG_FTL is not set | 480 | # CONFIG_FTL is not set |
| 450 | CONFIG_NFTL=y | 481 | # CONFIG_NFTL is not set |
| 451 | CONFIG_NFTL_RW=y | 482 | # CONFIG_INFTL is not set |
| 452 | CONFIG_INFTL=y | ||
| 453 | # CONFIG_RFD_FTL is not set | 483 | # CONFIG_RFD_FTL is not set |
| 484 | # CONFIG_SSFDC is not set | ||
| 454 | 485 | ||
| 455 | # | 486 | # |
| 456 | # RAM/ROM/Flash chip drivers | 487 | # RAM/ROM/Flash chip drivers |
| @@ -490,9 +521,8 @@ CONFIG_MTD_CFI_UTIL=y | |||
| 490 | CONFIG_MTD_COMPLEX_MAPPINGS=y | 521 | CONFIG_MTD_COMPLEX_MAPPINGS=y |
| 491 | CONFIG_MTD_PHYSMAP=y | 522 | CONFIG_MTD_PHYSMAP=y |
| 492 | CONFIG_MTD_PHYSMAP_START=0x0 | 523 | CONFIG_MTD_PHYSMAP_START=0x0 |
| 493 | CONFIG_MTD_PHYSMAP_LEN=0x4000000 | 524 | CONFIG_MTD_PHYSMAP_LEN=0x0 |
| 494 | CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | 525 | CONFIG_MTD_PHYSMAP_BANKWIDTH=2 |
| 495 | # CONFIG_MTD_TRIZEPS4 is not set | ||
| 496 | # CONFIG_MTD_ARM_INTEGRATOR is not set | 526 | # CONFIG_MTD_ARM_INTEGRATOR is not set |
| 497 | # CONFIG_MTD_IMPA7 is not set | 527 | # CONFIG_MTD_IMPA7 is not set |
| 498 | # CONFIG_MTD_SHARP_SL is not set | 528 | # CONFIG_MTD_SHARP_SL is not set |
| @@ -501,42 +531,45 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | |||
| 501 | # | 531 | # |
| 502 | # Self-contained MTD device drivers | 532 | # Self-contained MTD device drivers |
| 503 | # | 533 | # |
| 504 | # CONFIG_MTD_DATAFLASH is not set | ||
| 505 | # CONFIG_MTD_M25P80 is not set | ||
| 506 | # CONFIG_MTD_SLRAM is not set | 534 | # CONFIG_MTD_SLRAM is not set |
| 507 | # CONFIG_MTD_PHRAM is not set | 535 | # CONFIG_MTD_PHRAM is not set |
| 508 | # CONFIG_MTD_MTDRAM is not set | 536 | # CONFIG_MTD_MTDRAM is not set |
| 509 | # CONFIG_MTD_BLOCK2MTD is not set | 537 | CONFIG_MTD_BLOCK2MTD=y |
| 510 | 538 | ||
| 511 | # | 539 | # |
| 512 | # Disk-On-Chip Device Drivers | 540 | # Disk-On-Chip Device Drivers |
| 513 | # | 541 | # |
| 514 | # CONFIG_MTD_DOC2000 is not set | 542 | CONFIG_MTD_DOC2000=y |
| 515 | # CONFIG_MTD_DOC2001 is not set | 543 | CONFIG_MTD_DOC2001=y |
| 516 | CONFIG_MTD_DOC2001PLUS=y | 544 | CONFIG_MTD_DOC2001PLUS=y |
| 517 | CONFIG_MTD_DOCPROBE=y | 545 | CONFIG_MTD_DOCPROBE=y |
| 518 | CONFIG_MTD_DOCECC=y | 546 | CONFIG_MTD_DOCECC=y |
| 519 | # CONFIG_MTD_DOCPROBE_ADVANCED is not set | 547 | CONFIG_MTD_DOCPROBE_ADVANCED=y |
| 520 | CONFIG_MTD_DOCPROBE_ADDRESS=0 | 548 | CONFIG_MTD_DOCPROBE_ADDRESS=0x4000000 |
| 521 | 549 | CONFIG_MTD_DOCPROBE_HIGH=y | |
| 522 | # | 550 | # CONFIG_MTD_DOCPROBE_55AA is not set |
| 523 | # NAND Flash Device Drivers | ||
| 524 | # | ||
| 525 | CONFIG_MTD_NAND=y | 551 | CONFIG_MTD_NAND=y |
| 526 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | 552 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set |
| 553 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 554 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
| 527 | # CONFIG_MTD_NAND_H1900 is not set | 555 | # CONFIG_MTD_NAND_H1900 is not set |
| 528 | CONFIG_MTD_NAND_IDS=y | 556 | CONFIG_MTD_NAND_IDS=y |
| 529 | CONFIG_MTD_NAND_DISKONCHIP=y | 557 | CONFIG_MTD_NAND_DISKONCHIP=y |
| 530 | # CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set | 558 | CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y |
| 531 | CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 | 559 | CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x4000000 |
| 532 | # CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set | 560 | CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y |
| 561 | CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y | ||
| 533 | # CONFIG_MTD_NAND_SHARPSL is not set | 562 | # CONFIG_MTD_NAND_SHARPSL is not set |
| 534 | # CONFIG_MTD_NAND_NANDSIM is not set | 563 | # CONFIG_MTD_NAND_NANDSIM is not set |
| 564 | CONFIG_MTD_ONENAND=y | ||
| 565 | # CONFIG_MTD_ONENAND_VERIFY_WRITE is not set | ||
| 566 | # CONFIG_MTD_ONENAND_GENERIC is not set | ||
| 567 | # CONFIG_MTD_ONENAND_OTP is not set | ||
| 535 | 568 | ||
| 536 | # | 569 | # |
| 537 | # OneNAND Flash Device Drivers | 570 | # UBI - Unsorted block images |
| 538 | # | 571 | # |
| 539 | # CONFIG_MTD_ONENAND is not set | 572 | # CONFIG_MTD_UBI is not set |
| 540 | 573 | ||
| 541 | # | 574 | # |
| 542 | # Parallel port support | 575 | # Parallel port support |
| @@ -546,6 +579,7 @@ CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 | |||
| 546 | # | 579 | # |
| 547 | # Plug and Play support | 580 | # Plug and Play support |
| 548 | # | 581 | # |
| 582 | # CONFIG_PNPACPI is not set | ||
| 549 | 583 | ||
| 550 | # | 584 | # |
| 551 | # Block devices | 585 | # Block devices |
| @@ -556,9 +590,9 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m | |||
| 556 | CONFIG_BLK_DEV_NBD=y | 590 | CONFIG_BLK_DEV_NBD=y |
| 557 | # CONFIG_BLK_DEV_UB is not set | 591 | # CONFIG_BLK_DEV_UB is not set |
| 558 | CONFIG_BLK_DEV_RAM=y | 592 | CONFIG_BLK_DEV_RAM=y |
| 559 | CONFIG_BLK_DEV_RAM_COUNT=4 | 593 | CONFIG_BLK_DEV_RAM_COUNT=8 |
| 560 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 594 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
| 561 | CONFIG_BLK_DEV_INITRD=y | 595 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
| 562 | # CONFIG_CDROM_PKTCDVD is not set | 596 | # CONFIG_CDROM_PKTCDVD is not set |
| 563 | # CONFIG_ATA_OVER_ETH is not set | 597 | # CONFIG_ATA_OVER_ETH is not set |
| 564 | 598 | ||
| @@ -566,6 +600,7 @@ CONFIG_BLK_DEV_INITRD=y | |||
| 566 | # ATA/ATAPI/MFM/RLL support | 600 | # ATA/ATAPI/MFM/RLL support |
| 567 | # | 601 | # |
| 568 | CONFIG_IDE=y | 602 | CONFIG_IDE=y |
| 603 | CONFIG_IDE_MAX_HWIFS=4 | ||
| 569 | CONFIG_BLK_DEV_IDE=y | 604 | CONFIG_BLK_DEV_IDE=y |
| 570 | 605 | ||
| 571 | # | 606 | # |
| @@ -585,27 +620,27 @@ CONFIG_BLK_DEV_IDECS=m | |||
| 585 | # IDE chipset support/bugfixes | 620 | # IDE chipset support/bugfixes |
| 586 | # | 621 | # |
| 587 | CONFIG_IDE_GENERIC=y | 622 | CONFIG_IDE_GENERIC=y |
| 588 | CONFIG_IDE_PXA_CF=y | 623 | # CONFIG_IDE_ARM is not set |
| 589 | CONFIG_IDE_ARM=y | ||
| 590 | # CONFIG_BLK_DEV_IDEDMA is not set | 624 | # CONFIG_BLK_DEV_IDEDMA is not set |
| 591 | # CONFIG_IDEDMA_AUTO is not set | ||
| 592 | # CONFIG_BLK_DEV_HD is not set | 625 | # CONFIG_BLK_DEV_HD is not set |
| 593 | 626 | ||
| 594 | # | 627 | # |
| 595 | # SCSI device support | 628 | # SCSI device support |
| 596 | # | 629 | # |
| 597 | # CONFIG_RAID_ATTRS is not set | 630 | # CONFIG_RAID_ATTRS is not set |
| 598 | CONFIG_SCSI=m | 631 | CONFIG_SCSI=y |
| 632 | # CONFIG_SCSI_TGT is not set | ||
| 633 | # CONFIG_SCSI_NETLINK is not set | ||
| 599 | CONFIG_SCSI_PROC_FS=y | 634 | CONFIG_SCSI_PROC_FS=y |
| 600 | 635 | ||
| 601 | # | 636 | # |
| 602 | # SCSI support type (disk, tape, CD-ROM) | 637 | # SCSI support type (disk, tape, CD-ROM) |
| 603 | # | 638 | # |
| 604 | CONFIG_BLK_DEV_SD=m | 639 | CONFIG_BLK_DEV_SD=y |
| 605 | # CONFIG_CHR_DEV_ST is not set | 640 | # CONFIG_CHR_DEV_ST is not set |
| 606 | # CONFIG_CHR_DEV_OSST is not set | 641 | # CONFIG_CHR_DEV_OSST is not set |
| 607 | # CONFIG_BLK_DEV_SR is not set | 642 | # CONFIG_BLK_DEV_SR is not set |
| 608 | CONFIG_CHR_DEV_SG=m | 643 | CONFIG_CHR_DEV_SG=y |
| 609 | # CONFIG_CHR_DEV_SCH is not set | 644 | # CONFIG_CHR_DEV_SCH is not set |
| 610 | 645 | ||
| 611 | # | 646 | # |
| @@ -614,21 +649,23 @@ CONFIG_CHR_DEV_SG=m | |||
| 614 | CONFIG_SCSI_MULTI_LUN=y | 649 | CONFIG_SCSI_MULTI_LUN=y |
| 615 | # CONFIG_SCSI_CONSTANTS is not set | 650 | # CONFIG_SCSI_CONSTANTS is not set |
| 616 | # CONFIG_SCSI_LOGGING is not set | 651 | # CONFIG_SCSI_LOGGING is not set |
| 652 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 617 | 653 | ||
| 618 | # | 654 | # |
| 619 | # SCSI Transport Attributes | 655 | # SCSI Transports |
| 620 | # | 656 | # |
| 621 | # CONFIG_SCSI_SPI_ATTRS is not set | 657 | # CONFIG_SCSI_SPI_ATTRS is not set |
| 622 | # CONFIG_SCSI_FC_ATTRS is not set | 658 | # CONFIG_SCSI_FC_ATTRS is not set |
| 623 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 659 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
| 624 | # CONFIG_SCSI_SAS_ATTRS is not set | 660 | # CONFIG_SCSI_SAS_ATTRS is not set |
| 661 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
| 625 | 662 | ||
| 626 | # | 663 | # |
| 627 | # SCSI low-level drivers | 664 | # SCSI low-level drivers |
| 628 | # | 665 | # |
| 629 | # CONFIG_ISCSI_TCP is not set | 666 | # CONFIG_ISCSI_TCP is not set |
| 630 | # CONFIG_SCSI_SATA is not set | ||
| 631 | # CONFIG_SCSI_DEBUG is not set | 667 | # CONFIG_SCSI_DEBUG is not set |
| 668 | # CONFIG_SCSI_ESP_CORE is not set | ||
| 632 | 669 | ||
| 633 | # | 670 | # |
| 634 | # PCMCIA SCSI adapter support | 671 | # PCMCIA SCSI adapter support |
| @@ -640,6 +677,14 @@ CONFIG_SCSI_MULTI_LUN=y | |||
| 640 | # CONFIG_PCMCIA_SYM53C500 is not set | 677 | # CONFIG_PCMCIA_SYM53C500 is not set |
| 641 | 678 | ||
| 642 | # | 679 | # |
| 680 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
| 681 | # | ||
| 682 | CONFIG_ATA=m | ||
| 683 | # CONFIG_ATA_NONSTANDARD is not set | ||
| 684 | CONFIG_PATA_PCMCIA=m | ||
| 685 | CONFIG_PATA_PLATFORM=m | ||
| 686 | |||
| 687 | # | ||
| 643 | # Multi-device support (RAID and LVM) | 688 | # Multi-device support (RAID and LVM) |
| 644 | # | 689 | # |
| 645 | # CONFIG_MD is not set | 690 | # CONFIG_MD is not set |
| @@ -675,10 +720,14 @@ CONFIG_PHYLIB=y | |||
| 675 | # MII PHY device drivers | 720 | # MII PHY device drivers |
| 676 | # | 721 | # |
| 677 | # CONFIG_MARVELL_PHY is not set | 722 | # CONFIG_MARVELL_PHY is not set |
| 678 | CONFIG_DAVICOM_PHY=y | 723 | # CONFIG_DAVICOM_PHY is not set |
| 679 | # CONFIG_QSEMI_PHY is not set | 724 | # CONFIG_QSEMI_PHY is not set |
| 680 | # CONFIG_LXT_PHY is not set | 725 | # CONFIG_LXT_PHY is not set |
| 681 | # CONFIG_CICADA_PHY is not set | 726 | # CONFIG_CICADA_PHY is not set |
| 727 | # CONFIG_VITESSE_PHY is not set | ||
| 728 | # CONFIG_SMSC_PHY is not set | ||
| 729 | # CONFIG_BROADCOM_PHY is not set | ||
| 730 | # CONFIG_FIXED_PHY is not set | ||
| 682 | 731 | ||
| 683 | # | 732 | # |
| 684 | # Ethernet (10 or 100Mbit) | 733 | # Ethernet (10 or 100Mbit) |
| @@ -687,6 +736,7 @@ CONFIG_NET_ETHERNET=y | |||
| 687 | CONFIG_MII=y | 736 | CONFIG_MII=y |
| 688 | # CONFIG_SMC91X is not set | 737 | # CONFIG_SMC91X is not set |
| 689 | CONFIG_DM9000=y | 738 | CONFIG_DM9000=y |
| 739 | # CONFIG_SMC911X is not set | ||
| 690 | 740 | ||
| 691 | # | 741 | # |
| 692 | # Ethernet (1000 Mbit) | 742 | # Ethernet (1000 Mbit) |
| @@ -701,41 +751,23 @@ CONFIG_DM9000=y | |||
| 701 | # | 751 | # |
| 702 | 752 | ||
| 703 | # | 753 | # |
| 704 | # Wireless LAN (non-hamradio) | 754 | # Wireless LAN |
| 705 | # | ||
| 706 | CONFIG_NET_RADIO=y | ||
| 707 | # CONFIG_NET_WIRELESS_RTNETLINK is not set | ||
| 708 | |||
| 709 | # | ||
| 710 | # Obsolete Wireless cards support (pre-802.11) | ||
| 711 | # | ||
| 712 | # CONFIG_STRIP is not set | ||
| 713 | # CONFIG_PCMCIA_WAVELAN is not set | ||
| 714 | # CONFIG_PCMCIA_NETWAVE is not set | ||
| 715 | |||
| 716 | # | ||
| 717 | # Wireless 802.11 Frequency Hopping cards support | ||
| 718 | # | 755 | # |
| 756 | # CONFIG_WLAN_PRE80211 is not set | ||
| 757 | CONFIG_WLAN_80211=y | ||
| 719 | # CONFIG_PCMCIA_RAYCS is not set | 758 | # CONFIG_PCMCIA_RAYCS is not set |
| 720 | 759 | CONFIG_HERMES=y | |
| 721 | # | ||
| 722 | # Wireless 802.11b ISA/PCI cards support | ||
| 723 | # | ||
| 724 | CONFIG_HERMES=m | ||
| 725 | # CONFIG_ATMEL is not set | 760 | # CONFIG_ATMEL is not set |
| 726 | 761 | CONFIG_PCMCIA_HERMES=y | |
| 727 | # | 762 | CONFIG_PCMCIA_SPECTRUM=y |
| 728 | # Wireless 802.11b Pcmcia/Cardbus cards support | 763 | # CONFIG_AIRO_CS is not set |
| 729 | # | ||
| 730 | CONFIG_PCMCIA_HERMES=m | ||
| 731 | # CONFIG_PCMCIA_SPECTRUM is not set | ||
| 732 | CONFIG_AIRO_CS=m | ||
| 733 | # CONFIG_PCMCIA_WL3501 is not set | 764 | # CONFIG_PCMCIA_WL3501 is not set |
| 734 | CONFIG_HOSTAP=m | 765 | # CONFIG_USB_ZD1201 is not set |
| 766 | CONFIG_HOSTAP=y | ||
| 735 | CONFIG_HOSTAP_FIRMWARE=y | 767 | CONFIG_HOSTAP_FIRMWARE=y |
| 736 | CONFIG_HOSTAP_FIRMWARE_NVRAM=y | 768 | CONFIG_HOSTAP_FIRMWARE_NVRAM=y |
| 737 | CONFIG_HOSTAP_CS=m | 769 | CONFIG_HOSTAP_CS=y |
| 738 | CONFIG_NET_WIRELESS=y | 770 | # CONFIG_ZD1211RW is not set |
| 739 | 771 | ||
| 740 | # | 772 | # |
| 741 | # PCMCIA network device support | 773 | # PCMCIA network device support |
| @@ -756,6 +788,7 @@ CONFIG_PPP_BSDCOMP=m | |||
| 756 | CONFIG_PPP_MPPE=m | 788 | CONFIG_PPP_MPPE=m |
| 757 | # CONFIG_PPPOE is not set | 789 | # CONFIG_PPPOE is not set |
| 758 | # CONFIG_SLIP is not set | 790 | # CONFIG_SLIP is not set |
| 791 | CONFIG_SLHC=m | ||
| 759 | # CONFIG_SHAPER is not set | 792 | # CONFIG_SHAPER is not set |
| 760 | # CONFIG_NETCONSOLE is not set | 793 | # CONFIG_NETCONSOLE is not set |
| 761 | # CONFIG_NETPOLL is not set | 794 | # CONFIG_NETPOLL is not set |
| @@ -770,6 +803,7 @@ CONFIG_PPP_MPPE=m | |||
| 770 | # Input device support | 803 | # Input device support |
| 771 | # | 804 | # |
| 772 | CONFIG_INPUT=y | 805 | CONFIG_INPUT=y |
| 806 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
| 773 | 807 | ||
| 774 | # | 808 | # |
| 775 | # Userland interfaces | 809 | # Userland interfaces |
| @@ -789,22 +823,27 @@ CONFIG_INPUT_EVDEV=y | |||
| 789 | # Input Device Drivers | 823 | # Input Device Drivers |
| 790 | # | 824 | # |
| 791 | CONFIG_INPUT_KEYBOARD=y | 825 | CONFIG_INPUT_KEYBOARD=y |
| 792 | CONFIG_KEYBOARD_ATKBD=y | 826 | CONFIG_KEYBOARD_ATKBD=m |
| 793 | # CONFIG_KEYBOARD_SUNKBD is not set | 827 | # CONFIG_KEYBOARD_SUNKBD is not set |
| 794 | # CONFIG_KEYBOARD_LKKBD is not set | 828 | # CONFIG_KEYBOARD_LKKBD is not set |
| 795 | # CONFIG_KEYBOARD_XTKBD is not set | 829 | # CONFIG_KEYBOARD_XTKBD is not set |
| 796 | # CONFIG_KEYBOARD_NEWTON is not set | 830 | # CONFIG_KEYBOARD_NEWTON is not set |
| 831 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
| 832 | # CONFIG_KEYBOARD_GPIO is not set | ||
| 797 | CONFIG_INPUT_MOUSE=y | 833 | CONFIG_INPUT_MOUSE=y |
| 798 | # CONFIG_MOUSE_PS2 is not set | 834 | # CONFIG_MOUSE_PS2 is not set |
| 799 | CONFIG_MOUSE_SERIAL=y | 835 | CONFIG_MOUSE_SERIAL=m |
| 800 | # CONFIG_MOUSE_VSXXXAA is not set | 836 | # CONFIG_MOUSE_VSXXXAA is not set |
| 801 | # CONFIG_INPUT_JOYSTICK is not set | 837 | # CONFIG_INPUT_JOYSTICK is not set |
| 802 | CONFIG_INPUT_TOUCHSCREEN=y | 838 | CONFIG_INPUT_TOUCHSCREEN=y |
| 803 | # CONFIG_TOUCHSCREEN_ADS7846 is not set | ||
| 804 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 839 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
| 805 | # CONFIG_TOUCHSCREEN_ELO is not set | 840 | # CONFIG_TOUCHSCREEN_ELO is not set |
| 806 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | 841 | # CONFIG_TOUCHSCREEN_MTOUCH is not set |
| 807 | # CONFIG_TOUCHSCREEN_MK712 is not set | 842 | # CONFIG_TOUCHSCREEN_MK712 is not set |
| 843 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set | ||
| 844 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set | ||
| 845 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set | ||
| 846 | CONFIG_TOUCHSCREEN_UCB1400=y | ||
| 808 | CONFIG_INPUT_MISC=y | 847 | CONFIG_INPUT_MISC=y |
| 809 | CONFIG_INPUT_UINPUT=m | 848 | CONFIG_INPUT_UINPUT=m |
| 810 | 849 | ||
| @@ -823,6 +862,7 @@ CONFIG_SERIO_LIBPS2=y | |||
| 823 | CONFIG_VT=y | 862 | CONFIG_VT=y |
| 824 | CONFIG_VT_CONSOLE=y | 863 | CONFIG_VT_CONSOLE=y |
| 825 | CONFIG_HW_CONSOLE=y | 864 | CONFIG_HW_CONSOLE=y |
| 865 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 826 | # CONFIG_SERIAL_NONSTANDARD is not set | 866 | # CONFIG_SERIAL_NONSTANDARD is not set |
| 827 | 867 | ||
| 828 | # | 868 | # |
| @@ -862,15 +902,12 @@ CONFIG_SA1100_WATCHDOG=y | |||
| 862 | # USB-based Watchdog Cards | 902 | # USB-based Watchdog Cards |
| 863 | # | 903 | # |
| 864 | # CONFIG_USBPCWATCHDOG is not set | 904 | # CONFIG_USBPCWATCHDOG is not set |
| 905 | CONFIG_HW_RANDOM=y | ||
| 865 | # CONFIG_NVRAM is not set | 906 | # CONFIG_NVRAM is not set |
| 866 | # CONFIG_DTLK is not set | 907 | # CONFIG_DTLK is not set |
| 867 | # CONFIG_R3964 is not set | 908 | # CONFIG_R3964 is not set |
| 868 | 909 | ||
| 869 | # | 910 | # |
| 870 | # Ftape, the floppy tape device driver | ||
| 871 | # | ||
| 872 | |||
| 873 | # | ||
| 874 | # PCMCIA character devices | 911 | # PCMCIA character devices |
| 875 | # | 912 | # |
| 876 | # CONFIG_SYNCLINK_CS is not set | 913 | # CONFIG_SYNCLINK_CS is not set |
| @@ -882,7 +919,6 @@ CONFIG_SA1100_WATCHDOG=y | |||
| 882 | # TPM devices | 919 | # TPM devices |
| 883 | # | 920 | # |
| 884 | # CONFIG_TCG_TPM is not set | 921 | # CONFIG_TCG_TPM is not set |
| 885 | # CONFIG_TELCLOCK is not set | ||
| 886 | 922 | ||
| 887 | # | 923 | # |
| 888 | # I2C support | 924 | # I2C support |
| @@ -902,6 +938,7 @@ CONFIG_I2C_CHARDEV=y | |||
| 902 | # | 938 | # |
| 903 | CONFIG_I2C_PXA=y | 939 | CONFIG_I2C_PXA=y |
| 904 | CONFIG_I2C_PXA_SLAVE=y | 940 | CONFIG_I2C_PXA_SLAVE=y |
| 941 | # CONFIG_I2C_OCORES is not set | ||
| 905 | # CONFIG_I2C_PARPORT_LIGHT is not set | 942 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| 906 | # CONFIG_I2C_STUB is not set | 943 | # CONFIG_I2C_STUB is not set |
| 907 | # CONFIG_I2C_PCA_ISA is not set | 944 | # CONFIG_I2C_PCA_ISA is not set |
| @@ -911,7 +948,7 @@ CONFIG_I2C_PXA_SLAVE=y | |||
| 911 | # | 948 | # |
| 912 | # CONFIG_SENSORS_DS1337 is not set | 949 | # CONFIG_SENSORS_DS1337 is not set |
| 913 | # CONFIG_SENSORS_DS1374 is not set | 950 | # CONFIG_SENSORS_DS1374 is not set |
| 914 | CONFIG_SENSORS_EEPROM=m | 951 | # CONFIG_SENSORS_EEPROM is not set |
| 915 | # CONFIG_SENSORS_PCF8574 is not set | 952 | # CONFIG_SENSORS_PCF8574 is not set |
| 916 | # CONFIG_SENSORS_PCA9539 is not set | 953 | # CONFIG_SENSORS_PCA9539 is not set |
| 917 | # CONFIG_SENSORS_PCF8591 is not set | 954 | # CONFIG_SENSORS_PCF8591 is not set |
| @@ -924,18 +961,8 @@ CONFIG_SENSORS_EEPROM=m | |||
| 924 | # | 961 | # |
| 925 | # SPI support | 962 | # SPI support |
| 926 | # | 963 | # |
| 927 | CONFIG_SPI=y | 964 | # CONFIG_SPI is not set |
| 928 | CONFIG_SPI_MASTER=y | 965 | # CONFIG_SPI_MASTER is not set |
| 929 | |||
| 930 | # | ||
| 931 | # SPI Master Controller Drivers | ||
| 932 | # | ||
| 933 | # CONFIG_SPI_BITBANG is not set | ||
| 934 | CONFIG_SPI_PXA2XX=m | ||
| 935 | |||
| 936 | # | ||
| 937 | # SPI Protocol Masters | ||
| 938 | # | ||
| 939 | 966 | ||
| 940 | # | 967 | # |
| 941 | # Dallas's 1-wire bus | 968 | # Dallas's 1-wire bus |
| @@ -947,9 +974,11 @@ CONFIG_SPI_PXA2XX=m | |||
| 947 | # | 974 | # |
| 948 | CONFIG_HWMON=y | 975 | CONFIG_HWMON=y |
| 949 | # CONFIG_HWMON_VID is not set | 976 | # CONFIG_HWMON_VID is not set |
| 977 | # CONFIG_SENSORS_ABITUGURU is not set | ||
| 950 | # CONFIG_SENSORS_ADM1021 is not set | 978 | # CONFIG_SENSORS_ADM1021 is not set |
| 951 | # CONFIG_SENSORS_ADM1025 is not set | 979 | # CONFIG_SENSORS_ADM1025 is not set |
| 952 | # CONFIG_SENSORS_ADM1026 is not set | 980 | # CONFIG_SENSORS_ADM1026 is not set |
| 981 | # CONFIG_SENSORS_ADM1029 is not set | ||
| 953 | # CONFIG_SENSORS_ADM1031 is not set | 982 | # CONFIG_SENSORS_ADM1031 is not set |
| 954 | # CONFIG_SENSORS_ADM9240 is not set | 983 | # CONFIG_SENSORS_ADM9240 is not set |
| 955 | # CONFIG_SENSORS_ASB100 is not set | 984 | # CONFIG_SENSORS_ASB100 is not set |
| @@ -973,10 +1002,15 @@ CONFIG_HWMON=y | |||
| 973 | # CONFIG_SENSORS_LM92 is not set | 1002 | # CONFIG_SENSORS_LM92 is not set |
| 974 | # CONFIG_SENSORS_MAX1619 is not set | 1003 | # CONFIG_SENSORS_MAX1619 is not set |
| 975 | # CONFIG_SENSORS_PC87360 is not set | 1004 | # CONFIG_SENSORS_PC87360 is not set |
| 1005 | # CONFIG_SENSORS_PC87427 is not set | ||
| 976 | # CONFIG_SENSORS_SMSC47M1 is not set | 1006 | # CONFIG_SENSORS_SMSC47M1 is not set |
| 1007 | # CONFIG_SENSORS_SMSC47M192 is not set | ||
| 977 | # CONFIG_SENSORS_SMSC47B397 is not set | 1008 | # CONFIG_SENSORS_SMSC47B397 is not set |
| 1009 | # CONFIG_SENSORS_VT1211 is not set | ||
| 978 | # CONFIG_SENSORS_W83781D is not set | 1010 | # CONFIG_SENSORS_W83781D is not set |
| 1011 | # CONFIG_SENSORS_W83791D is not set | ||
| 979 | # CONFIG_SENSORS_W83792D is not set | 1012 | # CONFIG_SENSORS_W83792D is not set |
| 1013 | # CONFIG_SENSORS_W83793 is not set | ||
| 980 | # CONFIG_SENSORS_W83L785TS is not set | 1014 | # CONFIG_SENSORS_W83L785TS is not set |
| 981 | # CONFIG_SENSORS_W83627HF is not set | 1015 | # CONFIG_SENSORS_W83627HF is not set |
| 982 | # CONFIG_SENSORS_W83627EHF is not set | 1016 | # CONFIG_SENSORS_W83627EHF is not set |
| @@ -987,16 +1021,15 @@ CONFIG_HWMON=y | |||
| 987 | # | 1021 | # |
| 988 | 1022 | ||
| 989 | # | 1023 | # |
| 990 | # Multimedia Capabilities Port drivers | 1024 | # Multifunction device drivers |
| 991 | # | 1025 | # |
| 992 | CONFIG_UCB1400=y | 1026 | # CONFIG_MFD_SM501 is not set |
| 993 | CONFIG_UCB1400_TS=y | ||
| 994 | 1027 | ||
| 995 | # | 1028 | # |
| 996 | # LED devices | 1029 | # LED devices |
| 997 | # | 1030 | # |
| 998 | CONFIG_NEW_LEDS=y | 1031 | CONFIG_NEW_LEDS=y |
| 999 | CONFIG_LEDS_CLASS=y | 1032 | # CONFIG_LEDS_CLASS is not set |
| 1000 | 1033 | ||
| 1001 | # | 1034 | # |
| 1002 | # LED drivers | 1035 | # LED drivers |
| @@ -1007,13 +1040,13 @@ CONFIG_LEDS_CLASS=y | |||
| 1007 | # | 1040 | # |
| 1008 | CONFIG_LEDS_TRIGGERS=y | 1041 | CONFIG_LEDS_TRIGGERS=y |
| 1009 | CONFIG_LEDS_TRIGGER_TIMER=y | 1042 | CONFIG_LEDS_TRIGGER_TIMER=y |
| 1010 | CONFIG_LEDS_TRIGGER_IDE_DISK=y | 1043 | # CONFIG_LEDS_TRIGGER_IDE_DISK is not set |
| 1044 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | ||
| 1011 | 1045 | ||
| 1012 | # | 1046 | # |
| 1013 | # Multimedia devices | 1047 | # Multimedia devices |
| 1014 | # | 1048 | # |
| 1015 | # CONFIG_VIDEO_DEV is not set | 1049 | # CONFIG_VIDEO_DEV is not set |
| 1016 | CONFIG_VIDEO_V4L2=y | ||
| 1017 | 1050 | ||
| 1018 | # | 1051 | # |
| 1019 | # Digital Video Broadcasting Devices | 1052 | # Digital Video Broadcasting Devices |
| @@ -1024,17 +1057,28 @@ CONFIG_VIDEO_V4L2=y | |||
| 1024 | # | 1057 | # |
| 1025 | # Graphics support | 1058 | # Graphics support |
| 1026 | # | 1059 | # |
| 1060 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
| 1061 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
| 1062 | CONFIG_LCD_CLASS_DEVICE=y | ||
| 1027 | CONFIG_FB=y | 1063 | CONFIG_FB=y |
| 1064 | CONFIG_FIRMWARE_EDID=y | ||
| 1065 | # CONFIG_FB_DDC is not set | ||
| 1028 | CONFIG_FB_CFB_FILLRECT=y | 1066 | CONFIG_FB_CFB_FILLRECT=y |
| 1029 | CONFIG_FB_CFB_COPYAREA=y | 1067 | CONFIG_FB_CFB_COPYAREA=y |
| 1030 | CONFIG_FB_CFB_IMAGEBLIT=y | 1068 | CONFIG_FB_CFB_IMAGEBLIT=y |
| 1069 | # CONFIG_FB_SVGALIB is not set | ||
| 1031 | # CONFIG_FB_MACMODES is not set | 1070 | # CONFIG_FB_MACMODES is not set |
| 1032 | CONFIG_FB_FIRMWARE_EDID=y | 1071 | # CONFIG_FB_BACKLIGHT is not set |
| 1033 | # CONFIG_FB_MODE_HELPERS is not set | 1072 | # CONFIG_FB_MODE_HELPERS is not set |
| 1034 | # CONFIG_FB_TILEBLITTING is not set | 1073 | # CONFIG_FB_TILEBLITTING is not set |
| 1074 | |||
| 1075 | # | ||
| 1076 | # Frame buffer hardware drivers | ||
| 1077 | # | ||
| 1035 | # CONFIG_FB_S1D13XXX is not set | 1078 | # CONFIG_FB_S1D13XXX is not set |
| 1036 | CONFIG_FB_PXA=y | 1079 | CONFIG_FB_PXA=y |
| 1037 | # CONFIG_FB_PXA_PARAMETERS is not set | 1080 | # CONFIG_FB_PXA_PARAMETERS is not set |
| 1081 | # CONFIG_FB_MBX is not set | ||
| 1038 | # CONFIG_FB_VIRTUAL is not set | 1082 | # CONFIG_FB_VIRTUAL is not set |
| 1039 | 1083 | ||
| 1040 | # | 1084 | # |
| @@ -1063,11 +1107,6 @@ CONFIG_LOGO=y | |||
| 1063 | CONFIG_LOGO_LINUX_MONO=y | 1107 | CONFIG_LOGO_LINUX_MONO=y |
| 1064 | CONFIG_LOGO_LINUX_VGA16=y | 1108 | CONFIG_LOGO_LINUX_VGA16=y |
| 1065 | CONFIG_LOGO_LINUX_CLUT224=y | 1109 | CONFIG_LOGO_LINUX_CLUT224=y |
| 1066 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
| 1067 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
| 1068 | CONFIG_BACKLIGHT_DEVICE=y | ||
| 1069 | CONFIG_LCD_CLASS_DEVICE=y | ||
| 1070 | CONFIG_LCD_DEVICE=y | ||
| 1071 | 1110 | ||
| 1072 | # | 1111 | # |
| 1073 | # Sound | 1112 | # Sound |
| @@ -1082,7 +1121,7 @@ CONFIG_SND_TIMER=y | |||
| 1082 | CONFIG_SND_PCM=y | 1121 | CONFIG_SND_PCM=y |
| 1083 | CONFIG_SND_HWDEP=m | 1122 | CONFIG_SND_HWDEP=m |
| 1084 | CONFIG_SND_RAWMIDI=m | 1123 | CONFIG_SND_RAWMIDI=m |
| 1085 | CONFIG_SND_SEQUENCER=m | 1124 | CONFIG_SND_SEQUENCER=y |
| 1086 | # CONFIG_SND_SEQ_DUMMY is not set | 1125 | # CONFIG_SND_SEQ_DUMMY is not set |
| 1087 | CONFIG_SND_OSSEMUL=y | 1126 | CONFIG_SND_OSSEMUL=y |
| 1088 | CONFIG_SND_MIXER_OSS=y | 1127 | CONFIG_SND_MIXER_OSS=y |
| @@ -1093,13 +1132,14 @@ CONFIG_SND_PCM_OSS_PLUGINS=y | |||
| 1093 | CONFIG_SND_SUPPORT_OLD_API=y | 1132 | CONFIG_SND_SUPPORT_OLD_API=y |
| 1094 | CONFIG_SND_VERBOSE_PROCFS=y | 1133 | CONFIG_SND_VERBOSE_PROCFS=y |
| 1095 | CONFIG_SND_VERBOSE_PRINTK=y | 1134 | CONFIG_SND_VERBOSE_PRINTK=y |
| 1096 | # CONFIG_SND_DEBUG is not set | 1135 | CONFIG_SND_DEBUG=y |
| 1136 | CONFIG_SND_DEBUG_DETECT=y | ||
| 1137 | # CONFIG_SND_PCM_XRUN_DEBUG is not set | ||
| 1097 | 1138 | ||
| 1098 | # | 1139 | # |
| 1099 | # Generic devices | 1140 | # Generic devices |
| 1100 | # | 1141 | # |
| 1101 | CONFIG_SND_AC97_CODEC=y | 1142 | CONFIG_SND_AC97_CODEC=y |
| 1102 | CONFIG_SND_AC97_BUS=y | ||
| 1103 | # CONFIG_SND_DUMMY is not set | 1143 | # CONFIG_SND_DUMMY is not set |
| 1104 | # CONFIG_SND_VIRMIDI is not set | 1144 | # CONFIG_SND_VIRMIDI is not set |
| 1105 | # CONFIG_SND_MTPAV is not set | 1145 | # CONFIG_SND_MTPAV is not set |
| @@ -1124,9 +1164,32 @@ CONFIG_SND_USB_AUDIO=m | |||
| 1124 | # CONFIG_SND_PDAUDIOCF is not set | 1164 | # CONFIG_SND_PDAUDIOCF is not set |
| 1125 | 1165 | ||
| 1126 | # | 1166 | # |
| 1167 | # SoC audio support | ||
| 1168 | # | ||
| 1169 | # CONFIG_SND_SOC is not set | ||
| 1170 | |||
| 1171 | # | ||
| 1127 | # Open Sound System | 1172 | # Open Sound System |
| 1128 | # | 1173 | # |
| 1129 | # CONFIG_SOUND_PRIME is not set | 1174 | # CONFIG_SOUND_PRIME is not set |
| 1175 | CONFIG_AC97_BUS=y | ||
| 1176 | |||
| 1177 | # | ||
| 1178 | # HID Devices | ||
| 1179 | # | ||
| 1180 | CONFIG_HID=y | ||
| 1181 | # CONFIG_HID_DEBUG is not set | ||
| 1182 | |||
| 1183 | # | ||
| 1184 | # USB Input Devices | ||
| 1185 | # | ||
| 1186 | # CONFIG_USB_HID is not set | ||
| 1187 | |||
| 1188 | # | ||
| 1189 | # USB HID Boot Protocol drivers | ||
| 1190 | # | ||
| 1191 | # CONFIG_USB_KBD is not set | ||
| 1192 | # CONFIG_USB_MOUSE is not set | ||
| 1130 | 1193 | ||
| 1131 | # | 1194 | # |
| 1132 | # USB support | 1195 | # USB support |
| @@ -1141,7 +1204,7 @@ CONFIG_USB=y | |||
| 1141 | # Miscellaneous USB options | 1204 | # Miscellaneous USB options |
| 1142 | # | 1205 | # |
| 1143 | CONFIG_USB_DEVICEFS=y | 1206 | CONFIG_USB_DEVICEFS=y |
| 1144 | # CONFIG_USB_BANDWIDTH is not set | 1207 | # CONFIG_USB_DEVICE_CLASS is not set |
| 1145 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1208 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 1146 | # CONFIG_USB_SUSPEND is not set | 1209 | # CONFIG_USB_SUSPEND is not set |
| 1147 | # CONFIG_USB_OTG is not set | 1210 | # CONFIG_USB_OTG is not set |
| @@ -1151,7 +1214,8 @@ CONFIG_USB_DEVICEFS=y | |||
| 1151 | # | 1214 | # |
| 1152 | # CONFIG_USB_ISP116X_HCD is not set | 1215 | # CONFIG_USB_ISP116X_HCD is not set |
| 1153 | CONFIG_USB_OHCI_HCD=y | 1216 | CONFIG_USB_OHCI_HCD=y |
| 1154 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 1217 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
| 1218 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
| 1155 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 1219 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
| 1156 | # CONFIG_USB_SL811_HCD is not set | 1220 | # CONFIG_USB_SL811_HCD is not set |
| 1157 | 1221 | ||
| @@ -1179,38 +1243,25 @@ CONFIG_USB_STORAGE=m | |||
| 1179 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1243 | # CONFIG_USB_STORAGE_SDDR55 is not set |
| 1180 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1244 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
| 1181 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1245 | # CONFIG_USB_STORAGE_ALAUDA is not set |
| 1246 | # CONFIG_USB_STORAGE_KARMA is not set | ||
| 1182 | # CONFIG_USB_LIBUSUAL is not set | 1247 | # CONFIG_USB_LIBUSUAL is not set |
| 1183 | 1248 | ||
| 1184 | # | 1249 | # |
| 1185 | # USB Input Devices | 1250 | # USB Input Devices |
| 1186 | # | 1251 | # |
| 1187 | CONFIG_USB_HID=m | ||
| 1188 | CONFIG_USB_HIDINPUT=y | ||
| 1189 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
| 1190 | # CONFIG_HID_FF is not set | ||
| 1191 | # CONFIG_USB_HIDDEV is not set | ||
| 1192 | |||
| 1193 | # | ||
| 1194 | # USB HID Boot Protocol drivers | ||
| 1195 | # | ||
| 1196 | # CONFIG_USB_KBD is not set | ||
| 1197 | # CONFIG_USB_MOUSE is not set | ||
| 1198 | # CONFIG_USB_AIPTEK is not set | 1252 | # CONFIG_USB_AIPTEK is not set |
| 1199 | # CONFIG_USB_WACOM is not set | 1253 | # CONFIG_USB_WACOM is not set |
| 1200 | # CONFIG_USB_ACECAD is not set | 1254 | # CONFIG_USB_ACECAD is not set |
| 1201 | # CONFIG_USB_KBTAB is not set | 1255 | # CONFIG_USB_KBTAB is not set |
| 1202 | # CONFIG_USB_POWERMATE is not set | 1256 | # CONFIG_USB_POWERMATE is not set |
| 1203 | CONFIG_USB_TOUCHSCREEN=m | 1257 | # CONFIG_USB_TOUCHSCREEN is not set |
| 1204 | # CONFIG_USB_TOUCHSCREEN_EGALAX is not set | ||
| 1205 | # CONFIG_USB_TOUCHSCREEN_PANJIT is not set | ||
| 1206 | # CONFIG_USB_TOUCHSCREEN_3M is not set | ||
| 1207 | # CONFIG_USB_TOUCHSCREEN_ITM is not set | ||
| 1208 | # CONFIG_USB_YEALINK is not set | 1258 | # CONFIG_USB_YEALINK is not set |
| 1209 | # CONFIG_USB_XPAD is not set | 1259 | # CONFIG_USB_XPAD is not set |
| 1210 | # CONFIG_USB_ATI_REMOTE is not set | 1260 | # CONFIG_USB_ATI_REMOTE is not set |
| 1211 | # CONFIG_USB_ATI_REMOTE2 is not set | 1261 | # CONFIG_USB_ATI_REMOTE2 is not set |
| 1212 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 1262 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
| 1213 | # CONFIG_USB_APPLETOUCH is not set | 1263 | # CONFIG_USB_APPLETOUCH is not set |
| 1264 | # CONFIG_USB_GTCO is not set | ||
| 1214 | 1265 | ||
| 1215 | # | 1266 | # |
| 1216 | # USB Imaging devices | 1267 | # USB Imaging devices |
| @@ -1225,9 +1276,9 @@ CONFIG_USB_TOUCHSCREEN=m | |||
| 1225 | # CONFIG_USB_KAWETH is not set | 1276 | # CONFIG_USB_KAWETH is not set |
| 1226 | # CONFIG_USB_PEGASUS is not set | 1277 | # CONFIG_USB_PEGASUS is not set |
| 1227 | # CONFIG_USB_RTL8150 is not set | 1278 | # CONFIG_USB_RTL8150 is not set |
| 1279 | # CONFIG_USB_USBNET_MII is not set | ||
| 1228 | # CONFIG_USB_USBNET is not set | 1280 | # CONFIG_USB_USBNET is not set |
| 1229 | # CONFIG_USB_ZD1201 is not set | 1281 | # CONFIG_USB_MON is not set |
| 1230 | CONFIG_USB_MON=y | ||
| 1231 | 1282 | ||
| 1232 | # | 1283 | # |
| 1233 | # USB port drivers | 1284 | # USB port drivers |
| @@ -1236,23 +1287,66 @@ CONFIG_USB_MON=y | |||
| 1236 | # | 1287 | # |
| 1237 | # USB Serial Converter support | 1288 | # USB Serial Converter support |
| 1238 | # | 1289 | # |
| 1239 | # CONFIG_USB_SERIAL is not set | 1290 | CONFIG_USB_SERIAL=m |
| 1291 | # CONFIG_USB_SERIAL_GENERIC is not set | ||
| 1292 | # CONFIG_USB_SERIAL_AIRCABLE is not set | ||
| 1293 | # CONFIG_USB_SERIAL_AIRPRIME is not set | ||
| 1294 | # CONFIG_USB_SERIAL_ARK3116 is not set | ||
| 1295 | # CONFIG_USB_SERIAL_BELKIN is not set | ||
| 1296 | # CONFIG_USB_SERIAL_WHITEHEAT is not set | ||
| 1297 | # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set | ||
| 1298 | # CONFIG_USB_SERIAL_CP2101 is not set | ||
| 1299 | # CONFIG_USB_SERIAL_CYPRESS_M8 is not set | ||
| 1300 | # CONFIG_USB_SERIAL_EMPEG is not set | ||
| 1301 | # CONFIG_USB_SERIAL_FTDI_SIO is not set | ||
| 1302 | # CONFIG_USB_SERIAL_FUNSOFT is not set | ||
| 1303 | # CONFIG_USB_SERIAL_VISOR is not set | ||
| 1304 | # CONFIG_USB_SERIAL_IPAQ is not set | ||
| 1305 | # CONFIG_USB_SERIAL_IR is not set | ||
| 1306 | # CONFIG_USB_SERIAL_EDGEPORT is not set | ||
| 1307 | # CONFIG_USB_SERIAL_EDGEPORT_TI is not set | ||
| 1308 | # CONFIG_USB_SERIAL_GARMIN is not set | ||
| 1309 | # CONFIG_USB_SERIAL_IPW is not set | ||
| 1310 | # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set | ||
| 1311 | # CONFIG_USB_SERIAL_KEYSPAN is not set | ||
| 1312 | # CONFIG_USB_SERIAL_KLSI is not set | ||
| 1313 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set | ||
| 1314 | # CONFIG_USB_SERIAL_MCT_U232 is not set | ||
| 1315 | # CONFIG_USB_SERIAL_MOS7720 is not set | ||
| 1316 | # CONFIG_USB_SERIAL_MOS7840 is not set | ||
| 1317 | # CONFIG_USB_SERIAL_NAVMAN is not set | ||
| 1318 | # CONFIG_USB_SERIAL_PL2303 is not set | ||
| 1319 | # CONFIG_USB_SERIAL_HP4X is not set | ||
| 1320 | # CONFIG_USB_SERIAL_SAFE is not set | ||
| 1321 | # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set | ||
| 1322 | # CONFIG_USB_SERIAL_TI is not set | ||
| 1323 | # CONFIG_USB_SERIAL_CYBERJACK is not set | ||
| 1324 | # CONFIG_USB_SERIAL_XIRCOM is not set | ||
| 1325 | # CONFIG_USB_SERIAL_OPTION is not set | ||
| 1326 | # CONFIG_USB_SERIAL_OMNINET is not set | ||
| 1327 | # CONFIG_USB_SERIAL_DEBUG is not set | ||
| 1240 | 1328 | ||
| 1241 | # | 1329 | # |
| 1242 | # USB Miscellaneous drivers | 1330 | # USB Miscellaneous drivers |
| 1243 | # | 1331 | # |
| 1244 | # CONFIG_USB_EMI62 is not set | 1332 | # CONFIG_USB_EMI62 is not set |
| 1245 | # CONFIG_USB_EMI26 is not set | 1333 | # CONFIG_USB_EMI26 is not set |
| 1334 | # CONFIG_USB_ADUTUX is not set | ||
| 1246 | # CONFIG_USB_AUERSWALD is not set | 1335 | # CONFIG_USB_AUERSWALD is not set |
| 1247 | # CONFIG_USB_RIO500 is not set | 1336 | # CONFIG_USB_RIO500 is not set |
| 1248 | # CONFIG_USB_LEGOTOWER is not set | 1337 | # CONFIG_USB_LEGOTOWER is not set |
| 1249 | # CONFIG_USB_LCD is not set | 1338 | # CONFIG_USB_LCD is not set |
| 1339 | # CONFIG_USB_BERRY_CHARGE is not set | ||
| 1250 | # CONFIG_USB_LED is not set | 1340 | # CONFIG_USB_LED is not set |
| 1341 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
| 1251 | # CONFIG_USB_CYTHERM is not set | 1342 | # CONFIG_USB_CYTHERM is not set |
| 1252 | # CONFIG_USB_PHIDGETKIT is not set | 1343 | # CONFIG_USB_PHIDGET is not set |
| 1253 | # CONFIG_USB_PHIDGETSERVO is not set | ||
| 1254 | # CONFIG_USB_IDMOUSE is not set | 1344 | # CONFIG_USB_IDMOUSE is not set |
| 1345 | # CONFIG_USB_FTDI_ELAN is not set | ||
| 1346 | # CONFIG_USB_APPLEDISPLAY is not set | ||
| 1255 | # CONFIG_USB_LD is not set | 1347 | # CONFIG_USB_LD is not set |
| 1348 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
| 1349 | # CONFIG_USB_IOWARRIOR is not set | ||
| 1256 | # CONFIG_USB_TEST is not set | 1350 | # CONFIG_USB_TEST is not set |
| 1257 | 1351 | ||
| 1258 | # | 1352 | # |
| @@ -1262,9 +1356,10 @@ CONFIG_USB_MON=y | |||
| 1262 | # | 1356 | # |
| 1263 | # USB Gadget Support | 1357 | # USB Gadget Support |
| 1264 | # | 1358 | # |
| 1265 | CONFIG_USB_GADGET=y | 1359 | CONFIG_USB_GADGET=m |
| 1266 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | 1360 | # CONFIG_USB_GADGET_DEBUG_FILES is not set |
| 1267 | CONFIG_USB_GADGET_SELECTED=y | 1361 | CONFIG_USB_GADGET_SELECTED=y |
| 1362 | # CONFIG_USB_GADGET_FSL_USB2 is not set | ||
| 1268 | # CONFIG_USB_GADGET_NET2280 is not set | 1363 | # CONFIG_USB_GADGET_NET2280 is not set |
| 1269 | # CONFIG_USB_GADGET_PXA2XX is not set | 1364 | # CONFIG_USB_GADGET_PXA2XX is not set |
| 1270 | # CONFIG_USB_GADGET_GOKU is not set | 1365 | # CONFIG_USB_GADGET_GOKU is not set |
| @@ -1272,15 +1367,14 @@ CONFIG_USB_GADGET_SELECTED=y | |||
| 1272 | # CONFIG_USB_GADGET_OMAP is not set | 1367 | # CONFIG_USB_GADGET_OMAP is not set |
| 1273 | # CONFIG_USB_GADGET_AT91 is not set | 1368 | # CONFIG_USB_GADGET_AT91 is not set |
| 1274 | CONFIG_USB_GADGET_DUMMY_HCD=y | 1369 | CONFIG_USB_GADGET_DUMMY_HCD=y |
| 1275 | CONFIG_USB_DUMMY_HCD=y | 1370 | CONFIG_USB_DUMMY_HCD=m |
| 1276 | CONFIG_USB_GADGET_DUALSPEED=y | 1371 | CONFIG_USB_GADGET_DUALSPEED=y |
| 1277 | # CONFIG_USB_ZERO is not set | 1372 | # CONFIG_USB_ZERO is not set |
| 1278 | CONFIG_USB_ETH=m | 1373 | # CONFIG_USB_ETH is not set |
| 1279 | CONFIG_USB_ETH_RNDIS=y | 1374 | # CONFIG_USB_GADGETFS is not set |
| 1280 | CONFIG_USB_GADGETFS=m | 1375 | # CONFIG_USB_FILE_STORAGE is not set |
| 1281 | CONFIG_USB_FILE_STORAGE=m | 1376 | # CONFIG_USB_G_SERIAL is not set |
| 1282 | # CONFIG_USB_FILE_STORAGE_TEST is not set | 1377 | # CONFIG_USB_MIDI_GADGET is not set |
| 1283 | CONFIG_USB_G_SERIAL=m | ||
| 1284 | 1378 | ||
| 1285 | # | 1379 | # |
| 1286 | # MMC/SD Card support | 1380 | # MMC/SD Card support |
| @@ -1295,8 +1389,8 @@ CONFIG_MMC_PXA=y | |||
| 1295 | # | 1389 | # |
| 1296 | CONFIG_RTC_LIB=y | 1390 | CONFIG_RTC_LIB=y |
| 1297 | CONFIG_RTC_CLASS=y | 1391 | CONFIG_RTC_CLASS=y |
| 1298 | CONFIG_RTC_HCTOSYS=y | 1392 | # CONFIG_RTC_HCTOSYS is not set |
| 1299 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 1393 | # CONFIG_RTC_DEBUG is not set |
| 1300 | 1394 | ||
| 1301 | # | 1395 | # |
| 1302 | # RTC interfaces | 1396 | # RTC interfaces |
| @@ -1304,17 +1398,25 @@ CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | |||
| 1304 | CONFIG_RTC_INTF_SYSFS=y | 1398 | CONFIG_RTC_INTF_SYSFS=y |
| 1305 | CONFIG_RTC_INTF_PROC=y | 1399 | CONFIG_RTC_INTF_PROC=y |
| 1306 | CONFIG_RTC_INTF_DEV=y | 1400 | CONFIG_RTC_INTF_DEV=y |
| 1401 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
| 1307 | 1402 | ||
| 1308 | # | 1403 | # |
| 1309 | # RTC drivers | 1404 | # RTC drivers |
| 1310 | # | 1405 | # |
| 1406 | # CONFIG_RTC_DRV_CMOS is not set | ||
| 1311 | # CONFIG_RTC_DRV_X1205 is not set | 1407 | # CONFIG_RTC_DRV_X1205 is not set |
| 1408 | # CONFIG_RTC_DRV_DS1307 is not set | ||
| 1409 | # CONFIG_RTC_DRV_DS1553 is not set | ||
| 1410 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
| 1312 | # CONFIG_RTC_DRV_DS1672 is not set | 1411 | # CONFIG_RTC_DRV_DS1672 is not set |
| 1412 | # CONFIG_RTC_DRV_DS1742 is not set | ||
| 1313 | # CONFIG_RTC_DRV_PCF8563 is not set | 1413 | # CONFIG_RTC_DRV_PCF8563 is not set |
| 1414 | CONFIG_RTC_DRV_PCF8583=m | ||
| 1314 | # CONFIG_RTC_DRV_RS5C372 is not set | 1415 | # CONFIG_RTC_DRV_RS5C372 is not set |
| 1315 | # CONFIG_RTC_DRV_M48T86 is not set | 1416 | # CONFIG_RTC_DRV_M48T86 is not set |
| 1316 | CONFIG_RTC_DRV_SA1100=y | 1417 | CONFIG_RTC_DRV_SA1100=y |
| 1317 | # CONFIG_RTC_DRV_TEST is not set | 1418 | # CONFIG_RTC_DRV_TEST is not set |
| 1419 | # CONFIG_RTC_DRV_V3020 is not set | ||
| 1318 | 1420 | ||
| 1319 | # | 1421 | # |
| 1320 | # File systems | 1422 | # File systems |
| @@ -1328,6 +1430,7 @@ CONFIG_EXT3_FS=y | |||
| 1328 | CONFIG_EXT3_FS_XATTR=y | 1430 | CONFIG_EXT3_FS_XATTR=y |
| 1329 | CONFIG_EXT3_FS_POSIX_ACL=y | 1431 | CONFIG_EXT3_FS_POSIX_ACL=y |
| 1330 | CONFIG_EXT3_FS_SECURITY=y | 1432 | CONFIG_EXT3_FS_SECURITY=y |
| 1433 | # CONFIG_EXT4DEV_FS is not set | ||
| 1331 | CONFIG_JBD=y | 1434 | CONFIG_JBD=y |
| 1332 | # CONFIG_JBD_DEBUG is not set | 1435 | # CONFIG_JBD_DEBUG is not set |
| 1333 | CONFIG_FS_MBCACHE=y | 1436 | CONFIG_FS_MBCACHE=y |
| @@ -1335,10 +1438,12 @@ CONFIG_FS_MBCACHE=y | |||
| 1335 | # CONFIG_JFS_FS is not set | 1438 | # CONFIG_JFS_FS is not set |
| 1336 | CONFIG_FS_POSIX_ACL=y | 1439 | CONFIG_FS_POSIX_ACL=y |
| 1337 | # CONFIG_XFS_FS is not set | 1440 | # CONFIG_XFS_FS is not set |
| 1441 | # CONFIG_GFS2_FS is not set | ||
| 1338 | # CONFIG_OCFS2_FS is not set | 1442 | # CONFIG_OCFS2_FS is not set |
| 1339 | # CONFIG_MINIX_FS is not set | 1443 | # CONFIG_MINIX_FS is not set |
| 1340 | # CONFIG_ROMFS_FS is not set | 1444 | # CONFIG_ROMFS_FS is not set |
| 1341 | CONFIG_INOTIFY=y | 1445 | CONFIG_INOTIFY=y |
| 1446 | CONFIG_INOTIFY_USER=y | ||
| 1342 | # CONFIG_QUOTA is not set | 1447 | # CONFIG_QUOTA is not set |
| 1343 | CONFIG_DNOTIFY=y | 1448 | CONFIG_DNOTIFY=y |
| 1344 | # CONFIG_AUTOFS_FS is not set | 1449 | # CONFIG_AUTOFS_FS is not set |
| @@ -1365,8 +1470,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-15" | |||
| 1365 | # Pseudo filesystems | 1470 | # Pseudo filesystems |
| 1366 | # | 1471 | # |
| 1367 | CONFIG_PROC_FS=y | 1472 | CONFIG_PROC_FS=y |
| 1473 | CONFIG_PROC_SYSCTL=y | ||
| 1368 | CONFIG_SYSFS=y | 1474 | CONFIG_SYSFS=y |
| 1369 | CONFIG_TMPFS=y | 1475 | CONFIG_TMPFS=y |
| 1476 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
| 1370 | # CONFIG_HUGETLB_PAGE is not set | 1477 | # CONFIG_HUGETLB_PAGE is not set |
| 1371 | CONFIG_RAMFS=y | 1478 | CONFIG_RAMFS=y |
| 1372 | # CONFIG_CONFIGFS_FS is not set | 1479 | # CONFIG_CONFIGFS_FS is not set |
| @@ -1376,18 +1483,17 @@ CONFIG_RAMFS=y | |||
| 1376 | # | 1483 | # |
| 1377 | # CONFIG_ADFS_FS is not set | 1484 | # CONFIG_ADFS_FS is not set |
| 1378 | # CONFIG_AFFS_FS is not set | 1485 | # CONFIG_AFFS_FS is not set |
| 1486 | # CONFIG_ECRYPT_FS is not set | ||
| 1379 | # CONFIG_HFS_FS is not set | 1487 | # CONFIG_HFS_FS is not set |
| 1380 | # CONFIG_HFSPLUS_FS is not set | 1488 | # CONFIG_HFSPLUS_FS is not set |
| 1381 | # CONFIG_BEFS_FS is not set | 1489 | # CONFIG_BEFS_FS is not set |
| 1382 | # CONFIG_BFS_FS is not set | 1490 | # CONFIG_BFS_FS is not set |
| 1383 | # CONFIG_EFS_FS is not set | 1491 | # CONFIG_EFS_FS is not set |
| 1384 | CONFIG_JFFS_FS=y | ||
| 1385 | CONFIG_JFFS_FS_VERBOSE=0 | ||
| 1386 | CONFIG_JFFS_PROC_FS=y | ||
| 1387 | CONFIG_JFFS2_FS=y | 1492 | CONFIG_JFFS2_FS=y |
| 1388 | CONFIG_JFFS2_FS_DEBUG=0 | 1493 | CONFIG_JFFS2_FS_DEBUG=0 |
| 1389 | CONFIG_JFFS2_FS_WRITEBUFFER=y | 1494 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
| 1390 | # CONFIG_JFFS2_SUMMARY is not set | 1495 | # CONFIG_JFFS2_SUMMARY is not set |
| 1496 | # CONFIG_JFFS2_FS_XATTR is not set | ||
| 1391 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | 1497 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y |
| 1392 | CONFIG_JFFS2_ZLIB=y | 1498 | CONFIG_JFFS2_ZLIB=y |
| 1393 | CONFIG_JFFS2_RTIME=y | 1499 | CONFIG_JFFS2_RTIME=y |
| @@ -1407,20 +1513,18 @@ CONFIG_JFFS2_CMODE_PRIORITY=y | |||
| 1407 | # | 1513 | # |
| 1408 | CONFIG_NFS_FS=y | 1514 | CONFIG_NFS_FS=y |
| 1409 | CONFIG_NFS_V3=y | 1515 | CONFIG_NFS_V3=y |
| 1410 | CONFIG_NFS_V3_ACL=y | 1516 | # CONFIG_NFS_V3_ACL is not set |
| 1411 | CONFIG_NFS_V4=y | 1517 | CONFIG_NFS_V4=y |
| 1412 | # CONFIG_NFS_DIRECTIO is not set | 1518 | # CONFIG_NFS_DIRECTIO is not set |
| 1413 | CONFIG_NFSD=y | 1519 | CONFIG_NFSD=y |
| 1414 | CONFIG_NFSD_V2_ACL=y | ||
| 1415 | CONFIG_NFSD_V3=y | 1520 | CONFIG_NFSD_V3=y |
| 1416 | CONFIG_NFSD_V3_ACL=y | 1521 | # CONFIG_NFSD_V3_ACL is not set |
| 1417 | CONFIG_NFSD_V4=y | 1522 | CONFIG_NFSD_V4=y |
| 1418 | CONFIG_NFSD_TCP=y | 1523 | CONFIG_NFSD_TCP=y |
| 1419 | CONFIG_ROOT_NFS=y | 1524 | CONFIG_ROOT_NFS=y |
| 1420 | CONFIG_LOCKD=y | 1525 | CONFIG_LOCKD=y |
| 1421 | CONFIG_LOCKD_V4=y | 1526 | CONFIG_LOCKD_V4=y |
| 1422 | CONFIG_EXPORTFS=y | 1527 | CONFIG_EXPORTFS=y |
| 1423 | CONFIG_NFS_ACL_SUPPORT=y | ||
| 1424 | CONFIG_NFS_COMMON=y | 1528 | CONFIG_NFS_COMMON=y |
| 1425 | CONFIG_SUNRPC=y | 1529 | CONFIG_SUNRPC=y |
| 1426 | CONFIG_SUNRPC_GSS=y | 1530 | CONFIG_SUNRPC_GSS=y |
| @@ -1430,7 +1534,9 @@ CONFIG_SMB_FS=m | |||
| 1430 | # CONFIG_SMB_NLS_DEFAULT is not set | 1534 | # CONFIG_SMB_NLS_DEFAULT is not set |
| 1431 | CONFIG_CIFS=m | 1535 | CONFIG_CIFS=m |
| 1432 | # CONFIG_CIFS_STATS is not set | 1536 | # CONFIG_CIFS_STATS is not set |
| 1537 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
| 1433 | # CONFIG_CIFS_XATTR is not set | 1538 | # CONFIG_CIFS_XATTR is not set |
| 1539 | # CONFIG_CIFS_DEBUG2 is not set | ||
| 1434 | # CONFIG_CIFS_EXPERIMENTAL is not set | 1540 | # CONFIG_CIFS_EXPERIMENTAL is not set |
| 1435 | # CONFIG_NCP_FS is not set | 1541 | # CONFIG_NCP_FS is not set |
| 1436 | # CONFIG_CODA_FS is not set | 1542 | # CONFIG_CODA_FS is not set |
| @@ -1504,22 +1610,28 @@ CONFIG_NLS_ISO8859_15=m | |||
| 1504 | CONFIG_NLS_UTF8=m | 1610 | CONFIG_NLS_UTF8=m |
| 1505 | 1611 | ||
| 1506 | # | 1612 | # |
| 1613 | # Distributed Lock Manager | ||
| 1614 | # | ||
| 1615 | # CONFIG_DLM is not set | ||
| 1616 | |||
| 1617 | # | ||
| 1507 | # Profiling support | 1618 | # Profiling support |
| 1508 | # | 1619 | # |
| 1509 | CONFIG_PROFILING=y | 1620 | # CONFIG_PROFILING is not set |
| 1510 | CONFIG_OPROFILE=y | ||
| 1511 | 1621 | ||
| 1512 | # | 1622 | # |
| 1513 | # Kernel hacking | 1623 | # Kernel hacking |
| 1514 | # | 1624 | # |
| 1515 | # CONFIG_PRINTK_TIME is not set | 1625 | # CONFIG_PRINTK_TIME is not set |
| 1626 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 1516 | CONFIG_MAGIC_SYSRQ=y | 1627 | CONFIG_MAGIC_SYSRQ=y |
| 1628 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 1629 | CONFIG_DEBUG_FS=y | ||
| 1630 | # CONFIG_HEADERS_CHECK is not set | ||
| 1517 | # CONFIG_DEBUG_KERNEL is not set | 1631 | # CONFIG_DEBUG_KERNEL is not set |
| 1518 | CONFIG_LOG_BUF_SHIFT=14 | 1632 | CONFIG_LOG_BUF_SHIFT=14 |
| 1519 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1633 | # CONFIG_DEBUG_BUGVERBOSE is not set |
| 1520 | # CONFIG_DEBUG_FS is not set | ||
| 1521 | CONFIG_FRAME_POINTER=y | 1634 | CONFIG_FRAME_POINTER=y |
| 1522 | # CONFIG_UNWIND_INFO is not set | ||
| 1523 | CONFIG_DEBUG_USER=y | 1635 | CONFIG_DEBUG_USER=y |
| 1524 | 1636 | ||
| 1525 | # | 1637 | # |
| @@ -1531,22 +1643,31 @@ CONFIG_SECURITY=y | |||
| 1531 | # CONFIG_SECURITY_NETWORK is not set | 1643 | # CONFIG_SECURITY_NETWORK is not set |
| 1532 | CONFIG_SECURITY_CAPABILITIES=y | 1644 | CONFIG_SECURITY_CAPABILITIES=y |
| 1533 | # CONFIG_SECURITY_ROOTPLUG is not set | 1645 | # CONFIG_SECURITY_ROOTPLUG is not set |
| 1534 | # CONFIG_SECURITY_SECLVL is not set | ||
| 1535 | 1646 | ||
| 1536 | # | 1647 | # |
| 1537 | # Cryptographic options | 1648 | # Cryptographic options |
| 1538 | # | 1649 | # |
| 1539 | CONFIG_CRYPTO=y | 1650 | CONFIG_CRYPTO=y |
| 1651 | CONFIG_CRYPTO_ALGAPI=y | ||
| 1652 | CONFIG_CRYPTO_BLKCIPHER=y | ||
| 1653 | CONFIG_CRYPTO_MANAGER=y | ||
| 1540 | # CONFIG_CRYPTO_HMAC is not set | 1654 | # CONFIG_CRYPTO_HMAC is not set |
| 1655 | # CONFIG_CRYPTO_XCBC is not set | ||
| 1541 | # CONFIG_CRYPTO_NULL is not set | 1656 | # CONFIG_CRYPTO_NULL is not set |
| 1542 | CONFIG_CRYPTO_MD4=y | 1657 | # CONFIG_CRYPTO_MD4 is not set |
| 1543 | CONFIG_CRYPTO_MD5=y | 1658 | CONFIG_CRYPTO_MD5=y |
| 1544 | CONFIG_CRYPTO_SHA1=m | 1659 | CONFIG_CRYPTO_SHA1=m |
| 1545 | CONFIG_CRYPTO_SHA256=m | 1660 | CONFIG_CRYPTO_SHA256=m |
| 1546 | CONFIG_CRYPTO_SHA512=m | 1661 | CONFIG_CRYPTO_SHA512=m |
| 1547 | # CONFIG_CRYPTO_WP512 is not set | 1662 | # CONFIG_CRYPTO_WP512 is not set |
| 1548 | # CONFIG_CRYPTO_TGR192 is not set | 1663 | # CONFIG_CRYPTO_TGR192 is not set |
| 1664 | # CONFIG_CRYPTO_GF128MUL is not set | ||
| 1665 | CONFIG_CRYPTO_ECB=y | ||
| 1666 | CONFIG_CRYPTO_CBC=y | ||
| 1667 | CONFIG_CRYPTO_PCBC=m | ||
| 1668 | # CONFIG_CRYPTO_LRW is not set | ||
| 1549 | CONFIG_CRYPTO_DES=y | 1669 | CONFIG_CRYPTO_DES=y |
| 1670 | # CONFIG_CRYPTO_FCRYPT is not set | ||
| 1550 | # CONFIG_CRYPTO_BLOWFISH is not set | 1671 | # CONFIG_CRYPTO_BLOWFISH is not set |
| 1551 | # CONFIG_CRYPTO_TWOFISH is not set | 1672 | # CONFIG_CRYPTO_TWOFISH is not set |
| 1552 | # CONFIG_CRYPTO_SERPENT is not set | 1673 | # CONFIG_CRYPTO_SERPENT is not set |
| @@ -1554,12 +1675,13 @@ CONFIG_CRYPTO_AES=m | |||
| 1554 | # CONFIG_CRYPTO_CAST5 is not set | 1675 | # CONFIG_CRYPTO_CAST5 is not set |
| 1555 | # CONFIG_CRYPTO_CAST6 is not set | 1676 | # CONFIG_CRYPTO_CAST6 is not set |
| 1556 | # CONFIG_CRYPTO_TEA is not set | 1677 | # CONFIG_CRYPTO_TEA is not set |
| 1557 | CONFIG_CRYPTO_ARC4=m | 1678 | CONFIG_CRYPTO_ARC4=y |
| 1558 | # CONFIG_CRYPTO_KHAZAD is not set | 1679 | # CONFIG_CRYPTO_KHAZAD is not set |
| 1559 | # CONFIG_CRYPTO_ANUBIS is not set | 1680 | # CONFIG_CRYPTO_ANUBIS is not set |
| 1560 | CONFIG_CRYPTO_DEFLATE=m | 1681 | CONFIG_CRYPTO_DEFLATE=m |
| 1561 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1682 | CONFIG_CRYPTO_MICHAEL_MIC=m |
| 1562 | CONFIG_CRYPTO_CRC32C=y | 1683 | CONFIG_CRYPTO_CRC32C=y |
| 1684 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
| 1563 | # CONFIG_CRYPTO_TEST is not set | 1685 | # CONFIG_CRYPTO_TEST is not set |
| 1564 | 1686 | ||
| 1565 | # | 1687 | # |
| @@ -1569,6 +1691,7 @@ CONFIG_CRYPTO_CRC32C=y | |||
| 1569 | # | 1691 | # |
| 1570 | # Library routines | 1692 | # Library routines |
| 1571 | # | 1693 | # |
| 1694 | CONFIG_BITREVERSE=y | ||
| 1572 | CONFIG_CRC_CCITT=y | 1695 | CONFIG_CRC_CCITT=y |
| 1573 | CONFIG_CRC16=y | 1696 | CONFIG_CRC16=y |
| 1574 | CONFIG_CRC32=y | 1697 | CONFIG_CRC32=y |
| @@ -1577,3 +1700,6 @@ CONFIG_ZLIB_INFLATE=y | |||
| 1577 | CONFIG_ZLIB_DEFLATE=y | 1700 | CONFIG_ZLIB_DEFLATE=y |
| 1578 | CONFIG_REED_SOLOMON=y | 1701 | CONFIG_REED_SOLOMON=y |
| 1579 | CONFIG_REED_SOLOMON_DEC16=y | 1702 | CONFIG_REED_SOLOMON_DEC16=y |
| 1703 | CONFIG_PLIST=y | ||
| 1704 | CONFIG_HAS_IOMEM=y | ||
| 1705 | CONFIG_HAS_IOPORT=y | ||
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c index 4779f474f911..9179e8220314 100644 --- a/arch/arm/kernel/armksyms.c +++ b/arch/arm/kernel/armksyms.c | |||
| @@ -76,6 +76,7 @@ EXPORT_SYMBOL(__const_udelay); | |||
| 76 | 76 | ||
| 77 | /* networking */ | 77 | /* networking */ |
| 78 | EXPORT_SYMBOL(csum_partial); | 78 | EXPORT_SYMBOL(csum_partial); |
| 79 | EXPORT_SYMBOL(csum_partial_copy_from_user); | ||
| 79 | EXPORT_SYMBOL(csum_partial_copy_nocheck); | 80 | EXPORT_SYMBOL(csum_partial_copy_nocheck); |
| 80 | EXPORT_SYMBOL(__csum_ipv6_magic); | 81 | EXPORT_SYMBOL(__csum_ipv6_magic); |
| 81 | 82 | ||
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c index bdbd7da99286..f56d48c451ea 100644 --- a/arch/arm/kernel/ecard.c +++ b/arch/arm/kernel/ecard.c | |||
| @@ -41,11 +41,11 @@ | |||
| 41 | #include <linux/init.h> | 41 | #include <linux/init.h> |
| 42 | #include <linux/mutex.h> | 42 | #include <linux/mutex.h> |
| 43 | #include <linux/kthread.h> | 43 | #include <linux/kthread.h> |
| 44 | #include <linux/io.h> | ||
| 44 | 45 | ||
| 45 | #include <asm/dma.h> | 46 | #include <asm/dma.h> |
| 46 | #include <asm/ecard.h> | 47 | #include <asm/ecard.h> |
| 47 | #include <asm/hardware.h> | 48 | #include <asm/hardware.h> |
| 48 | #include <asm/io.h> | ||
| 49 | #include <asm/irq.h> | 49 | #include <asm/irq.h> |
| 50 | #include <asm/mmu_context.h> | 50 | #include <asm/mmu_context.h> |
| 51 | #include <asm/mach/irq.h> | 51 | #include <asm/mach/irq.h> |
| @@ -958,6 +958,31 @@ void ecard_release_resources(struct expansion_card *ec) | |||
| 958 | } | 958 | } |
| 959 | EXPORT_SYMBOL(ecard_release_resources); | 959 | EXPORT_SYMBOL(ecard_release_resources); |
| 960 | 960 | ||
| 961 | void ecard_setirq(struct expansion_card *ec, const struct expansion_card_ops *ops, void *irq_data) | ||
| 962 | { | ||
| 963 | ec->irq_data = irq_data; | ||
| 964 | barrier(); | ||
| 965 | ec->ops = ops; | ||
| 966 | } | ||
| 967 | EXPORT_SYMBOL(ecard_setirq); | ||
| 968 | |||
| 969 | void __iomem *ecardm_iomap(struct expansion_card *ec, unsigned int res, | ||
| 970 | unsigned long offset, unsigned long maxsize) | ||
| 971 | { | ||
| 972 | unsigned long start = ecard_resource_start(ec, res); | ||
| 973 | unsigned long end = ecard_resource_end(ec, res); | ||
| 974 | |||
| 975 | if (offset > (end - start)) | ||
| 976 | return NULL; | ||
| 977 | |||
| 978 | start += offset; | ||
| 979 | if (maxsize && end - start > maxsize) | ||
| 980 | end = start + maxsize; | ||
| 981 | |||
| 982 | return devm_ioremap(&ec->dev, start, end - start); | ||
| 983 | } | ||
| 984 | EXPORT_SYMBOL(ecardm_iomap); | ||
| 985 | |||
| 961 | /* | 986 | /* |
| 962 | * Probe for an expansion card. | 987 | * Probe for an expansion card. |
| 963 | * | 988 | * |
| @@ -1133,6 +1158,14 @@ static int ecard_drv_remove(struct device *dev) | |||
| 1133 | drv->remove(ec); | 1158 | drv->remove(ec); |
| 1134 | ecard_release(ec); | 1159 | ecard_release(ec); |
| 1135 | 1160 | ||
| 1161 | /* | ||
| 1162 | * Restore the default operations. We ensure that the | ||
| 1163 | * ops are set before we change the data. | ||
| 1164 | */ | ||
| 1165 | ec->ops = &ecard_default_ops; | ||
| 1166 | barrier(); | ||
| 1167 | ec->irq_data = NULL; | ||
| 1168 | |||
| 1136 | return 0; | 1169 | return 0; |
| 1137 | } | 1170 | } |
| 1138 | 1171 | ||
diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c index 77ef35efaa8d..398d0c0511eb 100644 --- a/arch/arm/kernel/stacktrace.c +++ b/arch/arm/kernel/stacktrace.c | |||
| @@ -52,21 +52,15 @@ static int save_trace(struct stackframe *frame, void *d) | |||
| 52 | return trace->nr_entries >= trace->max_entries; | 52 | return trace->nr_entries >= trace->max_entries; |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | void save_stack_trace(struct stack_trace *trace, struct task_struct *task) | 55 | void save_stack_trace(struct stack_trace *trace) |
| 56 | { | 56 | { |
| 57 | struct stack_trace_data data; | 57 | struct stack_trace_data data; |
| 58 | unsigned long fp, base; | 58 | unsigned long fp, base; |
| 59 | 59 | ||
| 60 | data.trace = trace; | 60 | data.trace = trace; |
| 61 | data.skip = trace->skip; | 61 | data.skip = trace->skip; |
| 62 | 62 | base = (unsigned long)task_stack_page(current); | |
| 63 | if (task) { | 63 | asm("mov %0, fp" : "=r" (fp)); |
| 64 | base = (unsigned long)task_stack_page(task); | ||
| 65 | fp = 0; /* FIXME */ | ||
| 66 | } else { | ||
| 67 | base = (unsigned long)task_stack_page(current); | ||
| 68 | asm("mov %0, fp" : "=r" (fp)); | ||
| 69 | } | ||
| 70 | 64 | ||
| 71 | walk_stackframe(fp, base, base + THREAD_SIZE, save_trace, &data); | 65 | walk_stackframe(fp, base, base + THREAD_SIZE, save_trace, &data); |
| 72 | } | 66 | } |
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index d0540e4eaf5b..1533d3ecd7a0 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
| @@ -512,7 +512,7 @@ void __init time_init(void) | |||
| 512 | 512 | ||
| 513 | #ifdef CONFIG_NO_IDLE_HZ | 513 | #ifdef CONFIG_NO_IDLE_HZ |
| 514 | if (system_timer->dyn_tick) | 514 | if (system_timer->dyn_tick) |
| 515 | system_timer->dyn_tick->lock = SPIN_LOCK_UNLOCKED; | 515 | spin_lock_init(&system_timer->dyn_tick->lock); |
| 516 | #endif | 516 | #endif |
| 517 | } | 517 | } |
| 518 | 518 | ||
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index 018d637f87fc..a31157f1655a 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig | |||
| @@ -17,6 +17,9 @@ config ARCH_AT91SAM9261 | |||
| 17 | config ARCH_AT91SAM9263 | 17 | config ARCH_AT91SAM9263 |
| 18 | bool "AT91SAM9263" | 18 | bool "AT91SAM9263" |
| 19 | 19 | ||
| 20 | config ARCH_AT91SAM9RL | ||
| 21 | bool "AT91SAM9RL" | ||
| 22 | |||
| 20 | endchoice | 23 | endchoice |
| 21 | 24 | ||
| 22 | # ---------------------------------------------------------- | 25 | # ---------------------------------------------------------- |
| @@ -152,6 +155,20 @@ endif | |||
| 152 | 155 | ||
| 153 | # ---------------------------------------------------------- | 156 | # ---------------------------------------------------------- |
| 154 | 157 | ||
| 158 | if ARCH_AT91SAM9RL | ||
| 159 | |||
| 160 | comment "AT91SAM9RL Board Type" | ||
| 161 | |||
| 162 | config MACH_AT91SAM9RLEK | ||
| 163 | bool "Atmel AT91SAM9RL-EK Evaluation Kit" | ||
| 164 | depends on ARCH_AT91SAM9RL | ||
| 165 | help | ||
| 166 | Select this if you are using Atmel's AT91SAM9RL-EK Evaluation Kit. | ||
| 167 | |||
| 168 | endif | ||
| 169 | |||
| 170 | # ---------------------------------------------------------- | ||
| 171 | |||
| 155 | comment "AT91 Board Options" | 172 | comment "AT91 Board Options" |
| 156 | 173 | ||
| 157 | config MTD_AT91_DATAFLASH_CARD | 174 | config MTD_AT91_DATAFLASH_CARD |
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile index a412ae18a421..a4d80eb056ee 100644 --- a/arch/arm/mach-at91/Makefile +++ b/arch/arm/mach-at91/Makefile | |||
| @@ -14,6 +14,7 @@ obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o at91rm9200_devic | |||
| 14 | obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o | 14 | obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o |
| 15 | obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o | 15 | obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o |
| 16 | obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o | 16 | obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o |
| 17 | obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o | ||
| 17 | 18 | ||
| 18 | # AT91RM9200 board-specific support | 19 | # AT91RM9200 board-specific support |
| 19 | obj-$(CONFIG_MACH_ONEARM) += board-1arm.o | 20 | obj-$(CONFIG_MACH_ONEARM) += board-1arm.o |
| @@ -36,9 +37,13 @@ obj-$(CONFIG_MACH_AT91SAM9261EK) += board-sam9261ek.o | |||
| 36 | # AT91SAM9263 board-specific support | 37 | # AT91SAM9263 board-specific support |
| 37 | obj-$(CONFIG_MACH_AT91SAM9263EK) += board-sam9263ek.o | 38 | obj-$(CONFIG_MACH_AT91SAM9263EK) += board-sam9263ek.o |
| 38 | 39 | ||
| 40 | # AT91SAM9RL board-specific support | ||
| 41 | obj-$(CONFIG_MACH_AT91SAM9RLEK) += board-sam9rlek.o | ||
| 42 | |||
| 39 | # LEDs support | 43 | # LEDs support |
| 40 | led-$(CONFIG_ARCH_AT91RM9200DK) += leds.o | 44 | led-$(CONFIG_ARCH_AT91RM9200DK) += leds.o |
| 41 | led-$(CONFIG_MACH_AT91RM9200EK) += leds.o | 45 | led-$(CONFIG_MACH_AT91RM9200EK) += leds.o |
| 46 | led-$(CONFIG_MACH_AT91SAM9261EK)+= leds.o | ||
| 42 | led-$(CONFIG_MACH_CSB337) += leds.o | 47 | led-$(CONFIG_MACH_CSB337) += leds.o |
| 43 | led-$(CONFIG_MACH_CSB637) += leds.o | 48 | led-$(CONFIG_MACH_CSB637) += leds.o |
| 44 | led-$(CONFIG_MACH_KB9200) += leds.o | 49 | led-$(CONFIG_MACH_KB9200) += leds.o |
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index 2624a4f22d61..70599bcf451c 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c | |||
| @@ -22,9 +22,6 @@ | |||
| 22 | 22 | ||
| 23 | #include "generic.h" | 23 | #include "generic.h" |
| 24 | 24 | ||
| 25 | #define SZ_512 0x00000200 | ||
| 26 | #define SZ_256 0x00000100 | ||
| 27 | #define SZ_16 0x00000010 | ||
| 28 | 25 | ||
| 29 | /* -------------------------------------------------------------------- | 26 | /* -------------------------------------------------------------------- |
| 30 | * USB Host | 27 | * USB Host |
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index 40586e22cd38..ffd3154c1e54 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c | |||
| @@ -22,9 +22,6 @@ | |||
| 22 | 22 | ||
| 23 | #include "generic.h" | 23 | #include "generic.h" |
| 24 | 24 | ||
| 25 | #define SZ_512 0x00000200 | ||
| 26 | #define SZ_256 0x00000100 | ||
| 27 | #define SZ_16 0x00000010 | ||
| 28 | 25 | ||
| 29 | /* -------------------------------------------------------------------- | 26 | /* -------------------------------------------------------------------- |
| 30 | * USB Host | 27 | * USB Host |
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 8e781997716a..9db58da04754 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c | |||
| @@ -23,9 +23,6 @@ | |||
| 23 | 23 | ||
| 24 | #include "generic.h" | 24 | #include "generic.h" |
| 25 | 25 | ||
| 26 | #define SZ_512 0x00000200 | ||
| 27 | #define SZ_256 0x00000100 | ||
| 28 | #define SZ_16 0x00000010 | ||
| 29 | 26 | ||
| 30 | /* -------------------------------------------------------------------- | 27 | /* -------------------------------------------------------------------- |
| 31 | * USB Host | 28 | * USB Host |
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index 2b2e18a67128..635695787f91 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c | |||
| @@ -22,9 +22,6 @@ | |||
| 22 | 22 | ||
| 23 | #include "generic.h" | 23 | #include "generic.h" |
| 24 | 24 | ||
| 25 | #define SZ_512 0x00000200 | ||
| 26 | #define SZ_256 0x00000100 | ||
| 27 | #define SZ_16 0x00000010 | ||
| 28 | 25 | ||
| 29 | /* -------------------------------------------------------------------- | 26 | /* -------------------------------------------------------------------- |
| 30 | * USB Host | 27 | * USB Host |
diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c new file mode 100644 index 000000000000..4813a35f6cf5 --- /dev/null +++ b/arch/arm/mach-at91/at91sam9rl.c | |||
| @@ -0,0 +1,341 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-at91/at91sam9rl.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2005 SAN People | ||
| 5 | * Copyright (C) 2007 Atmel Corporation | ||
| 6 | * | ||
| 7 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 8 | * License. See the file COPYING in the main directory of this archive for | ||
| 9 | * more details. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include <linux/module.h> | ||
| 13 | |||
| 14 | #include <asm/mach/arch.h> | ||
| 15 | #include <asm/mach/map.h> | ||
| 16 | #include <asm/arch/cpu.h> | ||
| 17 | #include <asm/arch/at91sam9rl.h> | ||
| 18 | #include <asm/arch/at91_pmc.h> | ||
| 19 | #include <asm/arch/at91_rstc.h> | ||
| 20 | |||
| 21 | #include "generic.h" | ||
| 22 | #include "clock.h" | ||
| 23 | |||
| 24 | static struct map_desc at91sam9rl_io_desc[] __initdata = { | ||
| 25 | { | ||
| 26 | .virtual = AT91_VA_BASE_SYS, | ||
| 27 | .pfn = __phys_to_pfn(AT91_BASE_SYS), | ||
| 28 | .length = SZ_16K, | ||
| 29 | .type = MT_DEVICE, | ||
| 30 | }, | ||
| 31 | }; | ||
| 32 | |||
| 33 | static struct map_desc at91sam9rl_sram_desc[] __initdata = { | ||
| 34 | { | ||
| 35 | .pfn = __phys_to_pfn(AT91SAM9RL_SRAM_BASE), | ||
| 36 | .type = MT_DEVICE, | ||
| 37 | } | ||
| 38 | }; | ||
| 39 | |||
| 40 | /* -------------------------------------------------------------------- | ||
| 41 | * Clocks | ||
| 42 | * -------------------------------------------------------------------- */ | ||
| 43 | |||
| 44 | /* | ||
| 45 | * The peripheral clocks. | ||
| 46 | */ | ||
| 47 | static struct clk pioA_clk = { | ||
| 48 | .name = "pioA_clk", | ||
| 49 | .pmc_mask = 1 << AT91SAM9RL_ID_PIOA, | ||
| 50 | .type = CLK_TYPE_PERIPHERAL, | ||
| 51 | }; | ||
| 52 | static struct clk pioB_clk = { | ||
| 53 | .name = "pioB_clk", | ||
| 54 | .pmc_mask = 1 << AT91SAM9RL_ID_PIOB, | ||
| 55 | .type = CLK_TYPE_PERIPHERAL, | ||
| 56 | }; | ||
| 57 | static struct clk pioC_clk = { | ||
| 58 | .name = "pioC_clk", | ||
| 59 | .pmc_mask = 1 << AT91SAM9RL_ID_PIOC, | ||
| 60 | .type = CLK_TYPE_PERIPHERAL, | ||
| 61 | }; | ||
| 62 | static struct clk pioD_clk = { | ||
| 63 | .name = "pioD_clk", | ||
| 64 | .pmc_mask = 1 << AT91SAM9RL_ID_PIOD, | ||
| 65 | .type = CLK_TYPE_PERIPHERAL, | ||
| 66 | }; | ||
| 67 | static struct clk usart0_clk = { | ||
| 68 | .name = "usart0_clk", | ||
| 69 | .pmc_mask = 1 << AT91SAM9RL_ID_US0, | ||
| 70 | .type = CLK_TYPE_PERIPHERAL, | ||
| 71 | }; | ||
| 72 | static struct clk usart1_clk = { | ||
| 73 | .name = "usart1_clk", | ||
| 74 | .pmc_mask = 1 << AT91SAM9RL_ID_US1, | ||
| 75 | .type = CLK_TYPE_PERIPHERAL, | ||
| 76 | }; | ||
| 77 | static struct clk usart2_clk = { | ||
| 78 | .name = "usart2_clk", | ||
| 79 | .pmc_mask = 1 << AT91SAM9RL_ID_US2, | ||
| 80 | .type = CLK_TYPE_PERIPHERAL, | ||
| 81 | }; | ||
| 82 | static struct clk usart3_clk = { | ||
| 83 | .name = "usart3_clk", | ||
| 84 | .pmc_mask = 1 << AT91SAM9RL_ID_US3, | ||
| 85 | .type = CLK_TYPE_PERIPHERAL, | ||
| 86 | }; | ||
| 87 | static struct clk mmc_clk = { | ||
| 88 | .name = "mci_clk", | ||
| 89 | .pmc_mask = 1 << AT91SAM9RL_ID_MCI, | ||
| 90 | .type = CLK_TYPE_PERIPHERAL, | ||
| 91 | }; | ||
| 92 | static struct clk twi0_clk = { | ||
| 93 | .name = "twi0_clk", | ||
| 94 | .pmc_mask = 1 << AT91SAM9RL_ID_TWI0, | ||
| 95 | .type = CLK_TYPE_PERIPHERAL, | ||
| 96 | }; | ||
| 97 | static struct clk twi1_clk = { | ||
| 98 | .name = "twi1_clk", | ||
| 99 | .pmc_mask = 1 << AT91SAM9RL_ID_TWI1, | ||
| 100 | .type = CLK_TYPE_PERIPHERAL, | ||
| 101 | }; | ||
| 102 | static struct clk spi_clk = { | ||
| 103 | .name = "spi_clk", | ||
| 104 | .pmc_mask = 1 << AT91SAM9RL_ID_SPI, | ||
| 105 | .type = CLK_TYPE_PERIPHERAL, | ||
| 106 | }; | ||
| 107 | static struct clk ssc0_clk = { | ||
| 108 | .name = "ssc0_clk", | ||
| 109 | .pmc_mask = 1 << AT91SAM9RL_ID_SSC0, | ||
| 110 | .type = CLK_TYPE_PERIPHERAL, | ||
| 111 | }; | ||
| 112 | static struct clk ssc1_clk = { | ||
| 113 | .name = "ssc1_clk", | ||
| 114 | .pmc_mask = 1 << AT91SAM9RL_ID_SSC1, | ||
| 115 | .type = CLK_TYPE_PERIPHERAL, | ||
| 116 | }; | ||
| 117 | static struct clk tc0_clk = { | ||
| 118 | .name = "tc0_clk", | ||
| 119 | .pmc_mask = 1 << AT91SAM9RL_ID_TC0, | ||
| 120 | .type = CLK_TYPE_PERIPHERAL, | ||
| 121 | }; | ||
| 122 | static struct clk tc1_clk = { | ||
| 123 | .name = "tc1_clk", | ||
| 124 | .pmc_mask = 1 << AT91SAM9RL_ID_TC1, | ||
| 125 | .type = CLK_TYPE_PERIPHERAL, | ||
| 126 | }; | ||
| 127 | static struct clk tc2_clk = { | ||
| 128 | .name = "tc2_clk", | ||
| 129 | .pmc_mask = 1 << AT91SAM9RL_ID_TC2, | ||
| 130 | .type = CLK_TYPE_PERIPHERAL, | ||
| 131 | }; | ||
| 132 | static struct clk pwmc_clk = { | ||
| 133 | .name = "pwmc_clk", | ||
| 134 | .pmc_mask = 1 << AT91SAM9RL_ID_PWMC, | ||
| 135 | .type = CLK_TYPE_PERIPHERAL, | ||
| 136 | }; | ||
| 137 | static struct clk tsc_clk = { | ||
| 138 | .name = "tsc_clk", | ||
| 139 | .pmc_mask = 1 << AT91SAM9RL_ID_TSC, | ||
| 140 | .type = CLK_TYPE_PERIPHERAL, | ||
| 141 | }; | ||
| 142 | static struct clk dma_clk = { | ||
| 143 | .name = "dma_clk", | ||
| 144 | .pmc_mask = 1 << AT91SAM9RL_ID_DMA, | ||
| 145 | .type = CLK_TYPE_PERIPHERAL, | ||
| 146 | }; | ||
| 147 | static struct clk udphs_clk = { | ||
| 148 | .name = "udphs_clk", | ||
| 149 | .pmc_mask = 1 << AT91SAM9RL_ID_UDPHS, | ||
| 150 | .type = CLK_TYPE_PERIPHERAL, | ||
| 151 | }; | ||
| 152 | static struct clk lcdc_clk = { | ||
| 153 | .name = "lcdc_clk", | ||
| 154 | .pmc_mask = 1 << AT91SAM9RL_ID_LCDC, | ||
| 155 | .type = CLK_TYPE_PERIPHERAL, | ||
| 156 | }; | ||
| 157 | static struct clk ac97_clk = { | ||
| 158 | .name = "ac97_clk", | ||
| 159 | .pmc_mask = 1 << AT91SAM9RL_ID_AC97C, | ||
| 160 | .type = CLK_TYPE_PERIPHERAL, | ||
| 161 | }; | ||
| 162 | |||
| 163 | static struct clk *periph_clocks[] __initdata = { | ||
| 164 | &pioA_clk, | ||
| 165 | &pioB_clk, | ||
| 166 | &pioC_clk, | ||
| 167 | &pioD_clk, | ||
| 168 | &usart0_clk, | ||
| 169 | &usart1_clk, | ||
| 170 | &usart2_clk, | ||
| 171 | &usart3_clk, | ||
| 172 | &mmc_clk, | ||
| 173 | &twi0_clk, | ||
| 174 | &twi1_clk, | ||
| 175 | &spi_clk, | ||
| 176 | &ssc0_clk, | ||
| 177 | &ssc1_clk, | ||
| 178 | &tc0_clk, | ||
| 179 | &tc1_clk, | ||
| 180 | &tc2_clk, | ||
| 181 | &pwmc_clk, | ||
| 182 | &tsc_clk, | ||
| 183 | &dma_clk, | ||
| 184 | &udphs_clk, | ||
| 185 | &lcdc_clk, | ||
| 186 | &ac97_clk, | ||
| 187 | // irq0 | ||
| 188 | }; | ||
| 189 | |||
| 190 | /* | ||
| 191 | * The two programmable clocks. | ||
| 192 | * You must configure pin multiplexing to bring these signals out. | ||
| 193 | */ | ||
| 194 | static struct clk pck0 = { | ||
| 195 | .name = "pck0", | ||
| 196 | .pmc_mask = AT91_PMC_PCK0, | ||
| 197 | .type = CLK_TYPE_PROGRAMMABLE, | ||
| 198 | .id = 0, | ||
| 199 | }; | ||
| 200 | static struct clk pck1 = { | ||
| 201 | .name = "pck1", | ||
| 202 | .pmc_mask = AT91_PMC_PCK1, | ||
| 203 | .type = CLK_TYPE_PROGRAMMABLE, | ||
| 204 | .id = 1, | ||
| 205 | }; | ||
| 206 | |||
| 207 | static void __init at91sam9rl_register_clocks(void) | ||
| 208 | { | ||
| 209 | int i; | ||
| 210 | |||
| 211 | for (i = 0; i < ARRAY_SIZE(periph_clocks); i++) | ||
| 212 | clk_register(periph_clocks[i]); | ||
| 213 | |||
| 214 | clk_register(&pck0); | ||
| 215 | clk_register(&pck1); | ||
| 216 | } | ||
| 217 | |||
| 218 | /* -------------------------------------------------------------------- | ||
| 219 | * GPIO | ||
| 220 | * -------------------------------------------------------------------- */ | ||
| 221 | |||
| 222 | static struct at91_gpio_bank at91sam9rl_gpio[] = { | ||
| 223 | { | ||
| 224 | .id = AT91SAM9RL_ID_PIOA, | ||
| 225 | .offset = AT91_PIOA, | ||
| 226 | .clock = &pioA_clk, | ||
| 227 | }, { | ||
| 228 | .id = AT91SAM9RL_ID_PIOB, | ||
| 229 | .offset = AT91_PIOB, | ||
| 230 | .clock = &pioB_clk, | ||
| 231 | }, { | ||
| 232 | .id = AT91SAM9RL_ID_PIOC, | ||
| 233 | .offset = AT91_PIOC, | ||
| 234 | .clock = &pioC_clk, | ||
| 235 | }, { | ||
| 236 | .id = AT91SAM9RL_ID_PIOD, | ||
| 237 | .offset = AT91_PIOD, | ||
| 238 | .clock = &pioD_clk, | ||
| 239 | } | ||
| 240 | }; | ||
| 241 | |||
| 242 | static void at91sam9rl_reset(void) | ||
| 243 | { | ||
| 244 | at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST); | ||
| 245 | } | ||
| 246 | |||
| 247 | |||
| 248 | /* -------------------------------------------------------------------- | ||
| 249 | * AT91SAM9RL processor initialization | ||
| 250 | * -------------------------------------------------------------------- */ | ||
| 251 | |||
| 252 | void __init at91sam9rl_initialize(unsigned long main_clock) | ||
| 253 | { | ||
| 254 | unsigned long cidr, sram_size; | ||
| 255 | |||
| 256 | /* Map peripherals */ | ||
| 257 | iotable_init(at91sam9rl_io_desc, ARRAY_SIZE(at91sam9rl_io_desc)); | ||
| 258 | |||
| 259 | cidr = at91_sys_read(AT91_DBGU_CIDR); | ||
| 260 | |||
| 261 | switch (cidr & AT91_CIDR_SRAMSIZ) { | ||
| 262 | case AT91_CIDR_SRAMSIZ_32K: | ||
| 263 | sram_size = 2 * SZ_16K; | ||
| 264 | break; | ||
| 265 | case AT91_CIDR_SRAMSIZ_16K: | ||
| 266 | default: | ||
| 267 | sram_size = SZ_16K; | ||
| 268 | } | ||
| 269 | |||
| 270 | at91sam9rl_sram_desc->virtual = AT91_IO_VIRT_BASE - sram_size; | ||
| 271 | at91sam9rl_sram_desc->length = sram_size; | ||
| 272 | |||
| 273 | /* Map SRAM */ | ||
| 274 | iotable_init(at91sam9rl_sram_desc, ARRAY_SIZE(at91sam9rl_sram_desc)); | ||
| 275 | |||
| 276 | at91_arch_reset = at91sam9rl_reset; | ||
| 277 | at91_extern_irq = (1 << AT91SAM9RL_ID_IRQ0); | ||
| 278 | |||
| 279 | /* Init clock subsystem */ | ||
| 280 | at91_clock_init(main_clock); | ||
| 281 | |||
| 282 | /* Register the processor-specific clocks */ | ||
| 283 | at91sam9rl_register_clocks(); | ||
| 284 | |||
| 285 | /* Register GPIO subsystem */ | ||
| 286 | at91_gpio_init(at91sam9rl_gpio, 4); | ||
| 287 | } | ||
| 288 | |||
| 289 | /* -------------------------------------------------------------------- | ||
| 290 | * Interrupt initialization | ||
| 291 | * -------------------------------------------------------------------- */ | ||
| 292 | |||
| 293 | /* | ||
| 294 | * The default interrupt priority levels (0 = lowest, 7 = highest). | ||
| 295 | */ | ||
| 296 | static unsigned int at91sam9rl_default_irq_priority[NR_AIC_IRQS] __initdata = { | ||
| 297 | 7, /* Advanced Interrupt Controller */ | ||
| 298 | 7, /* System Peripherals */ | ||
| 299 | 1, /* Parallel IO Controller A */ | ||
| 300 | 1, /* Parallel IO Controller B */ | ||
| 301 | 1, /* Parallel IO Controller C */ | ||
| 302 | 1, /* Parallel IO Controller D */ | ||
| 303 | 5, /* USART 0 */ | ||
| 304 | 5, /* USART 1 */ | ||
| 305 | 5, /* USART 2 */ | ||
| 306 | 5, /* USART 3 */ | ||
| 307 | 0, /* Multimedia Card Interface */ | ||
| 308 | 6, /* Two-Wire Interface 0 */ | ||
| 309 | 6, /* Two-Wire Interface 1 */ | ||
| 310 | 5, /* Serial Peripheral Interface */ | ||
| 311 | 4, /* Serial Synchronous Controller 0 */ | ||
| 312 | 4, /* Serial Synchronous Controller 1 */ | ||
| 313 | 0, /* Timer Counter 0 */ | ||
| 314 | 0, /* Timer Counter 1 */ | ||
| 315 | 0, /* Timer Counter 2 */ | ||
| 316 | 0, | ||
| 317 | 0, /* Touch Screen Controller */ | ||
| 318 | 0, /* DMA Controller */ | ||
| 319 | 2, /* USB Device High speed port */ | ||
| 320 | 2, /* LCD Controller */ | ||
| 321 | 6, /* AC97 Controller */ | ||
| 322 | 0, | ||
| 323 | 0, | ||
| 324 | 0, | ||
| 325 | 0, | ||
| 326 | 0, | ||
| 327 | 0, | ||
| 328 | 0, /* Advanced Interrupt Controller */ | ||
| 329 | }; | ||
| 330 | |||
| 331 | void __init at91sam9rl_init_interrupts(unsigned int priority[NR_AIC_IRQS]) | ||
| 332 | { | ||
| 333 | if (!priority) | ||
| 334 | priority = at91sam9rl_default_irq_priority; | ||
| 335 | |||
| 336 | /* Initialize the AIC interrupt controller */ | ||
| 337 | at91_aic_init(priority); | ||
| 338 | |||
| 339 | /* Enable GPIO interrupts */ | ||
| 340 | at91_gpio_irq_setup(); | ||
| 341 | } | ||
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c new file mode 100644 index 000000000000..cd7532bcd4e5 --- /dev/null +++ b/arch/arm/mach-at91/at91sam9rl_devices.c | |||
| @@ -0,0 +1,630 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2007 Atmel Corporation | ||
| 3 | * | ||
| 4 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 5 | * License. See the file COPYING in the main directory of this archive for | ||
| 6 | * more details. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #include <asm/mach/arch.h> | ||
| 10 | #include <asm/mach/map.h> | ||
| 11 | |||
| 12 | #include <linux/platform_device.h> | ||
| 13 | #include <linux/fb.h> | ||
| 14 | |||
| 15 | #include <video/atmel_lcdc.h> | ||
| 16 | |||
| 17 | #include <asm/arch/board.h> | ||
| 18 | #include <asm/arch/gpio.h> | ||
| 19 | #include <asm/arch/at91sam9rl.h> | ||
| 20 | #include <asm/arch/at91sam9rl_matrix.h> | ||
| 21 | #include <asm/arch/at91sam926x_mc.h> | ||
| 22 | |||
| 23 | #include "generic.h" | ||
| 24 | |||
| 25 | |||
| 26 | /* -------------------------------------------------------------------- | ||
| 27 | * MMC / SD | ||
| 28 | * -------------------------------------------------------------------- */ | ||
| 29 | |||
| 30 | #if defined(CONFIG_MMC_AT91) || defined(CONFIG_MMC_AT91_MODULE) | ||
| 31 | static u64 mmc_dmamask = 0xffffffffUL; | ||
| 32 | static struct at91_mmc_data mmc_data; | ||
| 33 | |||
| 34 | static struct resource mmc_resources[] = { | ||
| 35 | [0] = { | ||
| 36 | .start = AT91SAM9RL_BASE_MCI, | ||
| 37 | .end = AT91SAM9RL_BASE_MCI + SZ_16K - 1, | ||
| 38 | .flags = IORESOURCE_MEM, | ||
| 39 | }, | ||
| 40 | [1] = { | ||
| 41 | .start = AT91SAM9RL_ID_MCI, | ||
| 42 | .end = AT91SAM9RL_ID_MCI, | ||
| 43 | .flags = IORESOURCE_IRQ, | ||
| 44 | }, | ||
| 45 | }; | ||
| 46 | |||
| 47 | static struct platform_device at91sam9rl_mmc_device = { | ||
| 48 | .name = "at91_mci", | ||
| 49 | .id = -1, | ||
| 50 | .dev = { | ||
| 51 | .dma_mask = &mmc_dmamask, | ||
| 52 | .coherent_dma_mask = 0xffffffff, | ||
| 53 | .platform_data = &mmc_data, | ||
| 54 | }, | ||
| 55 | .resource = mmc_resources, | ||
| 56 | .num_resources = ARRAY_SIZE(mmc_resources), | ||
| 57 | }; | ||
| 58 | |||
| 59 | void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) | ||
| 60 | { | ||
| 61 | if (!data) | ||
| 62 | return; | ||
| 63 | |||
| 64 | /* input/irq */ | ||
| 65 | if (data->det_pin) { | ||
| 66 | at91_set_gpio_input(data->det_pin, 1); | ||
| 67 | at91_set_deglitch(data->det_pin, 1); | ||
| 68 | } | ||
| 69 | if (data->wp_pin) | ||
| 70 | at91_set_gpio_input(data->wp_pin, 1); | ||
| 71 | if (data->vcc_pin) | ||
| 72 | at91_set_gpio_output(data->vcc_pin, 0); | ||
| 73 | |||
| 74 | /* CLK */ | ||
| 75 | at91_set_A_periph(AT91_PIN_PA2, 0); | ||
| 76 | |||
| 77 | /* CMD */ | ||
| 78 | at91_set_A_periph(AT91_PIN_PA1, 1); | ||
| 79 | |||
| 80 | /* DAT0, maybe DAT1..DAT3 */ | ||
| 81 | at91_set_A_periph(AT91_PIN_PA0, 1); | ||
| 82 | if (data->wire4) { | ||
| 83 | at91_set_A_periph(AT91_PIN_PA3, 1); | ||
| 84 | at91_set_A_periph(AT91_PIN_PA4, 1); | ||
| 85 | at91_set_A_periph(AT91_PIN_PA5, 1); | ||
| 86 | } | ||
| 87 | |||
| 88 | mmc_data = *data; | ||
| 89 | platform_device_register(&at91sam9rl_mmc_device); | ||
| 90 | } | ||
| 91 | #else | ||
| 92 | void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {} | ||
| 93 | #endif | ||
| 94 | |||
| 95 | |||
| 96 | /* -------------------------------------------------------------------- | ||
| 97 | * NAND / SmartMedia | ||
| 98 | * -------------------------------------------------------------------- */ | ||
| 99 | |||
| 100 | #if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE) | ||
| 101 | static struct at91_nand_data nand_data; | ||
| 102 | |||
| 103 | #define NAND_BASE AT91_CHIPSELECT_3 | ||
| 104 | |||
| 105 | static struct resource nand_resources[] = { | ||
| 106 | { | ||
| 107 | .start = NAND_BASE, | ||
| 108 | .end = NAND_BASE + SZ_256M - 1, | ||
| 109 | .flags = IORESOURCE_MEM, | ||
| 110 | } | ||
| 111 | }; | ||
| 112 | |||
| 113 | static struct platform_device at91_nand_device = { | ||
| 114 | .name = "at91_nand", | ||
| 115 | .id = -1, | ||
| 116 | .dev = { | ||
| 117 | .platform_data = &nand_data, | ||
| 118 | }, | ||
| 119 | .resource = nand_resources, | ||
| 120 | .num_resources = ARRAY_SIZE(nand_resources), | ||
| 121 | }; | ||
| 122 | |||
| 123 | void __init at91_add_device_nand(struct at91_nand_data *data) | ||
| 124 | { | ||
| 125 | unsigned long csa; | ||
| 126 | |||
| 127 | if (!data) | ||
| 128 | return; | ||
| 129 | |||
| 130 | csa = at91_sys_read(AT91_MATRIX_EBICSA); | ||
| 131 | at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); | ||
| 132 | |||
| 133 | /* set the bus interface characteristics */ | ||
| 134 | at91_sys_write(AT91_SMC_SETUP(3), AT91_SMC_NWESETUP_(0) | AT91_SMC_NCS_WRSETUP_(0) | ||
| 135 | | AT91_SMC_NRDSETUP_(0) | AT91_SMC_NCS_RDSETUP_(0)); | ||
| 136 | |||
| 137 | at91_sys_write(AT91_SMC_PULSE(3), AT91_SMC_NWEPULSE_(2) | AT91_SMC_NCS_WRPULSE_(5) | ||
| 138 | | AT91_SMC_NRDPULSE_(2) | AT91_SMC_NCS_RDPULSE_(5)); | ||
| 139 | |||
| 140 | at91_sys_write(AT91_SMC_CYCLE(3), AT91_SMC_NWECYCLE_(7) | AT91_SMC_NRDCYCLE_(7)); | ||
| 141 | |||
| 142 | at91_sys_write(AT91_SMC_MODE(3), AT91_SMC_DBW_8 | AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_TDF_(1)); | ||
| 143 | |||
| 144 | /* enable pin */ | ||
| 145 | if (data->enable_pin) | ||
| 146 | at91_set_gpio_output(data->enable_pin, 1); | ||
| 147 | |||
| 148 | /* ready/busy pin */ | ||
| 149 | if (data->rdy_pin) | ||
| 150 | at91_set_gpio_input(data->rdy_pin, 1); | ||
| 151 | |||
| 152 | /* card detect pin */ | ||
| 153 | if (data->det_pin) | ||
| 154 | at91_set_gpio_input(data->det_pin, 1); | ||
| 155 | |||
| 156 | at91_set_A_periph(AT91_PIN_PB4, 0); /* NANDOE */ | ||
| 157 | at91_set_A_periph(AT91_PIN_PB5, 0); /* NANDWE */ | ||
| 158 | |||
| 159 | nand_data = *data; | ||
| 160 | platform_device_register(&at91_nand_device); | ||
| 161 | } | ||
| 162 | |||
| 163 | #else | ||
| 164 | void __init at91_add_device_nand(struct at91_nand_data *data) {} | ||
| 165 | #endif | ||
| 166 | |||
| 167 | |||
| 168 | /* -------------------------------------------------------------------- | ||
| 169 | * TWI (i2c) | ||
| 170 | * -------------------------------------------------------------------- */ | ||
| 171 | |||
| 172 | #if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | ||
| 173 | |||
| 174 | static struct resource twi_resources[] = { | ||
| 175 | [0] = { | ||
| 176 | .start = AT91SAM9RL_BASE_TWI0, | ||
| 177 | .end = AT91SAM9RL_BASE_TWI0 + SZ_16K - 1, | ||
| 178 | .flags = IORESOURCE_MEM, | ||
| 179 | }, | ||
| 180 | [1] = { | ||
| 181 | .start = AT91SAM9RL_ID_TWI0, | ||
| 182 | .end = AT91SAM9RL_ID_TWI0, | ||
| 183 | .flags = IORESOURCE_IRQ, | ||
| 184 | }, | ||
| 185 | }; | ||
| 186 | |||
| 187 | static struct platform_device at91sam9rl_twi_device = { | ||
| 188 | .name = "at91_i2c", | ||
| 189 | .id = -1, | ||
| 190 | .resource = twi_resources, | ||
| 191 | .num_resources = ARRAY_SIZE(twi_resources), | ||
| 192 | }; | ||
| 193 | |||
| 194 | void __init at91_add_device_i2c(void) | ||
| 195 | { | ||
| 196 | /* pins used for TWI interface */ | ||
| 197 | at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */ | ||
| 198 | at91_set_multi_drive(AT91_PIN_PA23, 1); | ||
| 199 | |||
| 200 | at91_set_A_periph(AT91_PIN_PA24, 0); /* TWCK */ | ||
| 201 | at91_set_multi_drive(AT91_PIN_PA24, 1); | ||
| 202 | |||
| 203 | platform_device_register(&at91sam9rl_twi_device); | ||
| 204 | } | ||
| 205 | #else | ||
| 206 | void __init at91_add_device_i2c(void) {} | ||
| 207 | #endif | ||
| 208 | |||
| 209 | |||
| 210 | /* -------------------------------------------------------------------- | ||
| 211 | * SPI | ||
| 212 | * -------------------------------------------------------------------- */ | ||
| 213 | |||
| 214 | #if defined(CONFIG_SPI_ATMEL) || defined(CONFIG_SPI_ATMEL_MODULE) | ||
| 215 | static u64 spi_dmamask = 0xffffffffUL; | ||
| 216 | |||
| 217 | static struct resource spi_resources[] = { | ||
| 218 | [0] = { | ||
| 219 | .start = AT91SAM9RL_BASE_SPI, | ||
| 220 | .end = AT91SAM9RL_BASE_SPI + SZ_16K - 1, | ||
| 221 | .flags = IORESOURCE_MEM, | ||
| 222 | }, | ||
| 223 | [1] = { | ||
| 224 | .start = AT91SAM9RL_ID_SPI, | ||
| 225 | .end = AT91SAM9RL_ID_SPI, | ||
| 226 | .flags = IORESOURCE_IRQ, | ||
| 227 | }, | ||
| 228 | }; | ||
| 229 | |||
| 230 | static struct platform_device at91sam9rl_spi_device = { | ||
| 231 | .name = "atmel_spi", | ||
| 232 | .id = 0, | ||
| 233 | .dev = { | ||
| 234 | .dma_mask = &spi_dmamask, | ||
| 235 | .coherent_dma_mask = 0xffffffff, | ||
| 236 | }, | ||
| 237 | .resource = spi_resources, | ||
| 238 | .num_resources = ARRAY_SIZE(spi_resources), | ||
| 239 | }; | ||
| 240 | |||
| 241 | static const unsigned spi_standard_cs[4] = { AT91_PIN_PA28, AT91_PIN_PB7, AT91_PIN_PD8, AT91_PIN_PD9 }; | ||
| 242 | |||
| 243 | |||
| 244 | void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) | ||
| 245 | { | ||
| 246 | int i; | ||
| 247 | unsigned long cs_pin; | ||
| 248 | |||
| 249 | at91_set_A_periph(AT91_PIN_PA25, 0); /* MISO */ | ||
| 250 | at91_set_A_periph(AT91_PIN_PA26, 0); /* MOSI */ | ||
| 251 | at91_set_A_periph(AT91_PIN_PA27, 0); /* SPCK */ | ||
| 252 | |||
| 253 | /* Enable SPI chip-selects */ | ||
| 254 | for (i = 0; i < nr_devices; i++) { | ||
| 255 | if (devices[i].controller_data) | ||
| 256 | cs_pin = (unsigned long) devices[i].controller_data; | ||
| 257 | else | ||
| 258 | cs_pin = spi_standard_cs[devices[i].chip_select]; | ||
| 259 | |||
| 260 | /* enable chip-select pin */ | ||
| 261 | at91_set_gpio_output(cs_pin, 1); | ||
| 262 | |||
| 263 | /* pass chip-select pin to driver */ | ||
| 264 | devices[i].controller_data = (void *) cs_pin; | ||
| 265 | } | ||
| 266 | |||
| 267 | spi_register_board_info(devices, nr_devices); | ||
| 268 | platform_device_register(&at91sam9rl_spi_device); | ||
| 269 | } | ||
| 270 | #else | ||
| 271 | void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) {} | ||
| 272 | #endif | ||
| 273 | |||
| 274 | |||
| 275 | /* -------------------------------------------------------------------- | ||
| 276 | * LCD Controller | ||
| 277 | * -------------------------------------------------------------------- */ | ||
| 278 | |||
| 279 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | ||
| 280 | static u64 lcdc_dmamask = 0xffffffffUL; | ||
| 281 | static struct atmel_lcdfb_info lcdc_data; | ||
| 282 | |||
| 283 | static struct resource lcdc_resources[] = { | ||
| 284 | [0] = { | ||
| 285 | .start = AT91SAM9RL_LCDC_BASE, | ||
| 286 | .end = AT91SAM9RL_LCDC_BASE + SZ_4K - 1, | ||
| 287 | .flags = IORESOURCE_MEM, | ||
| 288 | }, | ||
| 289 | [1] = { | ||
| 290 | .start = AT91SAM9RL_ID_LCDC, | ||
| 291 | .end = AT91SAM9RL_ID_LCDC, | ||
| 292 | .flags = IORESOURCE_IRQ, | ||
| 293 | }, | ||
| 294 | #if defined(CONFIG_FB_INTSRAM) | ||
| 295 | [2] = { | ||
| 296 | .start = AT91SAM9RL_SRAM_BASE, | ||
| 297 | .end = AT91SAM9RL_SRAM_BASE + AT91SAM9RL_SRAM_SIZE - 1, | ||
| 298 | .flags = IORESOURCE_MEM, | ||
| 299 | }, | ||
| 300 | #endif | ||
| 301 | }; | ||
| 302 | |||
| 303 | static struct platform_device at91_lcdc_device = { | ||
| 304 | .name = "atmel_lcdfb", | ||
| 305 | .id = 0, | ||
| 306 | .dev = { | ||
| 307 | .dma_mask = &lcdc_dmamask, | ||
| 308 | .coherent_dma_mask = 0xffffffff, | ||
| 309 | .platform_data = &lcdc_data, | ||
| 310 | }, | ||
| 311 | .resource = lcdc_resources, | ||
| 312 | .num_resources = ARRAY_SIZE(lcdc_resources), | ||
| 313 | }; | ||
| 314 | |||
| 315 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | ||
| 316 | { | ||
| 317 | if (!data) { | ||
| 318 | return; | ||
| 319 | } | ||
| 320 | |||
| 321 | at91_set_B_periph(AT91_PIN_PC1, 0); /* LCDPWR */ | ||
| 322 | at91_set_A_periph(AT91_PIN_PC5, 0); /* LCDHSYNC */ | ||
| 323 | at91_set_A_periph(AT91_PIN_PC6, 0); /* LCDDOTCK */ | ||
| 324 | at91_set_A_periph(AT91_PIN_PC7, 0); /* LCDDEN */ | ||
| 325 | at91_set_A_periph(AT91_PIN_PC3, 0); /* LCDCC */ | ||
| 326 | at91_set_B_periph(AT91_PIN_PC9, 0); /* LCDD3 */ | ||
| 327 | at91_set_B_periph(AT91_PIN_PC10, 0); /* LCDD4 */ | ||
| 328 | at91_set_B_periph(AT91_PIN_PC11, 0); /* LCDD5 */ | ||
| 329 | at91_set_B_periph(AT91_PIN_PC12, 0); /* LCDD6 */ | ||
| 330 | at91_set_B_periph(AT91_PIN_PC13, 0); /* LCDD7 */ | ||
| 331 | at91_set_B_periph(AT91_PIN_PC15, 0); /* LCDD11 */ | ||
| 332 | at91_set_B_periph(AT91_PIN_PC16, 0); /* LCDD12 */ | ||
| 333 | at91_set_B_periph(AT91_PIN_PC17, 0); /* LCDD13 */ | ||
| 334 | at91_set_B_periph(AT91_PIN_PC18, 0); /* LCDD14 */ | ||
| 335 | at91_set_B_periph(AT91_PIN_PC19, 0); /* LCDD15 */ | ||
| 336 | at91_set_B_periph(AT91_PIN_PC20, 0); /* LCDD18 */ | ||
| 337 | at91_set_B_periph(AT91_PIN_PC21, 0); /* LCDD19 */ | ||
| 338 | at91_set_B_periph(AT91_PIN_PC22, 0); /* LCDD20 */ | ||
| 339 | at91_set_B_periph(AT91_PIN_PC23, 0); /* LCDD21 */ | ||
| 340 | at91_set_B_periph(AT91_PIN_PC24, 0); /* LCDD22 */ | ||
| 341 | at91_set_B_periph(AT91_PIN_PC25, 0); /* LCDD23 */ | ||
| 342 | |||
| 343 | lcdc_data = *data; | ||
| 344 | platform_device_register(&at91_lcdc_device); | ||
| 345 | } | ||
| 346 | #else | ||
| 347 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} | ||
| 348 | #endif | ||
| 349 | |||
| 350 | |||
| 351 | /* -------------------------------------------------------------------- | ||
| 352 | * LEDs | ||
| 353 | * -------------------------------------------------------------------- */ | ||
| 354 | |||
| 355 | #if defined(CONFIG_LEDS) | ||
| 356 | u8 at91_leds_cpu; | ||
| 357 | u8 at91_leds_timer; | ||
| 358 | |||
| 359 | void __init at91_init_leds(u8 cpu_led, u8 timer_led) | ||
| 360 | { | ||
| 361 | /* Enable GPIO to access the LEDs */ | ||
| 362 | at91_set_gpio_output(cpu_led, 1); | ||
| 363 | at91_set_gpio_output(timer_led, 1); | ||
| 364 | |||
| 365 | at91_leds_cpu = cpu_led; | ||
| 366 | at91_leds_timer = timer_led; | ||
| 367 | } | ||
| 368 | #else | ||
| 369 | void __init at91_init_leds(u8 cpu_led, u8 timer_led) {} | ||
| 370 | #endif | ||
| 371 | |||
| 372 | |||
| 373 | /* -------------------------------------------------------------------- | ||
| 374 | * UART | ||
| 375 | * -------------------------------------------------------------------- */ | ||
| 376 | |||
| 377 | #if defined(CONFIG_SERIAL_ATMEL) | ||
| 378 | static struct resource dbgu_resources[] = { | ||
| 379 | [0] = { | ||
| 380 | .start = AT91_VA_BASE_SYS + AT91_DBGU, | ||
| 381 | .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, | ||
| 382 | .flags = IORESOURCE_MEM, | ||
| 383 | }, | ||
| 384 | [1] = { | ||
| 385 | .start = AT91_ID_SYS, | ||
| 386 | .end = AT91_ID_SYS, | ||
| 387 | .flags = IORESOURCE_IRQ, | ||
| 388 | }, | ||
| 389 | }; | ||
| 390 | |||
| 391 | static struct atmel_uart_data dbgu_data = { | ||
| 392 | .use_dma_tx = 0, | ||
| 393 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ | ||
| 394 | .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), | ||
| 395 | }; | ||
| 396 | |||
| 397 | static struct platform_device at91sam9rl_dbgu_device = { | ||
| 398 | .name = "atmel_usart", | ||
| 399 | .id = 0, | ||
| 400 | .dev = { | ||
| 401 | .platform_data = &dbgu_data, | ||
| 402 | .coherent_dma_mask = 0xffffffff, | ||
| 403 | }, | ||
| 404 | .resource = dbgu_resources, | ||
| 405 | .num_resources = ARRAY_SIZE(dbgu_resources), | ||
| 406 | }; | ||
| 407 | |||
| 408 | static inline void configure_dbgu_pins(void) | ||
| 409 | { | ||
| 410 | at91_set_A_periph(AT91_PIN_PA21, 0); /* DRXD */ | ||
| 411 | at91_set_A_periph(AT91_PIN_PA22, 1); /* DTXD */ | ||
| 412 | } | ||
| 413 | |||
| 414 | static struct resource uart0_resources[] = { | ||
| 415 | [0] = { | ||
| 416 | .start = AT91SAM9RL_BASE_US0, | ||
| 417 | .end = AT91SAM9RL_BASE_US0 + SZ_16K - 1, | ||
| 418 | .flags = IORESOURCE_MEM, | ||
| 419 | }, | ||
| 420 | [1] = { | ||
| 421 | .start = AT91SAM9RL_ID_US0, | ||
| 422 | .end = AT91SAM9RL_ID_US0, | ||
| 423 | .flags = IORESOURCE_IRQ, | ||
| 424 | }, | ||
| 425 | }; | ||
| 426 | |||
| 427 | static struct atmel_uart_data uart0_data = { | ||
| 428 | .use_dma_tx = 1, | ||
| 429 | .use_dma_rx = 1, | ||
| 430 | }; | ||
| 431 | |||
| 432 | static struct platform_device at91sam9rl_uart0_device = { | ||
| 433 | .name = "atmel_usart", | ||
| 434 | .id = 1, | ||
| 435 | .dev = { | ||
| 436 | .platform_data = &uart0_data, | ||
| 437 | .coherent_dma_mask = 0xffffffff, | ||
| 438 | }, | ||
| 439 | .resource = uart0_resources, | ||
| 440 | .num_resources = ARRAY_SIZE(uart0_resources), | ||
| 441 | }; | ||
| 442 | |||
| 443 | static inline void configure_usart0_pins(void) | ||
| 444 | { | ||
| 445 | at91_set_A_periph(AT91_PIN_PA6, 1); /* TXD0 */ | ||
| 446 | at91_set_A_periph(AT91_PIN_PA7, 0); /* RXD0 */ | ||
| 447 | at91_set_A_periph(AT91_PIN_PA9, 0); /* RTS0 */ | ||
| 448 | at91_set_A_periph(AT91_PIN_PA10, 0); /* CTS0 */ | ||
| 449 | } | ||
| 450 | |||
| 451 | static struct resource uart1_resources[] = { | ||
| 452 | [0] = { | ||
| 453 | .start = AT91SAM9RL_BASE_US1, | ||
| 454 | .end = AT91SAM9RL_BASE_US1 + SZ_16K - 1, | ||
| 455 | .flags = IORESOURCE_MEM, | ||
| 456 | }, | ||
| 457 | [1] = { | ||
| 458 | .start = AT91SAM9RL_ID_US1, | ||
| 459 | .end = AT91SAM9RL_ID_US1, | ||
| 460 | .flags = IORESOURCE_IRQ, | ||
| 461 | }, | ||
| 462 | }; | ||
| 463 | |||
| 464 | static struct atmel_uart_data uart1_data = { | ||
| 465 | .use_dma_tx = 1, | ||
| 466 | .use_dma_rx = 1, | ||
| 467 | }; | ||
| 468 | |||
| 469 | static struct platform_device at91sam9rl_uart1_device = { | ||
| 470 | .name = "atmel_usart", | ||
| 471 | .id = 2, | ||
| 472 | .dev = { | ||
| 473 | .platform_data = &uart1_data, | ||
| 474 | .coherent_dma_mask = 0xffffffff, | ||
| 475 | }, | ||
| 476 | .resource = uart1_resources, | ||
| 477 | .num_resources = ARRAY_SIZE(uart1_resources), | ||
| 478 | }; | ||
| 479 | |||
| 480 | static inline void configure_usart1_pins(void) | ||
| 481 | { | ||
| 482 | at91_set_A_periph(AT91_PIN_PA11, 1); /* TXD1 */ | ||
| 483 | at91_set_A_periph(AT91_PIN_PA12, 0); /* RXD1 */ | ||
| 484 | } | ||
| 485 | |||
| 486 | static struct resource uart2_resources[] = { | ||
| 487 | [0] = { | ||
| 488 | .start = AT91SAM9RL_BASE_US2, | ||
| 489 | .end = AT91SAM9RL_BASE_US2 + SZ_16K - 1, | ||
| 490 | .flags = IORESOURCE_MEM, | ||
| 491 | }, | ||
| 492 | [1] = { | ||
| 493 | .start = AT91SAM9RL_ID_US2, | ||
| 494 | .end = AT91SAM9RL_ID_US2, | ||
| 495 | .flags = IORESOURCE_IRQ, | ||
| 496 | }, | ||
| 497 | }; | ||
| 498 | |||
| 499 | static struct atmel_uart_data uart2_data = { | ||
| 500 | .use_dma_tx = 1, | ||
| 501 | .use_dma_rx = 1, | ||
| 502 | }; | ||
| 503 | |||
| 504 | static struct platform_device at91sam9rl_uart2_device = { | ||
| 505 | .name = "atmel_usart", | ||
| 506 | .id = 3, | ||
| 507 | .dev = { | ||
| 508 | .platform_data = &uart2_data, | ||
| 509 | .coherent_dma_mask = 0xffffffff, | ||
| 510 | }, | ||
| 511 | .resource = uart2_resources, | ||
| 512 | .num_resources = ARRAY_SIZE(uart2_resources), | ||
| 513 | }; | ||
| 514 | |||
| 515 | static inline void configure_usart2_pins(void) | ||
| 516 | { | ||
| 517 | at91_set_A_periph(AT91_PIN_PA13, 1); /* TXD2 */ | ||
| 518 | at91_set_A_periph(AT91_PIN_PA14, 0); /* RXD2 */ | ||
| 519 | } | ||
| 520 | |||
| 521 | static struct resource uart3_resources[] = { | ||
| 522 | [0] = { | ||
| 523 | .start = AT91SAM9RL_BASE_US3, | ||
| 524 | .end = AT91SAM9RL_BASE_US3 + SZ_16K - 1, | ||
| 525 | .flags = IORESOURCE_MEM, | ||
| 526 | }, | ||
| 527 | [1] = { | ||
| 528 | .start = AT91SAM9RL_ID_US3, | ||
| 529 | .end = AT91SAM9RL_ID_US3, | ||
| 530 | .flags = IORESOURCE_IRQ, | ||
| 531 | }, | ||
| 532 | }; | ||
| 533 | |||
| 534 | static struct atmel_uart_data uart3_data = { | ||
| 535 | .use_dma_tx = 1, | ||
| 536 | .use_dma_rx = 1, | ||
| 537 | }; | ||
| 538 | |||
| 539 | static struct platform_device at91sam9rl_uart3_device = { | ||
| 540 | .name = "atmel_usart", | ||
| 541 | .id = 4, | ||
| 542 | .dev = { | ||
| 543 | .platform_data = &uart3_data, | ||
| 544 | .coherent_dma_mask = 0xffffffff, | ||
| 545 | }, | ||
| 546 | .resource = uart3_resources, | ||
| 547 | .num_resources = ARRAY_SIZE(uart3_resources), | ||
| 548 | }; | ||
| 549 | |||
| 550 | static inline void configure_usart3_pins(void) | ||
| 551 | { | ||
| 552 | at91_set_A_periph(AT91_PIN_PB0, 1); /* TXD3 */ | ||
| 553 | at91_set_A_periph(AT91_PIN_PB1, 0); /* RXD3 */ | ||
| 554 | } | ||
| 555 | |||
| 556 | struct platform_device *at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ | ||
| 557 | struct platform_device *atmel_default_console_device; /* the serial console device */ | ||
| 558 | |||
| 559 | void __init at91_init_serial(struct at91_uart_config *config) | ||
| 560 | { | ||
| 561 | int i; | ||
| 562 | |||
| 563 | /* Fill in list of supported UARTs */ | ||
| 564 | for (i = 0; i < config->nr_tty; i++) { | ||
| 565 | switch (config->tty_map[i]) { | ||
| 566 | case 0: | ||
| 567 | configure_usart0_pins(); | ||
| 568 | at91_uarts[i] = &at91sam9rl_uart0_device; | ||
| 569 | at91_clock_associate("usart0_clk", &at91sam9rl_uart0_device.dev, "usart"); | ||
| 570 | break; | ||
| 571 | case 1: | ||
| 572 | configure_usart1_pins(); | ||
| 573 | at91_uarts[i] = &at91sam9rl_uart1_device; | ||
| 574 | at91_clock_associate("usart1_clk", &at91sam9rl_uart1_device.dev, "usart"); | ||
| 575 | break; | ||
| 576 | case 2: | ||
| 577 | configure_usart2_pins(); | ||
| 578 | at91_uarts[i] = &at91sam9rl_uart2_device; | ||
| 579 | at91_clock_associate("usart2_clk", &at91sam9rl_uart2_device.dev, "usart"); | ||
| 580 | break; | ||
| 581 | case 3: | ||
| 582 | configure_usart3_pins(); | ||
| 583 | at91_uarts[i] = &at91sam9rl_uart3_device; | ||
| 584 | at91_clock_associate("usart3_clk", &at91sam9rl_uart3_device.dev, "usart"); | ||
| 585 | break; | ||
| 586 | case 4: | ||
| 587 | configure_dbgu_pins(); | ||
| 588 | at91_uarts[i] = &at91sam9rl_dbgu_device; | ||
| 589 | at91_clock_associate("mck", &at91sam9rl_dbgu_device.dev, "usart"); | ||
| 590 | break; | ||
| 591 | default: | ||
| 592 | continue; | ||
| 593 | } | ||
| 594 | at91_uarts[i]->id = i; /* update ID number to mapped ID */ | ||
| 595 | } | ||
| 596 | |||
| 597 | /* Set serial console device */ | ||
| 598 | if (config->console_tty < ATMEL_MAX_UART) | ||
| 599 | atmel_default_console_device = at91_uarts[config->console_tty]; | ||
| 600 | if (!atmel_default_console_device) | ||
| 601 | printk(KERN_INFO "AT91: No default serial console defined.\n"); | ||
| 602 | } | ||
| 603 | |||
| 604 | void __init at91_add_device_serial(void) | ||
| 605 | { | ||
| 606 | int i; | ||
| 607 | |||
| 608 | for (i = 0; i < ATMEL_MAX_UART; i++) { | ||
| 609 | if (at91_uarts[i]) | ||
| 610 | platform_device_register(at91_uarts[i]); | ||
| 611 | } | ||
| 612 | } | ||
| 613 | #else | ||
| 614 | void __init at91_init_serial(struct at91_uart_config *config) {} | ||
| 615 | void __init at91_add_device_serial(void) {} | ||
| 616 | #endif | ||
| 617 | |||
| 618 | |||
| 619 | /* -------------------------------------------------------------------- */ | ||
| 620 | |||
| 621 | /* | ||
| 622 | * These devices are always present and don't need any board-specific | ||
| 623 | * setup. | ||
| 624 | */ | ||
| 625 | static int __init at91_add_standard_devices(void) | ||
| 626 | { | ||
| 627 | return 0; | ||
| 628 | } | ||
| 629 | |||
| 630 | arch_initcall(at91_add_standard_devices); | ||
diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c index bcf71536cc6d..1f0c8a400b3a 100644 --- a/arch/arm/mach-at91/board-sam9261ek.c +++ b/arch/arm/mach-at91/board-sam9261ek.c | |||
| @@ -60,6 +60,9 @@ static void __init ek_map_io(void) | |||
| 60 | /* Initialize processor: 18.432 MHz crystal */ | 60 | /* Initialize processor: 18.432 MHz crystal */ |
| 61 | at91sam9261_initialize(18432000); | 61 | at91sam9261_initialize(18432000); |
| 62 | 62 | ||
| 63 | /* Setup the LEDs */ | ||
| 64 | at91_init_leds(AT91_PIN_PA13, AT91_PIN_PA14); | ||
| 65 | |||
| 63 | /* Setup the serial ports and console */ | 66 | /* Setup the serial ports and console */ |
| 64 | at91_init_serial(&ek_uart_config); | 67 | at91_init_serial(&ek_uart_config); |
| 65 | } | 68 | } |
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c new file mode 100644 index 000000000000..30c79aca84d4 --- /dev/null +++ b/arch/arm/mach-at91/board-sam9rlek.c | |||
| @@ -0,0 +1,204 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2005 SAN People | ||
| 3 | * Copyright (C) 2007 Atmel Corporation | ||
| 4 | * | ||
| 5 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 6 | * License. See the file COPYING in the main directory of this archive for | ||
| 7 | * more details. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #include <linux/types.h> | ||
| 11 | #include <linux/init.h> | ||
| 12 | #include <linux/mm.h> | ||
| 13 | #include <linux/module.h> | ||
| 14 | #include <linux/platform_device.h> | ||
| 15 | #include <linux/spi/spi.h> | ||
| 16 | #include <linux/fb.h> | ||
| 17 | #include <linux/clk.h> | ||
| 18 | |||
| 19 | #include <video/atmel_lcdc.h> | ||
| 20 | |||
| 21 | #include <asm/hardware.h> | ||
| 22 | #include <asm/setup.h> | ||
| 23 | #include <asm/mach-types.h> | ||
| 24 | #include <asm/irq.h> | ||
| 25 | |||
| 26 | #include <asm/mach/arch.h> | ||
| 27 | #include <asm/mach/map.h> | ||
| 28 | #include <asm/mach/irq.h> | ||
| 29 | |||
| 30 | #include <asm/arch/board.h> | ||
| 31 | #include <asm/arch/gpio.h> | ||
| 32 | #include <asm/arch/at91sam926x_mc.h> | ||
| 33 | |||
| 34 | #include "generic.h" | ||
| 35 | |||
| 36 | |||
| 37 | /* | ||
| 38 | * Serial port configuration. | ||
| 39 | * 0 .. 3 = USART0 .. USART3 | ||
| 40 | * 4 = DBGU | ||
| 41 | */ | ||
| 42 | static struct at91_uart_config __initdata ek_uart_config = { | ||
| 43 | .console_tty = 0, /* ttyS0 */ | ||
| 44 | .nr_tty = 2, | ||
| 45 | .tty_map = { 4, 0, -1, -1, -1 } /* ttyS0, ..., ttyS4 */ | ||
| 46 | }; | ||
| 47 | |||
| 48 | static void __init ek_map_io(void) | ||
| 49 | { | ||
| 50 | /* Initialize processor: 12.000 MHz crystal */ | ||
| 51 | at91sam9rl_initialize(12000000); | ||
| 52 | |||
| 53 | /* Setup the serial ports and console */ | ||
| 54 | at91_init_serial(&ek_uart_config); | ||
| 55 | } | ||
| 56 | |||
| 57 | static void __init ek_init_irq(void) | ||
| 58 | { | ||
| 59 | at91sam9rl_init_interrupts(NULL); | ||
| 60 | } | ||
| 61 | |||
| 62 | |||
| 63 | /* | ||
| 64 | * MCI (SD/MMC) | ||
| 65 | */ | ||
| 66 | static struct at91_mmc_data __initdata ek_mmc_data = { | ||
| 67 | .wire4 = 1, | ||
| 68 | .det_pin = AT91_PIN_PA15, | ||
| 69 | // .wp_pin = ... not connected | ||
| 70 | // .vcc_pin = ... not connected | ||
| 71 | }; | ||
| 72 | |||
| 73 | |||
| 74 | /* | ||
| 75 | * NAND flash | ||
| 76 | */ | ||
| 77 | static struct mtd_partition __initdata ek_nand_partition[] = { | ||
| 78 | { | ||
| 79 | .name = "Partition 1", | ||
| 80 | .offset = 0, | ||
| 81 | .size = 256 * 1024, | ||
| 82 | }, | ||
| 83 | { | ||
| 84 | .name = "Partition 2", | ||
| 85 | .offset = 256 * 1024 , | ||
| 86 | .size = MTDPART_SIZ_FULL, | ||
| 87 | }, | ||
| 88 | }; | ||
| 89 | |||
| 90 | static struct mtd_partition *nand_partitions(int size, int *num_partitions) | ||
| 91 | { | ||
| 92 | *num_partitions = ARRAY_SIZE(ek_nand_partition); | ||
| 93 | return ek_nand_partition; | ||
| 94 | } | ||
| 95 | |||
| 96 | static struct at91_nand_data __initdata ek_nand_data = { | ||
| 97 | .ale = 21, | ||
| 98 | .cle = 22, | ||
| 99 | // .det_pin = ... not connected | ||
| 100 | .rdy_pin = AT91_PIN_PD17, | ||
| 101 | .enable_pin = AT91_PIN_PB6, | ||
| 102 | .partition_info = nand_partitions, | ||
| 103 | .bus_width_16 = 0, | ||
| 104 | }; | ||
| 105 | |||
| 106 | |||
| 107 | /* | ||
| 108 | * SPI devices | ||
| 109 | */ | ||
| 110 | static struct spi_board_info ek_spi_devices[] = { | ||
| 111 | { /* DataFlash chip */ | ||
| 112 | .modalias = "mtd_dataflash", | ||
| 113 | .chip_select = 0, | ||
| 114 | .max_speed_hz = 15 * 1000 * 1000, | ||
| 115 | .bus_num = 0, | ||
| 116 | }, | ||
| 117 | }; | ||
| 118 | |||
| 119 | |||
| 120 | /* | ||
| 121 | * LCD Controller | ||
| 122 | */ | ||
| 123 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | ||
| 124 | static struct fb_videomode at91_tft_vga_modes[] = { | ||
| 125 | { | ||
| 126 | .name = "TX09D50VM1CCA @ 60", | ||
| 127 | .refresh = 60, | ||
| 128 | .xres = 240, .yres = 320, | ||
| 129 | .pixclock = KHZ2PICOS(4965), | ||
| 130 | |||
| 131 | .left_margin = 1, .right_margin = 33, | ||
| 132 | .upper_margin = 1, .lower_margin = 0, | ||
| 133 | .hsync_len = 5, .vsync_len = 1, | ||
| 134 | |||
| 135 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, | ||
| 136 | .vmode = FB_VMODE_NONINTERLACED, | ||
| 137 | }, | ||
| 138 | }; | ||
| 139 | |||
| 140 | static struct fb_monspecs at91fb_default_monspecs = { | ||
| 141 | .manufacturer = "HIT", | ||
| 142 | .monitor = "TX09D50VM1CCA", | ||
| 143 | |||
| 144 | .modedb = at91_tft_vga_modes, | ||
| 145 | .modedb_len = ARRAY_SIZE(at91_tft_vga_modes), | ||
| 146 | .hfmin = 15000, | ||
| 147 | .hfmax = 64000, | ||
| 148 | .vfmin = 50, | ||
| 149 | .vfmax = 150, | ||
| 150 | }; | ||
| 151 | |||
| 152 | #define AT91SAM9RL_DEFAULT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \ | ||
| 153 | | ATMEL_LCDC_DISTYPE_TFT \ | ||
| 154 | | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE) | ||
| 155 | |||
| 156 | static void at91_lcdc_power_control(int on) | ||
| 157 | { | ||
| 158 | if (on) | ||
| 159 | at91_set_gpio_value(AT91_PIN_PA30, 0); /* power up */ | ||
| 160 | else | ||
| 161 | at91_set_gpio_value(AT91_PIN_PA30, 1); /* power down */ | ||
| 162 | } | ||
| 163 | |||
| 164 | /* Driver datas */ | ||
| 165 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | ||
| 166 | .default_bpp = 16, | ||
| 167 | .default_dmacon = ATMEL_LCDC_DMAEN, | ||
| 168 | .default_lcdcon2 = AT91SAM9RL_DEFAULT_LCDCON2, | ||
| 169 | .default_monspecs = &at91fb_default_monspecs, | ||
| 170 | .atmel_lcdfb_power_control = at91_lcdc_power_control, | ||
| 171 | .guard_time = 1, | ||
| 172 | }; | ||
| 173 | |||
| 174 | #else | ||
| 175 | static struct atmel_lcdfb_info __initdata ek_lcdc_data; | ||
| 176 | #endif | ||
| 177 | |||
| 178 | |||
| 179 | static void __init ek_board_init(void) | ||
| 180 | { | ||
| 181 | /* Serial */ | ||
| 182 | at91_add_device_serial(); | ||
| 183 | /* I2C */ | ||
| 184 | at91_add_device_i2c(); | ||
| 185 | /* NAND */ | ||
| 186 | at91_add_device_nand(&ek_nand_data); | ||
| 187 | /* SPI */ | ||
| 188 | at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices)); | ||
| 189 | /* MMC */ | ||
| 190 | at91_add_device_mmc(0, &ek_mmc_data); | ||
| 191 | /* LCD Controller */ | ||
| 192 | at91_add_device_lcdc(&ek_lcdc_data); | ||
| 193 | } | ||
| 194 | |||
| 195 | MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK") | ||
| 196 | /* Maintainer: Atmel */ | ||
| 197 | .phys_io = AT91_BASE_SYS, | ||
| 198 | .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, | ||
| 199 | .boot_params = AT91_SDRAM_BASE + 0x100, | ||
| 200 | .timer = &at91sam926x_timer, | ||
| 201 | .map_io = ek_map_io, | ||
| 202 | .init_irq = ek_init_irq, | ||
| 203 | .init_machine = ek_board_init, | ||
| 204 | MACHINE_END | ||
diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h index bda26221c522..68ed71a3e6c6 100644 --- a/arch/arm/mach-at91/generic.h +++ b/arch/arm/mach-at91/generic.h | |||
| @@ -13,12 +13,14 @@ extern void __init at91rm9200_initialize(unsigned long main_clock, unsigned shor | |||
| 13 | extern void __init at91sam9260_initialize(unsigned long main_clock); | 13 | extern void __init at91sam9260_initialize(unsigned long main_clock); |
| 14 | extern void __init at91sam9261_initialize(unsigned long main_clock); | 14 | extern void __init at91sam9261_initialize(unsigned long main_clock); |
| 15 | extern void __init at91sam9263_initialize(unsigned long main_clock); | 15 | extern void __init at91sam9263_initialize(unsigned long main_clock); |
| 16 | extern void __init at91sam9rl_initialize(unsigned long main_clock); | ||
| 16 | 17 | ||
| 17 | /* Interrupts */ | 18 | /* Interrupts */ |
| 18 | extern void __init at91rm9200_init_interrupts(unsigned int priority[]); | 19 | extern void __init at91rm9200_init_interrupts(unsigned int priority[]); |
| 19 | extern void __init at91sam9260_init_interrupts(unsigned int priority[]); | 20 | extern void __init at91sam9260_init_interrupts(unsigned int priority[]); |
| 20 | extern void __init at91sam9261_init_interrupts(unsigned int priority[]); | 21 | extern void __init at91sam9261_init_interrupts(unsigned int priority[]); |
| 21 | extern void __init at91sam9263_init_interrupts(unsigned int priority[]); | 22 | extern void __init at91sam9263_init_interrupts(unsigned int priority[]); |
| 23 | extern void __init at91sam9rl_init_interrupts(unsigned int priority[]); | ||
| 22 | extern void __init at91_aic_init(unsigned int priority[]); | 24 | extern void __init at91_aic_init(unsigned int priority[]); |
| 23 | 25 | ||
| 24 | /* Timer */ | 26 | /* Timer */ |
diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig new file mode 100644 index 000000000000..bac988e7a4c3 --- /dev/null +++ b/arch/arm/mach-davinci/Kconfig | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | if ARCH_DAVINCI | ||
| 2 | |||
| 3 | menu "TI DaVinci Implementations" | ||
| 4 | |||
| 5 | comment "DaVinci Core Type" | ||
| 6 | |||
| 7 | config ARCH_DAVINCI644x | ||
| 8 | default y | ||
| 9 | bool "DaVinci 644x based system" | ||
| 10 | |||
| 11 | comment "DaVinci Board Type" | ||
| 12 | |||
| 13 | config MACH_DAVINCI_EVM | ||
| 14 | bool "TI DaVinci EVM" | ||
| 15 | default y | ||
| 16 | depends on ARCH_DAVINCI644x | ||
| 17 | help | ||
| 18 | Configure this option to specify the whether the board used | ||
| 19 | for development is a DaVinci EVM | ||
| 20 | |||
| 21 | endmenu | ||
| 22 | |||
| 23 | endif | ||
diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile new file mode 100644 index 000000000000..a8f88cd29905 --- /dev/null +++ b/arch/arm/mach-davinci/Makefile | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | # | ||
| 2 | # Makefile for the linux kernel. | ||
| 3 | # | ||
| 4 | # | ||
| 5 | |||
| 6 | # Common objects | ||
| 7 | obj-y := time.o irq.o serial.o io.o id.o psc.o | ||
| 8 | |||
| 9 | # Board specific | ||
| 10 | obj-$(CONFIG_MACH_DAVINCI_EVM) += board-evm.o | ||
diff --git a/arch/arm/mach-davinci/Makefile.boot b/arch/arm/mach-davinci/Makefile.boot new file mode 100644 index 000000000000..e1dd366f836b --- /dev/null +++ b/arch/arm/mach-davinci/Makefile.boot | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | zreladdr-y := 0x80008000 | ||
| 2 | params_phys-y := 0x80000100 | ||
| 3 | initrd_phys-y := 0x80800000 | ||
diff --git a/arch/arm/mach-davinci/board-evm.c b/arch/arm/mach-davinci/board-evm.c new file mode 100644 index 000000000000..633c12e43044 --- /dev/null +++ b/arch/arm/mach-davinci/board-evm.c | |||
| @@ -0,0 +1,131 @@ | |||
| 1 | /* | ||
| 2 | * TI DaVinci EVM board support | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/module.h> | ||
| 13 | #include <linux/init.h> | ||
| 14 | #include <linux/dma-mapping.h> | ||
| 15 | #include <linux/platform_device.h> | ||
| 16 | #include <linux/mtd/mtd.h> | ||
| 17 | #include <linux/mtd/partitions.h> | ||
| 18 | #include <linux/mtd/physmap.h> | ||
| 19 | |||
| 20 | #include <asm/setup.h> | ||
| 21 | #include <asm/io.h> | ||
| 22 | #include <asm/mach-types.h> | ||
| 23 | #include <asm/hardware.h> | ||
| 24 | |||
| 25 | #include <asm/mach/arch.h> | ||
| 26 | #include <asm/mach/map.h> | ||
| 27 | #include <asm/mach/flash.h> | ||
| 28 | |||
| 29 | #include <asm/arch/common.h> | ||
| 30 | |||
| 31 | /* other misc. init functions */ | ||
| 32 | void __init davinci_psc_init(void); | ||
| 33 | void __init davinci_irq_init(void); | ||
| 34 | void __init davinci_map_common_io(void); | ||
| 35 | |||
| 36 | /* NOR Flash base address set to CS0 by default */ | ||
| 37 | #define NOR_FLASH_PHYS 0x02000000 | ||
| 38 | |||
| 39 | static struct mtd_partition davinci_evm_partitions[] = { | ||
| 40 | /* bootloader (U-Boot, etc) in first 4 sectors */ | ||
| 41 | { | ||
| 42 | .name = "bootloader", | ||
| 43 | .offset = 0, | ||
| 44 | .size = 4 * SZ_64K, | ||
| 45 | .mask_flags = MTD_WRITEABLE, /* force read-only */ | ||
| 46 | }, | ||
| 47 | /* bootloader params in the next 1 sectors */ | ||
| 48 | { | ||
| 49 | .name = "params", | ||
| 50 | .offset = MTDPART_OFS_APPEND, | ||
| 51 | .size = SZ_64K, | ||
| 52 | .mask_flags = 0, | ||
| 53 | }, | ||
| 54 | /* kernel */ | ||
| 55 | { | ||
| 56 | .name = "kernel", | ||
| 57 | .offset = MTDPART_OFS_APPEND, | ||
| 58 | .size = SZ_2M, | ||
| 59 | .mask_flags = 0 | ||
| 60 | }, | ||
| 61 | /* file system */ | ||
| 62 | { | ||
| 63 | .name = "filesystem", | ||
| 64 | .offset = MTDPART_OFS_APPEND, | ||
| 65 | .size = MTDPART_SIZ_FULL, | ||
| 66 | .mask_flags = 0 | ||
| 67 | } | ||
| 68 | }; | ||
| 69 | |||
| 70 | static struct physmap_flash_data davinci_evm_flash_data = { | ||
| 71 | .width = 2, | ||
| 72 | .parts = davinci_evm_partitions, | ||
| 73 | .nr_parts = ARRAY_SIZE(davinci_evm_partitions), | ||
| 74 | }; | ||
| 75 | |||
| 76 | /* NOTE: CFI probe will correctly detect flash part as 32M, but EMIF | ||
| 77 | * limits addresses to 16M, so using addresses past 16M will wrap */ | ||
| 78 | static struct resource davinci_evm_flash_resource = { | ||
| 79 | .start = NOR_FLASH_PHYS, | ||
| 80 | .end = NOR_FLASH_PHYS + SZ_16M - 1, | ||
| 81 | .flags = IORESOURCE_MEM, | ||
| 82 | }; | ||
| 83 | |||
| 84 | static struct platform_device davinci_evm_flash_device = { | ||
| 85 | .name = "physmap-flash", | ||
| 86 | .id = 0, | ||
| 87 | .dev = { | ||
| 88 | .platform_data = &davinci_evm_flash_data, | ||
| 89 | }, | ||
| 90 | .num_resources = 1, | ||
| 91 | .resource = &davinci_evm_flash_resource, | ||
| 92 | }; | ||
| 93 | |||
| 94 | static struct platform_device *davinci_evm_devices[] __initdata = { | ||
| 95 | &davinci_evm_flash_device, | ||
| 96 | }; | ||
| 97 | |||
| 98 | static void __init | ||
| 99 | davinci_evm_map_io(void) | ||
| 100 | { | ||
| 101 | davinci_map_common_io(); | ||
| 102 | } | ||
| 103 | |||
| 104 | static __init void davinci_evm_init(void) | ||
| 105 | { | ||
| 106 | davinci_psc_init(); | ||
| 107 | |||
| 108 | #if defined(CONFIG_BLK_DEV_DAVINCI) || defined(CONFIG_BLK_DEV_DAVINCI_MODULE) | ||
| 109 | printk(KERN_WARNING "WARNING: both IDE and NOR flash are enabled, " | ||
| 110 | "but share pins.\n\t Disable IDE for NOR support.\n"); | ||
| 111 | #endif | ||
| 112 | |||
| 113 | platform_add_devices(davinci_evm_devices, | ||
| 114 | ARRAY_SIZE(davinci_evm_devices)); | ||
| 115 | } | ||
| 116 | |||
| 117 | static __init void davinci_evm_irq_init(void) | ||
| 118 | { | ||
| 119 | davinci_irq_init(); | ||
| 120 | } | ||
| 121 | |||
| 122 | MACHINE_START(DAVINCI_EVM, "DaVinci EVM") | ||
| 123 | /* Maintainer: MontaVista Software <source@mvista.com> */ | ||
| 124 | .phys_io = IO_PHYS, | ||
| 125 | .io_pg_offst = (io_p2v(IO_PHYS) >> 18) & 0xfffc, | ||
| 126 | .boot_params = (DAVINCI_DDR_BASE + 0x100), | ||
| 127 | .map_io = davinci_evm_map_io, | ||
| 128 | .init_irq = davinci_evm_irq_init, | ||
| 129 | .timer = &davinci_timer, | ||
| 130 | .init_machine = davinci_evm_init, | ||
| 131 | MACHINE_END | ||
diff --git a/arch/arm/mach-davinci/id.c b/arch/arm/mach-davinci/id.c new file mode 100644 index 000000000000..70608f76aed8 --- /dev/null +++ b/arch/arm/mach-davinci/id.c | |||
| @@ -0,0 +1,94 @@ | |||
| 1 | /* | ||
| 2 | * Davinci CPU identification code | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Komal Shah <komal_shah802003@yahoo.com> | ||
| 5 | * | ||
| 6 | * Derived from OMAP1 CPU identification code. | ||
| 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/module.h> | ||
| 14 | #include <linux/kernel.h> | ||
| 15 | #include <linux/init.h> | ||
| 16 | |||
| 17 | #include <asm/io.h> | ||
| 18 | |||
| 19 | #define JTAG_ID_BASE 0x01c40028 | ||
| 20 | |||
| 21 | struct davinci_id { | ||
| 22 | u8 variant; /* JTAG ID bits 31:28 */ | ||
| 23 | u16 part_no; /* JTAG ID bits 27:12 */ | ||
| 24 | u32 manufacturer; /* JTAG ID bits 11:1 */ | ||
| 25 | u32 type; /* Cpu id bits [31:8], cpu class bits [7:0] */ | ||
| 26 | }; | ||
| 27 | |||
| 28 | /* Register values to detect the DaVinci version */ | ||
| 29 | static struct davinci_id davinci_ids[] __initdata = { | ||
| 30 | { | ||
| 31 | /* DM6446 */ | ||
| 32 | .part_no = 0xb700, | ||
| 33 | .variant = 0x0, | ||
| 34 | .manufacturer = 0x017, | ||
| 35 | .type = 0x64460000, | ||
| 36 | }, | ||
| 37 | }; | ||
| 38 | |||
| 39 | /* | ||
| 40 | * Get Device Part No. from JTAG ID register | ||
| 41 | */ | ||
| 42 | static u16 __init davinci_get_part_no(void) | ||
| 43 | { | ||
| 44 | u32 dev_id, part_no; | ||
| 45 | |||
| 46 | dev_id = davinci_readl(JTAG_ID_BASE); | ||
| 47 | |||
| 48 | part_no = ((dev_id >> 12) & 0xffff); | ||
| 49 | |||
| 50 | return part_no; | ||
| 51 | } | ||
| 52 | |||
| 53 | /* | ||
| 54 | * Get Device Revision from JTAG ID register | ||
| 55 | */ | ||
| 56 | static u8 __init davinci_get_variant(void) | ||
| 57 | { | ||
| 58 | u32 variant; | ||
| 59 | |||
| 60 | variant = davinci_readl(JTAG_ID_BASE); | ||
| 61 | |||
| 62 | variant = (variant >> 28) & 0xf; | ||
| 63 | |||
| 64 | return variant; | ||
| 65 | } | ||
| 66 | |||
| 67 | void __init davinci_check_revision(void) | ||
| 68 | { | ||
| 69 | int i; | ||
| 70 | u16 part_no; | ||
| 71 | u8 variant; | ||
| 72 | |||
| 73 | part_no = davinci_get_part_no(); | ||
| 74 | variant = davinci_get_variant(); | ||
| 75 | |||
| 76 | /* First check only the major version in a safe way */ | ||
| 77 | for (i = 0; i < ARRAY_SIZE(davinci_ids); i++) { | ||
| 78 | if (part_no == (davinci_ids[i].part_no)) { | ||
| 79 | system_rev = davinci_ids[i].type; | ||
| 80 | break; | ||
| 81 | } | ||
| 82 | } | ||
| 83 | |||
| 84 | /* Check if we can find the dev revision */ | ||
| 85 | for (i = 0; i < ARRAY_SIZE(davinci_ids); i++) { | ||
| 86 | if (part_no == davinci_ids[i].part_no && | ||
| 87 | variant == davinci_ids[i].variant) { | ||
| 88 | system_rev = davinci_ids[i].type; | ||
| 89 | break; | ||
| 90 | } | ||
| 91 | } | ||
| 92 | |||
| 93 | printk("DaVinci DM%04x variant 0x%x\n", system_rev >> 16, variant); | ||
| 94 | } | ||
diff --git a/arch/arm/mach-davinci/io.c b/arch/arm/mach-davinci/io.c new file mode 100644 index 000000000000..87fae6fb6ecf --- /dev/null +++ b/arch/arm/mach-davinci/io.c | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci I/O mapping code | ||
| 3 | * | ||
| 4 | * Copyright (C) 2005-2006 Texas Instruments | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/module.h> | ||
| 12 | #include <linux/kernel.h> | ||
| 13 | #include <linux/init.h> | ||
| 14 | |||
| 15 | #include <asm/tlb.h> | ||
| 16 | #include <asm/io.h> | ||
| 17 | #include <asm/memory.h> | ||
| 18 | |||
| 19 | #include <asm/mach/map.h> | ||
| 20 | |||
| 21 | extern void davinci_check_revision(void); | ||
| 22 | |||
| 23 | /* | ||
| 24 | * The machine specific code may provide the extra mapping besides the | ||
| 25 | * default mapping provided here. | ||
| 26 | */ | ||
| 27 | static struct map_desc davinci_io_desc[] __initdata = { | ||
| 28 | { | ||
| 29 | .virtual = IO_VIRT, | ||
| 30 | .pfn = __phys_to_pfn(IO_PHYS), | ||
| 31 | .length = IO_SIZE, | ||
| 32 | .type = MT_DEVICE | ||
| 33 | }, | ||
| 34 | }; | ||
| 35 | |||
| 36 | void __init davinci_map_common_io(void) | ||
| 37 | { | ||
| 38 | iotable_init(davinci_io_desc, ARRAY_SIZE(davinci_io_desc)); | ||
| 39 | |||
| 40 | /* Normally devicemaps_init() would flush caches and tlb after | ||
| 41 | * mdesc->map_io(), but we must also do it here because of the CPU | ||
| 42 | * revision check below. | ||
| 43 | */ | ||
| 44 | local_flush_tlb_all(); | ||
| 45 | flush_cache_all(); | ||
| 46 | |||
| 47 | /* We want to check CPU revision early for cpu_is_xxxx() macros. | ||
| 48 | * IO space mapping must be initialized before we can do that. | ||
| 49 | */ | ||
| 50 | davinci_check_revision(); | ||
| 51 | } | ||
diff --git a/arch/arm/mach-davinci/irq.c b/arch/arm/mach-davinci/irq.c new file mode 100644 index 000000000000..1333d84d2e45 --- /dev/null +++ b/arch/arm/mach-davinci/irq.c | |||
| @@ -0,0 +1,226 @@ | |||
| 1 | /* | ||
| 2 | * Interrupt handler for DaVinci boards. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Texas Instruments. | ||
| 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., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
| 19 | * | ||
| 20 | */ | ||
| 21 | #include <linux/kernel.h> | ||
| 22 | #include <linux/init.h> | ||
| 23 | #include <linux/interrupt.h> | ||
| 24 | #include <linux/irq.h> | ||
| 25 | |||
| 26 | #include <asm/hardware.h> | ||
| 27 | #include <asm/io.h> | ||
| 28 | #include <asm/mach/irq.h> | ||
| 29 | |||
| 30 | #define IRQ_BIT(irq) ((irq) & 0x1f) | ||
| 31 | |||
| 32 | #define FIQ_REG0_OFFSET 0x0000 | ||
| 33 | #define FIQ_REG1_OFFSET 0x0004 | ||
| 34 | #define IRQ_REG0_OFFSET 0x0008 | ||
| 35 | #define IRQ_REG1_OFFSET 0x000C | ||
| 36 | #define IRQ_ENT_REG0_OFFSET 0x0018 | ||
| 37 | #define IRQ_ENT_REG1_OFFSET 0x001C | ||
| 38 | #define IRQ_INCTL_REG_OFFSET 0x0020 | ||
| 39 | #define IRQ_EABASE_REG_OFFSET 0x0024 | ||
| 40 | #define IRQ_INTPRI0_REG_OFFSET 0x0030 | ||
| 41 | #define IRQ_INTPRI7_REG_OFFSET 0x004C | ||
| 42 | |||
| 43 | static inline unsigned int davinci_irq_readl(int offset) | ||
| 44 | { | ||
| 45 | return davinci_readl(DAVINCI_ARM_INTC_BASE + offset); | ||
| 46 | } | ||
| 47 | |||
| 48 | static inline void davinci_irq_writel(unsigned long value, int offset) | ||
| 49 | { | ||
| 50 | davinci_writel(value, DAVINCI_ARM_INTC_BASE + offset); | ||
| 51 | } | ||
| 52 | |||
| 53 | /* Disable interrupt */ | ||
| 54 | static void davinci_mask_irq(unsigned int irq) | ||
| 55 | { | ||
| 56 | unsigned int mask; | ||
| 57 | u32 l; | ||
| 58 | |||
| 59 | mask = 1 << IRQ_BIT(irq); | ||
| 60 | |||
| 61 | if (irq > 31) { | ||
| 62 | l = davinci_irq_readl(IRQ_ENT_REG1_OFFSET); | ||
| 63 | l &= ~mask; | ||
| 64 | davinci_irq_writel(l, IRQ_ENT_REG1_OFFSET); | ||
| 65 | } else { | ||
| 66 | l = davinci_irq_readl(IRQ_ENT_REG0_OFFSET); | ||
| 67 | l &= ~mask; | ||
| 68 | davinci_irq_writel(l, IRQ_ENT_REG0_OFFSET); | ||
| 69 | } | ||
| 70 | } | ||
| 71 | |||
| 72 | /* Enable interrupt */ | ||
| 73 | static void davinci_unmask_irq(unsigned int irq) | ||
| 74 | { | ||
| 75 | unsigned int mask; | ||
| 76 | u32 l; | ||
| 77 | |||
| 78 | mask = 1 << IRQ_BIT(irq); | ||
| 79 | |||
| 80 | if (irq > 31) { | ||
| 81 | l = davinci_irq_readl(IRQ_ENT_REG1_OFFSET); | ||
| 82 | l |= mask; | ||
| 83 | davinci_irq_writel(l, IRQ_ENT_REG1_OFFSET); | ||
| 84 | } else { | ||
| 85 | l = davinci_irq_readl(IRQ_ENT_REG0_OFFSET); | ||
| 86 | l |= mask; | ||
| 87 | davinci_irq_writel(l, IRQ_ENT_REG0_OFFSET); | ||
| 88 | } | ||
| 89 | } | ||
| 90 | |||
| 91 | /* EOI interrupt */ | ||
| 92 | static void davinci_ack_irq(unsigned int irq) | ||
| 93 | { | ||
| 94 | unsigned int mask; | ||
| 95 | |||
| 96 | mask = 1 << IRQ_BIT(irq); | ||
| 97 | |||
| 98 | if (irq > 31) | ||
| 99 | davinci_irq_writel(mask, IRQ_REG1_OFFSET); | ||
| 100 | else | ||
| 101 | davinci_irq_writel(mask, IRQ_REG0_OFFSET); | ||
| 102 | } | ||
| 103 | |||
| 104 | static struct irq_chip davinci_irq_chip_0 = { | ||
| 105 | .name = "AINTC", | ||
| 106 | .ack = davinci_ack_irq, | ||
| 107 | .mask = davinci_mask_irq, | ||
| 108 | .unmask = davinci_unmask_irq, | ||
| 109 | }; | ||
| 110 | |||
| 111 | |||
| 112 | /* FIQ are pri 0-1; otherwise 2-7, with 7 lowest priority */ | ||
| 113 | static const u8 default_priorities[DAVINCI_N_AINTC_IRQ] __initdata = { | ||
| 114 | [IRQ_VDINT0] = 2, | ||
| 115 | [IRQ_VDINT1] = 6, | ||
| 116 | [IRQ_VDINT2] = 6, | ||
| 117 | [IRQ_HISTINT] = 6, | ||
| 118 | [IRQ_H3AINT] = 6, | ||
| 119 | [IRQ_PRVUINT] = 6, | ||
| 120 | [IRQ_RSZINT] = 6, | ||
| 121 | [7] = 7, | ||
| 122 | [IRQ_VENCINT] = 6, | ||
| 123 | [IRQ_ASQINT] = 6, | ||
| 124 | [IRQ_IMXINT] = 6, | ||
| 125 | [IRQ_VLCDINT] = 6, | ||
| 126 | [IRQ_USBINT] = 4, | ||
| 127 | [IRQ_EMACINT] = 4, | ||
| 128 | [14] = 7, | ||
| 129 | [15] = 7, | ||
| 130 | [IRQ_CCINT0] = 5, /* dma */ | ||
| 131 | [IRQ_CCERRINT] = 5, /* dma */ | ||
| 132 | [IRQ_TCERRINT0] = 5, /* dma */ | ||
| 133 | [IRQ_TCERRINT] = 5, /* dma */ | ||
| 134 | [IRQ_PSCIN] = 7, | ||
| 135 | [21] = 7, | ||
| 136 | [IRQ_IDE] = 4, | ||
| 137 | [23] = 7, | ||
| 138 | [IRQ_MBXINT] = 7, | ||
| 139 | [IRQ_MBRINT] = 7, | ||
| 140 | [IRQ_MMCINT] = 7, | ||
| 141 | [IRQ_SDIOINT] = 7, | ||
| 142 | [28] = 7, | ||
| 143 | [IRQ_DDRINT] = 7, | ||
| 144 | [IRQ_AEMIFINT] = 7, | ||
| 145 | [IRQ_VLQINT] = 4, | ||
| 146 | [IRQ_TINT0_TINT12] = 2, /* clockevent */ | ||
| 147 | [IRQ_TINT0_TINT34] = 2, /* clocksource */ | ||
| 148 | [IRQ_TINT1_TINT12] = 7, /* DSP timer */ | ||
| 149 | [IRQ_TINT1_TINT34] = 7, /* system tick */ | ||
| 150 | [IRQ_PWMINT0] = 7, | ||
| 151 | [IRQ_PWMINT1] = 7, | ||
| 152 | [IRQ_PWMINT2] = 7, | ||
| 153 | [IRQ_I2C] = 3, | ||
| 154 | [IRQ_UARTINT0] = 3, | ||
| 155 | [IRQ_UARTINT1] = 3, | ||
| 156 | [IRQ_UARTINT2] = 3, | ||
| 157 | [IRQ_SPINT0] = 3, | ||
| 158 | [IRQ_SPINT1] = 3, | ||
| 159 | [45] = 7, | ||
| 160 | [IRQ_DSP2ARM0] = 4, | ||
| 161 | [IRQ_DSP2ARM1] = 4, | ||
| 162 | [IRQ_GPIO0] = 7, | ||
| 163 | [IRQ_GPIO1] = 7, | ||
| 164 | [IRQ_GPIO2] = 7, | ||
| 165 | [IRQ_GPIO3] = 7, | ||
| 166 | [IRQ_GPIO4] = 7, | ||
| 167 | [IRQ_GPIO5] = 7, | ||
| 168 | [IRQ_GPIO6] = 7, | ||
| 169 | [IRQ_GPIO7] = 7, | ||
| 170 | [IRQ_GPIOBNK0] = 7, | ||
| 171 | [IRQ_GPIOBNK1] = 7, | ||
| 172 | [IRQ_GPIOBNK2] = 7, | ||
| 173 | [IRQ_GPIOBNK3] = 7, | ||
| 174 | [IRQ_GPIOBNK4] = 7, | ||
| 175 | [IRQ_COMMTX] = 7, | ||
| 176 | [IRQ_COMMRX] = 7, | ||
| 177 | [IRQ_EMUINT] = 7, | ||
| 178 | }; | ||
| 179 | |||
| 180 | /* ARM Interrupt Controller Initialization */ | ||
| 181 | void __init davinci_irq_init(void) | ||
| 182 | { | ||
| 183 | unsigned i; | ||
| 184 | const u8 *priority = default_priorities; | ||
| 185 | |||
| 186 | /* Clear all interrupt requests */ | ||
| 187 | davinci_irq_writel(~0x0, FIQ_REG0_OFFSET); | ||
| 188 | davinci_irq_writel(~0x0, FIQ_REG1_OFFSET); | ||
| 189 | davinci_irq_writel(~0x0, IRQ_REG0_OFFSET); | ||
| 190 | davinci_irq_writel(~0x0, IRQ_REG1_OFFSET); | ||
| 191 | |||
| 192 | /* Disable all interrupts */ | ||
| 193 | davinci_irq_writel(0x0, IRQ_ENT_REG0_OFFSET); | ||
| 194 | davinci_irq_writel(0x0, IRQ_ENT_REG1_OFFSET); | ||
| 195 | |||
| 196 | /* Interrupts disabled immediately, IRQ entry reflects all */ | ||
| 197 | davinci_irq_writel(0x0, IRQ_INCTL_REG_OFFSET); | ||
| 198 | |||
| 199 | /* we don't use the hardware vector table, just its entry addresses */ | ||
| 200 | davinci_irq_writel(0, IRQ_EABASE_REG_OFFSET); | ||
| 201 | |||
| 202 | /* Clear all interrupt requests */ | ||
| 203 | davinci_irq_writel(~0x0, FIQ_REG0_OFFSET); | ||
| 204 | davinci_irq_writel(~0x0, FIQ_REG1_OFFSET); | ||
| 205 | davinci_irq_writel(~0x0, IRQ_REG0_OFFSET); | ||
| 206 | davinci_irq_writel(~0x0, IRQ_REG1_OFFSET); | ||
| 207 | |||
| 208 | for (i = IRQ_INTPRI0_REG_OFFSET; i <= IRQ_INTPRI7_REG_OFFSET; i += 4) { | ||
| 209 | unsigned j; | ||
| 210 | u32 pri; | ||
| 211 | |||
| 212 | for (j = 0, pri = 0; j < 32; j += 4, priority++) | ||
| 213 | pri |= (*priority & 0x07) << j; | ||
| 214 | davinci_irq_writel(pri, i); | ||
| 215 | } | ||
| 216 | |||
| 217 | /* set up genirq dispatch for ARM INTC */ | ||
| 218 | for (i = 0; i < DAVINCI_N_AINTC_IRQ; i++) { | ||
| 219 | set_irq_chip(i, &davinci_irq_chip_0); | ||
| 220 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); | ||
| 221 | if (i != IRQ_TINT1_TINT34) | ||
| 222 | set_irq_handler(i, handle_edge_irq); | ||
| 223 | else | ||
| 224 | set_irq_handler(i, handle_level_irq); | ||
| 225 | } | ||
| 226 | } | ||
diff --git a/arch/arm/mach-davinci/psc.c b/arch/arm/mach-davinci/psc.c new file mode 100644 index 000000000000..e1b0050283a6 --- /dev/null +++ b/arch/arm/mach-davinci/psc.c | |||
| @@ -0,0 +1,113 @@ | |||
| 1 | /* | ||
| 2 | * TI DaVinci Power and Sleep Controller (PSC) | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Texas Instruments. | ||
| 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., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
| 19 | * | ||
| 20 | */ | ||
| 21 | #include <linux/kernel.h> | ||
| 22 | #include <linux/module.h> | ||
| 23 | #include <linux/init.h> | ||
| 24 | |||
| 25 | #include <asm/io.h> | ||
| 26 | #include <asm/hardware.h> | ||
| 27 | #include <asm/arch/psc.h> | ||
| 28 | |||
| 29 | #define PTCMD __REG(0x01C41120) | ||
| 30 | #define PDSTAT __REG(0x01C41200) | ||
| 31 | #define PDCTL1 __REG(0x01C41304) | ||
| 32 | #define EPCPR __REG(0x01C41070) | ||
| 33 | #define PTSTAT __REG(0x01C41128) | ||
| 34 | |||
| 35 | #define MDSTAT IO_ADDRESS(0x01C41800) | ||
| 36 | #define MDCTL IO_ADDRESS(0x01C41A00) | ||
| 37 | |||
| 38 | #define PINMUX0 __REG(0x01c40000) | ||
| 39 | #define PINMUX1 __REG(0x01c40004) | ||
| 40 | #define VDD3P3V_PWDN __REG(0x01C40048) | ||
| 41 | |||
| 42 | static void davinci_psc_mux(unsigned int id) | ||
| 43 | { | ||
| 44 | switch (id) { | ||
| 45 | case DAVINCI_LPSC_ATA: | ||
| 46 | PINMUX0 |= (1 << 17) | (1 << 16); | ||
| 47 | break; | ||
| 48 | case DAVINCI_LPSC_MMC_SD: | ||
| 49 | /* VDD power manupulations are done in U-Boot for CPMAC | ||
| 50 | * so applies to MMC as well | ||
| 51 | */ | ||
| 52 | /*Set up the pull regiter for MMC */ | ||
| 53 | VDD3P3V_PWDN = 0x0; | ||
| 54 | PINMUX1 &= (~(1 << 9)); | ||
| 55 | break; | ||
| 56 | case DAVINCI_LPSC_I2C: | ||
| 57 | PINMUX1 |= (1 << 7); | ||
| 58 | break; | ||
| 59 | case DAVINCI_LPSC_McBSP: | ||
| 60 | PINMUX1 |= (1 << 10); | ||
| 61 | break; | ||
| 62 | default: | ||
| 63 | break; | ||
| 64 | } | ||
| 65 | } | ||
| 66 | |||
| 67 | /* Enable or disable a PSC domain */ | ||
| 68 | void davinci_psc_config(unsigned int domain, unsigned int id, char enable) | ||
| 69 | { | ||
| 70 | volatile unsigned int *mdstat = (unsigned int *)((int)MDSTAT + 4 * id); | ||
| 71 | volatile unsigned int *mdctl = (unsigned int *)((int)MDCTL + 4 * id); | ||
| 72 | |||
| 73 | if (id < 0) | ||
| 74 | return; | ||
| 75 | |||
| 76 | if (enable) | ||
| 77 | *mdctl |= 0x00000003; /* Enable Module */ | ||
| 78 | else | ||
| 79 | *mdctl &= 0xFFFFFFF2; /* Disable Module */ | ||
| 80 | |||
| 81 | if ((PDSTAT & 0x00000001) == 0) { | ||
| 82 | PDCTL1 |= 0x1; | ||
| 83 | PTCMD = (1 << domain); | ||
| 84 | while ((((EPCPR >> domain) & 1) == 0)); | ||
| 85 | |||
| 86 | PDCTL1 |= 0x100; | ||
| 87 | while (!(((PTSTAT >> domain) & 1) == 0)); | ||
| 88 | } else { | ||
| 89 | PTCMD = (1 << domain); | ||
| 90 | while (!(((PTSTAT >> domain) & 1) == 0)); | ||
| 91 | } | ||
| 92 | |||
| 93 | if (enable) | ||
| 94 | while (!((*mdstat & 0x0000001F) == 0x3)); | ||
| 95 | else | ||
| 96 | while (!((*mdstat & 0x0000001F) == 0x2)); | ||
| 97 | |||
| 98 | if (enable) | ||
| 99 | davinci_psc_mux(id); | ||
| 100 | } | ||
| 101 | |||
| 102 | void __init davinci_psc_init(void) | ||
| 103 | { | ||
| 104 | davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_VPSSMSTR, 1); | ||
| 105 | davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_VPSSSLV, 1); | ||
| 106 | davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_TPCC, 1); | ||
| 107 | davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_TPTC0, 1); | ||
| 108 | davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_TPTC1, 1); | ||
| 109 | davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_GPIO, 1); | ||
| 110 | |||
| 111 | /* Turn on WatchDog timer LPSC. Needed for RESET to work */ | ||
| 112 | davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_TIMER2, 1); | ||
| 113 | } | ||
diff --git a/arch/arm/mach-davinci/serial.c b/arch/arm/mach-davinci/serial.c new file mode 100644 index 000000000000..8368c93c788d --- /dev/null +++ b/arch/arm/mach-davinci/serial.c | |||
| @@ -0,0 +1,96 @@ | |||
| 1 | /* | ||
| 2 | * TI DaVinci serial driver | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Texas Instruments. | ||
| 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., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
| 19 | * | ||
| 20 | */ | ||
| 21 | |||
| 22 | #include <linux/kernel.h> | ||
| 23 | #include <linux/init.h> | ||
| 24 | #include <linux/serial_8250.h> | ||
| 25 | #include <linux/serial_reg.h> | ||
| 26 | #include <linux/platform_device.h> | ||
| 27 | #include <linux/delay.h> | ||
| 28 | #include <linux/clk.h> | ||
| 29 | |||
| 30 | #include <asm/io.h> | ||
| 31 | #include <asm/irq.h> | ||
| 32 | #include <asm/hardware.h> | ||
| 33 | #include <asm/arch/serial.h> | ||
| 34 | #include <asm/arch/irqs.h> | ||
| 35 | |||
| 36 | #define UART_DAVINCI_PWREMU 0x0c | ||
| 37 | |||
| 38 | static inline unsigned int davinci_serial_in(struct plat_serial8250_port *up, | ||
| 39 | int offset) | ||
| 40 | { | ||
| 41 | offset <<= up->regshift; | ||
| 42 | return (unsigned int)__raw_readb(up->membase + offset); | ||
| 43 | } | ||
| 44 | |||
| 45 | static inline void davinci_serial_outp(struct plat_serial8250_port *p, | ||
| 46 | int offset, int value) | ||
| 47 | { | ||
| 48 | offset <<= p->regshift; | ||
| 49 | __raw_writeb(value, p->membase + offset); | ||
| 50 | } | ||
| 51 | |||
| 52 | static struct plat_serial8250_port serial_platform_data[] = { | ||
| 53 | { | ||
| 54 | .membase = (char *)IO_ADDRESS(DAVINCI_UART0_BASE), | ||
| 55 | .mapbase = (unsigned long)DAVINCI_UART0_BASE, | ||
| 56 | .irq = IRQ_UARTINT0, | ||
| 57 | .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, | ||
| 58 | .iotype = UPIO_MEM, | ||
| 59 | .regshift = 2, | ||
| 60 | .uartclk = 27000000, | ||
| 61 | }, | ||
| 62 | { | ||
| 63 | .flags = 0 | ||
| 64 | }, | ||
| 65 | }; | ||
| 66 | |||
| 67 | static struct platform_device serial_device = { | ||
| 68 | .name = "serial8250", | ||
| 69 | .id = PLAT8250_DEV_PLATFORM, | ||
| 70 | .dev = { | ||
| 71 | .platform_data = serial_platform_data, | ||
| 72 | }, | ||
| 73 | }; | ||
| 74 | |||
| 75 | static void __init davinci_serial_reset(struct plat_serial8250_port *p) | ||
| 76 | { | ||
| 77 | /* reset both transmitter and receiver: bits 14,13 = UTRST, URRST */ | ||
| 78 | unsigned int pwremu = 0; | ||
| 79 | |||
| 80 | davinci_serial_outp(p, UART_IER, 0); /* disable all interrupts */ | ||
| 81 | |||
| 82 | davinci_serial_outp(p, UART_DAVINCI_PWREMU, pwremu); | ||
| 83 | mdelay(10); | ||
| 84 | |||
| 85 | pwremu |= (0x3 << 13); | ||
| 86 | pwremu |= 0x1; | ||
| 87 | davinci_serial_outp(p, UART_DAVINCI_PWREMU, pwremu); | ||
| 88 | } | ||
| 89 | |||
| 90 | static int __init davinci_init(void) | ||
| 91 | { | ||
| 92 | davinci_serial_reset(&serial_platform_data[0]); | ||
| 93 | return platform_device_register(&serial_device); | ||
| 94 | } | ||
| 95 | |||
| 96 | arch_initcall(davinci_init); | ||
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c new file mode 100644 index 000000000000..4d8425de6922 --- /dev/null +++ b/arch/arm/mach-davinci/time.c | |||
| @@ -0,0 +1,372 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci timer subsystem | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/types.h> | ||
| 14 | #include <linux/interrupt.h> | ||
| 15 | #include <linux/clocksource.h> | ||
| 16 | #include <linux/clockchips.h> | ||
| 17 | #include <linux/spinlock.h> | ||
| 18 | |||
| 19 | #include <asm/io.h> | ||
| 20 | #include <asm/hardware.h> | ||
| 21 | #include <asm/system.h> | ||
| 22 | #include <asm/irq.h> | ||
| 23 | #include <asm/mach/irq.h> | ||
| 24 | #include <asm/mach/time.h> | ||
| 25 | #include <asm/errno.h> | ||
| 26 | #include <asm/arch/io.h> | ||
| 27 | |||
| 28 | static struct clock_event_device clockevent_davinci; | ||
| 29 | |||
| 30 | #define DAVINCI_TIMER0_BASE (IO_PHYS + 0x21400) | ||
| 31 | #define DAVINCI_TIMER1_BASE (IO_PHYS + 0x21800) | ||
| 32 | #define DAVINCI_WDOG_BASE (IO_PHYS + 0x21C00) | ||
| 33 | |||
| 34 | enum { | ||
| 35 | T0_BOT = 0, T0_TOP, T1_BOT, T1_TOP, NUM_TIMERS, | ||
| 36 | }; | ||
| 37 | |||
| 38 | #define IS_TIMER1(id) (id & 0x2) | ||
| 39 | #define IS_TIMER0(id) (!IS_TIMER1(id)) | ||
| 40 | #define IS_TIMER_TOP(id) ((id & 0x1)) | ||
| 41 | #define IS_TIMER_BOT(id) (!IS_TIMER_TOP(id)) | ||
| 42 | |||
| 43 | static int timer_irqs[NUM_TIMERS] = { | ||
| 44 | IRQ_TINT0_TINT12, | ||
| 45 | IRQ_TINT0_TINT34, | ||
| 46 | IRQ_TINT1_TINT12, | ||
| 47 | IRQ_TINT1_TINT34, | ||
| 48 | }; | ||
| 49 | |||
| 50 | /* | ||
| 51 | * This driver configures the 2 64-bit count-up timers as 4 independent | ||
| 52 | * 32-bit count-up timers used as follows: | ||
| 53 | * | ||
| 54 | * T0_BOT: Timer 0, bottom: clockevent source for hrtimers | ||
| 55 | * T0_TOP: Timer 0, top : clocksource for generic timekeeping | ||
| 56 | * T1_BOT: Timer 1, bottom: (used by DSP in TI DSPLink code) | ||
| 57 | * T1_TOP: Timer 1, top : <unused> | ||
| 58 | */ | ||
| 59 | #define TID_CLOCKEVENT T0_BOT | ||
| 60 | #define TID_CLOCKSOURCE T0_TOP | ||
| 61 | |||
| 62 | /* Timer register offsets */ | ||
| 63 | #define PID12 0x0 | ||
| 64 | #define TIM12 0x10 | ||
| 65 | #define TIM34 0x14 | ||
| 66 | #define PRD12 0x18 | ||
| 67 | #define PRD34 0x1c | ||
| 68 | #define TCR 0x20 | ||
| 69 | #define TGCR 0x24 | ||
| 70 | #define WDTCR 0x28 | ||
| 71 | |||
| 72 | /* Timer register bitfields */ | ||
| 73 | #define TCR_ENAMODE_DISABLE 0x0 | ||
| 74 | #define TCR_ENAMODE_ONESHOT 0x1 | ||
| 75 | #define TCR_ENAMODE_PERIODIC 0x2 | ||
| 76 | #define TCR_ENAMODE_MASK 0x3 | ||
| 77 | |||
| 78 | #define TGCR_TIMMODE_SHIFT 2 | ||
| 79 | #define TGCR_TIMMODE_64BIT_GP 0x0 | ||
| 80 | #define TGCR_TIMMODE_32BIT_UNCHAINED 0x1 | ||
| 81 | #define TGCR_TIMMODE_64BIT_WDOG 0x2 | ||
| 82 | #define TGCR_TIMMODE_32BIT_CHAINED 0x3 | ||
| 83 | |||
| 84 | #define TGCR_TIM12RS_SHIFT 0 | ||
| 85 | #define TGCR_TIM34RS_SHIFT 1 | ||
| 86 | #define TGCR_RESET 0x0 | ||
| 87 | #define TGCR_UNRESET 0x1 | ||
| 88 | #define TGCR_RESET_MASK 0x3 | ||
| 89 | |||
| 90 | #define WDTCR_WDEN_SHIFT 14 | ||
| 91 | #define WDTCR_WDEN_DISABLE 0x0 | ||
| 92 | #define WDTCR_WDEN_ENABLE 0x1 | ||
| 93 | #define WDTCR_WDKEY_SHIFT 16 | ||
| 94 | #define WDTCR_WDKEY_SEQ0 0xa5c6 | ||
| 95 | #define WDTCR_WDKEY_SEQ1 0xda7e | ||
| 96 | |||
| 97 | struct timer_s { | ||
| 98 | char *name; | ||
| 99 | unsigned int id; | ||
| 100 | unsigned long period; | ||
| 101 | unsigned long opts; | ||
| 102 | unsigned long reg_base; | ||
| 103 | unsigned long tim_reg; | ||
| 104 | unsigned long prd_reg; | ||
| 105 | unsigned long enamode_shift; | ||
| 106 | struct irqaction irqaction; | ||
| 107 | }; | ||
| 108 | static struct timer_s timers[]; | ||
| 109 | |||
| 110 | /* values for 'opts' field of struct timer_s */ | ||
| 111 | #define TIMER_OPTS_DISABLED 0x00 | ||
| 112 | #define TIMER_OPTS_ONESHOT 0x01 | ||
| 113 | #define TIMER_OPTS_PERIODIC 0x02 | ||
| 114 | |||
| 115 | static int timer32_config(struct timer_s *t) | ||
| 116 | { | ||
| 117 | u32 tcr = davinci_readl(t->reg_base + TCR); | ||
| 118 | |||
| 119 | /* disable timer */ | ||
| 120 | tcr &= ~(TCR_ENAMODE_MASK << t->enamode_shift); | ||
| 121 | davinci_writel(tcr, t->reg_base + TCR); | ||
| 122 | |||
| 123 | /* reset counter to zero, set new period */ | ||
| 124 | davinci_writel(0, t->tim_reg); | ||
| 125 | davinci_writel(t->period, t->prd_reg); | ||
| 126 | |||
| 127 | /* Set enable mode */ | ||
| 128 | if (t->opts & TIMER_OPTS_ONESHOT) { | ||
| 129 | tcr |= TCR_ENAMODE_ONESHOT << t->enamode_shift; | ||
| 130 | } else if (t->opts & TIMER_OPTS_PERIODIC) { | ||
| 131 | tcr |= TCR_ENAMODE_PERIODIC << t->enamode_shift; | ||
| 132 | } | ||
| 133 | |||
| 134 | davinci_writel(tcr, t->reg_base + TCR); | ||
| 135 | return 0; | ||
| 136 | } | ||
| 137 | |||
| 138 | static inline u32 timer32_read(struct timer_s *t) | ||
| 139 | { | ||
| 140 | return davinci_readl(t->tim_reg); | ||
| 141 | } | ||
| 142 | |||
| 143 | static irqreturn_t timer_interrupt(int irq, void *dev_id) | ||
| 144 | { | ||
| 145 | struct clock_event_device *evt = &clockevent_davinci; | ||
| 146 | |||
| 147 | evt->event_handler(evt); | ||
| 148 | return IRQ_HANDLED; | ||
| 149 | } | ||
| 150 | |||
| 151 | /* called when 32-bit counter wraps */ | ||
| 152 | static irqreturn_t freerun_interrupt(int irq, void *dev_id) | ||
| 153 | { | ||
| 154 | return IRQ_HANDLED; | ||
| 155 | } | ||
| 156 | |||
| 157 | static struct timer_s timers[] = { | ||
| 158 | [TID_CLOCKEVENT] = { | ||
| 159 | .name = "clockevent", | ||
| 160 | .opts = TIMER_OPTS_DISABLED, | ||
| 161 | .irqaction = { | ||
| 162 | .flags = IRQF_DISABLED | IRQF_TIMER, | ||
| 163 | .handler = timer_interrupt, | ||
| 164 | } | ||
| 165 | }, | ||
| 166 | [TID_CLOCKSOURCE] = { | ||
| 167 | .name = "free-run counter", | ||
| 168 | .period = ~0, | ||
| 169 | .opts = TIMER_OPTS_PERIODIC, | ||
| 170 | .irqaction = { | ||
| 171 | .flags = IRQF_DISABLED | IRQF_TIMER, | ||
| 172 | .handler = freerun_interrupt, | ||
| 173 | } | ||
| 174 | }, | ||
| 175 | }; | ||
| 176 | |||
| 177 | static void __init timer_init(void) | ||
| 178 | { | ||
| 179 | u32 bases[] = {DAVINCI_TIMER0_BASE, DAVINCI_TIMER1_BASE}; | ||
| 180 | int i; | ||
| 181 | |||
| 182 | /* Global init of each 64-bit timer as a whole */ | ||
| 183 | for(i=0; i<2; i++) { | ||
| 184 | u32 tgcr, base = bases[i]; | ||
| 185 | |||
| 186 | /* Disabled, Internal clock source */ | ||
| 187 | davinci_writel(0, base + TCR); | ||
| 188 | |||
| 189 | /* reset both timers, no pre-scaler for timer34 */ | ||
| 190 | tgcr = 0; | ||
| 191 | davinci_writel(tgcr, base + TGCR); | ||
| 192 | |||
| 193 | /* Set both timers to unchained 32-bit */ | ||
| 194 | tgcr = TGCR_TIMMODE_32BIT_UNCHAINED << TGCR_TIMMODE_SHIFT; | ||
| 195 | davinci_writel(tgcr, base + TGCR); | ||
| 196 | |||
| 197 | /* Unreset timers */ | ||
| 198 | tgcr |= (TGCR_UNRESET << TGCR_TIM12RS_SHIFT) | | ||
| 199 | (TGCR_UNRESET << TGCR_TIM34RS_SHIFT); | ||
| 200 | davinci_writel(tgcr, base + TGCR); | ||
| 201 | |||
| 202 | /* Init both counters to zero */ | ||
| 203 | davinci_writel(0, base + TIM12); | ||
| 204 | davinci_writel(0, base + TIM34); | ||
| 205 | } | ||
| 206 | |||
| 207 | /* Init of each timer as a 32-bit timer */ | ||
| 208 | for (i=0; i< ARRAY_SIZE(timers); i++) { | ||
| 209 | struct timer_s *t = &timers[i]; | ||
| 210 | |||
| 211 | if (t->name) { | ||
| 212 | t->id = i; | ||
| 213 | t->reg_base = (IS_TIMER1(t->id) ? | ||
| 214 | DAVINCI_TIMER1_BASE : DAVINCI_TIMER0_BASE); | ||
| 215 | |||
| 216 | if (IS_TIMER_BOT(t->id)) { | ||
| 217 | t->enamode_shift = 6; | ||
| 218 | t->tim_reg = t->reg_base + TIM12; | ||
| 219 | t->prd_reg = t->reg_base + PRD12; | ||
| 220 | } else { | ||
| 221 | t->enamode_shift = 22; | ||
| 222 | t->tim_reg = t->reg_base + TIM34; | ||
| 223 | t->prd_reg = t->reg_base + PRD34; | ||
| 224 | } | ||
| 225 | |||
| 226 | /* Register interrupt */ | ||
| 227 | t->irqaction.name = t->name; | ||
| 228 | t->irqaction.dev_id = (void *)t; | ||
| 229 | if (t->irqaction.handler != NULL) { | ||
| 230 | setup_irq(timer_irqs[t->id], &t->irqaction); | ||
| 231 | } | ||
| 232 | |||
| 233 | timer32_config(&timers[i]); | ||
| 234 | } | ||
| 235 | } | ||
| 236 | } | ||
| 237 | |||
| 238 | /* | ||
| 239 | * clocksource | ||
| 240 | */ | ||
| 241 | static cycle_t read_cycles(void) | ||
| 242 | { | ||
| 243 | struct timer_s *t = &timers[TID_CLOCKSOURCE]; | ||
| 244 | |||
| 245 | return (cycles_t)timer32_read(t); | ||
| 246 | } | ||
| 247 | |||
| 248 | static struct clocksource clocksource_davinci = { | ||
| 249 | .name = "timer0_1", | ||
| 250 | .rating = 300, | ||
| 251 | .read = read_cycles, | ||
| 252 | .mask = CLOCKSOURCE_MASK(32), | ||
| 253 | .shift = 24, | ||
| 254 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
| 255 | }; | ||
| 256 | |||
| 257 | /* | ||
| 258 | * clockevent | ||
| 259 | */ | ||
| 260 | static int davinci_set_next_event(unsigned long cycles, | ||
| 261 | struct clock_event_device *evt) | ||
| 262 | { | ||
| 263 | struct timer_s *t = &timers[TID_CLOCKEVENT]; | ||
| 264 | |||
| 265 | t->period = cycles; | ||
| 266 | timer32_config(t); | ||
| 267 | return 0; | ||
| 268 | } | ||
| 269 | |||
| 270 | static void davinci_set_mode(enum clock_event_mode mode, | ||
| 271 | struct clock_event_device *evt) | ||
| 272 | { | ||
| 273 | struct timer_s *t = &timers[TID_CLOCKEVENT]; | ||
| 274 | |||
| 275 | switch (mode) { | ||
| 276 | case CLOCK_EVT_MODE_PERIODIC: | ||
| 277 | t->period = CLOCK_TICK_RATE / (HZ); | ||
| 278 | t->opts = TIMER_OPTS_PERIODIC; | ||
| 279 | timer32_config(t); | ||
| 280 | break; | ||
| 281 | case CLOCK_EVT_MODE_ONESHOT: | ||
| 282 | t->opts = TIMER_OPTS_ONESHOT; | ||
| 283 | break; | ||
| 284 | case CLOCK_EVT_MODE_UNUSED: | ||
| 285 | case CLOCK_EVT_MODE_SHUTDOWN: | ||
| 286 | t->opts = TIMER_OPTS_DISABLED; | ||
| 287 | break; | ||
| 288 | } | ||
| 289 | } | ||
| 290 | |||
| 291 | static struct clock_event_device clockevent_davinci = { | ||
| 292 | .name = "timer0_0", | ||
| 293 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, | ||
| 294 | .shift = 32, | ||
| 295 | .set_next_event = davinci_set_next_event, | ||
| 296 | .set_mode = davinci_set_mode, | ||
| 297 | }; | ||
| 298 | |||
| 299 | |||
| 300 | static void __init davinci_timer_init(void) | ||
| 301 | { | ||
| 302 | static char err[] __initdata = KERN_ERR | ||
| 303 | "%s: can't register clocksource!\n"; | ||
| 304 | |||
| 305 | /* init timer hw */ | ||
| 306 | timer_init(); | ||
| 307 | |||
| 308 | /* setup clocksource */ | ||
| 309 | clocksource_davinci.mult = | ||
| 310 | clocksource_khz2mult(CLOCK_TICK_RATE/1000, | ||
| 311 | clocksource_davinci.shift); | ||
| 312 | if (clocksource_register(&clocksource_davinci)) | ||
| 313 | printk(err, clocksource_davinci.name); | ||
| 314 | |||
| 315 | /* setup clockevent */ | ||
| 316 | clockevent_davinci.mult = div_sc(CLOCK_TICK_RATE, NSEC_PER_SEC, | ||
| 317 | clockevent_davinci.shift); | ||
| 318 | clockevent_davinci.max_delta_ns = | ||
| 319 | clockevent_delta2ns(0xfffffffe, &clockevent_davinci); | ||
| 320 | clockevent_davinci.min_delta_ns = | ||
| 321 | clockevent_delta2ns(1, &clockevent_davinci); | ||
| 322 | |||
| 323 | clockevent_davinci.cpumask = cpumask_of_cpu(0); | ||
| 324 | clockevents_register_device(&clockevent_davinci); | ||
| 325 | } | ||
| 326 | |||
| 327 | struct sys_timer davinci_timer = { | ||
| 328 | .init = davinci_timer_init, | ||
| 329 | }; | ||
| 330 | |||
| 331 | |||
| 332 | /* reset board using watchdog timer */ | ||
| 333 | void davinci_watchdog_reset(void) { | ||
| 334 | u32 tgcr, wdtcr, base = DAVINCI_WDOG_BASE; | ||
| 335 | |||
| 336 | /* disable, internal clock source */ | ||
| 337 | davinci_writel(0, base + TCR); | ||
| 338 | |||
| 339 | /* reset timer, set mode to 64-bit watchdog, and unreset */ | ||
| 340 | tgcr = 0; | ||
| 341 | davinci_writel(tgcr, base + TCR); | ||
| 342 | tgcr = TGCR_TIMMODE_64BIT_WDOG << TGCR_TIMMODE_SHIFT; | ||
| 343 | tgcr |= (TGCR_UNRESET << TGCR_TIM12RS_SHIFT) | | ||
| 344 | (TGCR_UNRESET << TGCR_TIM34RS_SHIFT); | ||
| 345 | davinci_writel(tgcr, base + TCR); | ||
| 346 | |||
| 347 | /* clear counter and period regs */ | ||
| 348 | davinci_writel(0, base + TIM12); | ||
| 349 | davinci_writel(0, base + TIM34); | ||
| 350 | davinci_writel(0, base + PRD12); | ||
| 351 | davinci_writel(0, base + PRD34); | ||
| 352 | |||
| 353 | /* enable */ | ||
| 354 | wdtcr = davinci_readl(base + WDTCR); | ||
| 355 | wdtcr |= WDTCR_WDEN_ENABLE << WDTCR_WDEN_SHIFT; | ||
| 356 | davinci_writel(wdtcr, base + WDTCR); | ||
| 357 | |||
| 358 | /* put watchdog in pre-active state */ | ||
| 359 | wdtcr = (WDTCR_WDKEY_SEQ0 << WDTCR_WDKEY_SHIFT) | | ||
| 360 | (WDTCR_WDEN_ENABLE << WDTCR_WDEN_SHIFT); | ||
| 361 | davinci_writel(wdtcr, base + WDTCR); | ||
| 362 | |||
| 363 | /* put watchdog in active state */ | ||
| 364 | wdtcr = (WDTCR_WDKEY_SEQ1 << WDTCR_WDKEY_SHIFT) | | ||
| 365 | (WDTCR_WDEN_ENABLE << WDTCR_WDEN_SHIFT); | ||
| 366 | davinci_writel(wdtcr, base + WDTCR); | ||
| 367 | |||
| 368 | /* write an invalid value to the WDKEY field to trigger | ||
| 369 | * a watchdog reset */ | ||
| 370 | wdtcr = 0x00004000; | ||
| 371 | davinci_writel(wdtcr, base + WDTCR); | ||
| 372 | } | ||
diff --git a/arch/arm/mach-ebsa110/io.c b/arch/arm/mach-ebsa110/io.c index bbf0d332407e..6b2380e153ef 100644 --- a/arch/arm/mach-ebsa110/io.c +++ b/arch/arm/mach-ebsa110/io.c | |||
| @@ -102,7 +102,7 @@ EXPORT_SYMBOL(__readb); | |||
| 102 | EXPORT_SYMBOL(__readw); | 102 | EXPORT_SYMBOL(__readw); |
| 103 | EXPORT_SYMBOL(__readl); | 103 | EXPORT_SYMBOL(__readl); |
| 104 | 104 | ||
| 105 | void readsw(void __iomem *addr, void *data, int len) | 105 | void readsw(const void __iomem *addr, void *data, int len) |
| 106 | { | 106 | { |
| 107 | void __iomem *a = __isamem_convert_addr(addr); | 107 | void __iomem *a = __isamem_convert_addr(addr); |
| 108 | 108 | ||
| @@ -112,7 +112,7 @@ void readsw(void __iomem *addr, void *data, int len) | |||
| 112 | } | 112 | } |
| 113 | EXPORT_SYMBOL(readsw); | 113 | EXPORT_SYMBOL(readsw); |
| 114 | 114 | ||
| 115 | void readsl(void __iomem *addr, void *data, int len) | 115 | void readsl(const void __iomem *addr, void *data, int len) |
| 116 | { | 116 | { |
| 117 | void __iomem *a = __isamem_convert_addr(addr); | 117 | void __iomem *a = __isamem_convert_addr(addr); |
| 118 | 118 | ||
| @@ -157,7 +157,7 @@ EXPORT_SYMBOL(__writeb); | |||
| 157 | EXPORT_SYMBOL(__writew); | 157 | EXPORT_SYMBOL(__writew); |
| 158 | EXPORT_SYMBOL(__writel); | 158 | EXPORT_SYMBOL(__writel); |
| 159 | 159 | ||
| 160 | void writesw(void __iomem *addr, void *data, int len) | 160 | void writesw(void __iomem *addr, const void *data, int len) |
| 161 | { | 161 | { |
| 162 | void __iomem *a = __isamem_convert_addr(addr); | 162 | void __iomem *a = __isamem_convert_addr(addr); |
| 163 | 163 | ||
| @@ -167,7 +167,7 @@ void writesw(void __iomem *addr, void *data, int len) | |||
| 167 | } | 167 | } |
| 168 | EXPORT_SYMBOL(writesw); | 168 | EXPORT_SYMBOL(writesw); |
| 169 | 169 | ||
| 170 | void writesl(void __iomem *addr, void *data, int len) | 170 | void writesl(void __iomem *addr, const void *data, int len) |
| 171 | { | 171 | { |
| 172 | void __iomem *a = __isamem_convert_addr(addr); | 172 | void __iomem *a = __isamem_convert_addr(addr); |
| 173 | 173 | ||
diff --git a/arch/arm/mach-iop13xx/Makefile b/arch/arm/mach-iop13xx/Makefile index da1609dc0dee..cad015fee12f 100644 --- a/arch/arm/mach-iop13xx/Makefile +++ b/arch/arm/mach-iop13xx/Makefile | |||
| @@ -10,3 +10,4 @@ obj-$(CONFIG_ARCH_IOP13XX) += io.o | |||
| 10 | obj-$(CONFIG_ARCH_IOP13XX) += tpmi.o | 10 | obj-$(CONFIG_ARCH_IOP13XX) += tpmi.o |
| 11 | obj-$(CONFIG_MACH_IQ81340SC) += iq81340sc.o | 11 | obj-$(CONFIG_MACH_IQ81340SC) += iq81340sc.o |
| 12 | obj-$(CONFIG_MACH_IQ81340MC) += iq81340mc.o | 12 | obj-$(CONFIG_MACH_IQ81340MC) += iq81340mc.o |
| 13 | obj-$(CONFIG_PCI_MSI) += msi.o | ||
diff --git a/arch/arm/mach-iop13xx/irq.c b/arch/arm/mach-iop13xx/irq.c index b2eb0b961031..5791addd436b 100644 --- a/arch/arm/mach-iop13xx/irq.c +++ b/arch/arm/mach-iop13xx/irq.c | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #include <asm/hardware.h> | 26 | #include <asm/hardware.h> |
| 27 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
| 28 | #include <asm/arch/irqs.h> | 28 | #include <asm/arch/irqs.h> |
| 29 | #include <asm/arch/msi.h> | ||
| 29 | 30 | ||
| 30 | /* INTCTL0 CP6 R0 Page 4 | 31 | /* INTCTL0 CP6 R0 Page 4 |
| 31 | */ | 32 | */ |
| @@ -258,7 +259,7 @@ void __init iop13xx_init_irq(void) | |||
| 258 | write_intbase(INTBASE); | 259 | write_intbase(INTBASE); |
| 259 | write_intsize(INTSIZE_4); | 260 | write_intsize(INTSIZE_4); |
| 260 | 261 | ||
| 261 | for(i = 0; i < NR_IOP13XX_IRQS; i++) { | 262 | for(i = 0; i <= IRQ_IOP13XX_HPI; i++) { |
| 262 | if (i < 32) | 263 | if (i < 32) |
| 263 | set_irq_chip(i, &iop13xx_irqchip1); | 264 | set_irq_chip(i, &iop13xx_irqchip1); |
| 264 | else if (i < 64) | 265 | else if (i < 64) |
| @@ -271,4 +272,6 @@ void __init iop13xx_init_irq(void) | |||
| 271 | set_irq_handler(i, handle_level_irq); | 272 | set_irq_handler(i, handle_level_irq); |
| 272 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); | 273 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); |
| 273 | } | 274 | } |
| 275 | |||
| 276 | iop13xx_msi_init(); | ||
| 274 | } | 277 | } |
diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c new file mode 100644 index 000000000000..2d2369302220 --- /dev/null +++ b/arch/arm/mach-iop13xx/msi.c | |||
| @@ -0,0 +1,194 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-iop13xx/msi.c | ||
| 3 | * | ||
| 4 | * PCI MSI support for the iop13xx processor | ||
| 5 | * | ||
| 6 | * Copyright (c) 2006, Intel Corporation. | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify it | ||
| 9 | * under the terms and conditions of the GNU General Public License, | ||
| 10 | * version 2, as published by the Free Software Foundation. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
| 13 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 14 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| 15 | * more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License along with | ||
| 18 | * this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
| 19 | * Place - Suite 330, Boston, MA 02111-1307 USA. | ||
| 20 | * | ||
| 21 | */ | ||
| 22 | #include <linux/pci.h> | ||
| 23 | #include <linux/msi.h> | ||
| 24 | #include <asm/mach/irq.h> | ||
| 25 | #include <asm/irq.h> | ||
| 26 | |||
| 27 | |||
| 28 | #define IOP13XX_NUM_MSI_IRQS 128 | ||
| 29 | static DECLARE_BITMAP(msi_irq_in_use, IOP13XX_NUM_MSI_IRQS); | ||
| 30 | |||
| 31 | /* IMIPR0 CP6 R8 Page 1 | ||
| 32 | */ | ||
| 33 | static inline u32 read_imipr_0(void) | ||
| 34 | { | ||
| 35 | u32 val; | ||
| 36 | asm volatile("mrc p6, 0, %0, c8, c1, 0":"=r" (val)); | ||
| 37 | return val; | ||
| 38 | } | ||
| 39 | static inline void write_imipr_0(u32 val) | ||
| 40 | { | ||
| 41 | asm volatile("mcr p6, 0, %0, c8, c1, 0"::"r" (val)); | ||
| 42 | } | ||
| 43 | |||
| 44 | /* IMIPR1 CP6 R9 Page 1 | ||
| 45 | */ | ||
| 46 | static inline u32 read_imipr_1(void) | ||
| 47 | { | ||
| 48 | u32 val; | ||
| 49 | asm volatile("mrc p6, 0, %0, c9, c1, 0":"=r" (val)); | ||
| 50 | return val; | ||
| 51 | } | ||
| 52 | static inline void write_imipr_1(u32 val) | ||
| 53 | { | ||
| 54 | asm volatile("mcr p6, 0, %0, c9, c1, 0"::"r" (val)); | ||
| 55 | } | ||
| 56 | |||
| 57 | /* IMIPR2 CP6 R10 Page 1 | ||
| 58 | */ | ||
| 59 | static inline u32 read_imipr_2(void) | ||
| 60 | { | ||
| 61 | u32 val; | ||
| 62 | asm volatile("mrc p6, 0, %0, c10, c1, 0":"=r" (val)); | ||
| 63 | return val; | ||
| 64 | } | ||
| 65 | static inline void write_imipr_2(u32 val) | ||
| 66 | { | ||
| 67 | asm volatile("mcr p6, 0, %0, c10, c1, 0"::"r" (val)); | ||
| 68 | } | ||
| 69 | |||
| 70 | /* IMIPR3 CP6 R11 Page 1 | ||
| 71 | */ | ||
| 72 | static inline u32 read_imipr_3(void) | ||
| 73 | { | ||
| 74 | u32 val; | ||
| 75 | asm volatile("mrc p6, 0, %0, c11, c1, 0":"=r" (val)); | ||
| 76 | return val; | ||
| 77 | } | ||
| 78 | static inline void write_imipr_3(u32 val) | ||
| 79 | { | ||
| 80 | asm volatile("mcr p6, 0, %0, c11, c1, 0"::"r" (val)); | ||
| 81 | } | ||
| 82 | |||
| 83 | static u32 (*read_imipr[])(void) = { | ||
| 84 | read_imipr_0, | ||
| 85 | read_imipr_1, | ||
| 86 | read_imipr_2, | ||
| 87 | read_imipr_3, | ||
| 88 | }; | ||
| 89 | |||
| 90 | static void (*write_imipr[])(u32) = { | ||
| 91 | write_imipr_0, | ||
| 92 | write_imipr_1, | ||
| 93 | write_imipr_2, | ||
| 94 | write_imipr_3, | ||
| 95 | }; | ||
| 96 | |||
| 97 | static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc) | ||
| 98 | { | ||
| 99 | int i, j; | ||
| 100 | unsigned long status; | ||
| 101 | |||
| 102 | /* read IMIPR registers and find any active interrupts, | ||
| 103 | * then call ISR for each active interrupt | ||
| 104 | */ | ||
| 105 | for (i = 0; i < ARRAY_SIZE(read_imipr); i++) { | ||
| 106 | status = (read_imipr[i])(); | ||
| 107 | if (!status) | ||
| 108 | continue; | ||
| 109 | |||
| 110 | do { | ||
| 111 | j = find_first_bit(&status, 32); | ||
| 112 | (write_imipr[i])(1 << j); /* write back to clear bit */ | ||
| 113 | desc = irq_desc + IRQ_IOP13XX_MSI_0 + j + (32*i); | ||
| 114 | desc_handle_irq(IRQ_IOP13XX_MSI_0 + j + (32*i), desc); | ||
| 115 | status = (read_imipr[i])(); | ||
| 116 | } while (status); | ||
| 117 | } | ||
| 118 | } | ||
| 119 | |||
| 120 | void __init iop13xx_msi_init(void) | ||
| 121 | { | ||
| 122 | set_irq_chained_handler(IRQ_IOP13XX_INBD_MSI, iop13xx_msi_handler); | ||
| 123 | } | ||
| 124 | |||
| 125 | /* | ||
| 126 | * Dynamic irq allocate and deallocation | ||
| 127 | */ | ||
| 128 | int create_irq(void) | ||
| 129 | { | ||
| 130 | int irq, pos; | ||
| 131 | |||
| 132 | again: | ||
| 133 | pos = find_first_zero_bit(msi_irq_in_use, IOP13XX_NUM_MSI_IRQS); | ||
| 134 | irq = IRQ_IOP13XX_MSI_0 + pos; | ||
| 135 | if (irq > NR_IRQS) | ||
| 136 | return -ENOSPC; | ||
| 137 | /* test_and_set_bit operates on 32-bits at a time */ | ||
| 138 | if (test_and_set_bit(pos, msi_irq_in_use)) | ||
| 139 | goto again; | ||
| 140 | |||
| 141 | dynamic_irq_init(irq); | ||
| 142 | |||
| 143 | return irq; | ||
| 144 | } | ||
| 145 | |||
| 146 | void destroy_irq(unsigned int irq) | ||
| 147 | { | ||
| 148 | int pos = irq - IRQ_IOP13XX_MSI_0; | ||
| 149 | |||
| 150 | dynamic_irq_cleanup(irq); | ||
| 151 | |||
| 152 | clear_bit(pos, msi_irq_in_use); | ||
| 153 | } | ||
| 154 | |||
| 155 | void arch_teardown_msi_irq(unsigned int irq) | ||
| 156 | { | ||
| 157 | destroy_irq(irq); | ||
| 158 | } | ||
| 159 | |||
| 160 | static void iop13xx_msi_nop(unsigned int irq) | ||
| 161 | { | ||
| 162 | return; | ||
| 163 | } | ||
| 164 | |||
| 165 | static struct irq_chip iop13xx_msi_chip = { | ||
| 166 | .name = "PCI-MSI", | ||
| 167 | .ack = iop13xx_msi_nop, | ||
| 168 | .enable = unmask_msi_irq, | ||
| 169 | .disable = mask_msi_irq, | ||
| 170 | .mask = mask_msi_irq, | ||
| 171 | .unmask = unmask_msi_irq, | ||
| 172 | }; | ||
| 173 | |||
| 174 | int arch_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc) | ||
| 175 | { | ||
| 176 | int id, irq = create_irq(); | ||
| 177 | struct msi_msg msg; | ||
| 178 | |||
| 179 | if (irq < 0) | ||
| 180 | return irq; | ||
| 181 | |||
| 182 | set_irq_msi(irq, desc); | ||
| 183 | |||
| 184 | msg.address_hi = 0x0; | ||
| 185 | msg.address_lo = IOP13XX_MU_MIMR_PCI; | ||
| 186 | |||
| 187 | id = iop13xx_cpu_id(); | ||
| 188 | msg.data = (id << IOP13XX_MU_MIMR_CORE_SELECT) | (irq & 0x7f); | ||
| 189 | |||
| 190 | write_msi_msg(irq, &msg); | ||
| 191 | set_irq_chip_and_handler(irq, &iop13xx_msi_chip, handle_simple_irq); | ||
| 192 | |||
| 193 | return irq; | ||
| 194 | } | ||
diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c index d1d0d32ca77c..1c9e94c38b7e 100644 --- a/arch/arm/mach-iop13xx/pci.c +++ b/arch/arm/mach-iop13xx/pci.c | |||
| @@ -559,6 +559,14 @@ void __init iop13xx_atue_setup(void) | |||
| 559 | int func = iop13xx_atu_function(IOP13XX_INIT_ATU_ATUE); | 559 | int func = iop13xx_atu_function(IOP13XX_INIT_ATU_ATUE); |
| 560 | u32 reg_val; | 560 | u32 reg_val; |
| 561 | 561 | ||
| 562 | #ifdef CONFIG_PCI_MSI | ||
| 563 | /* BAR 0 (inbound msi window) */ | ||
| 564 | __raw_writel(IOP13XX_MU_BASE_PHYS, IOP13XX_MU_MUBAR); | ||
| 565 | __raw_writel(~(IOP13XX_MU_WINDOW_SIZE - 1), IOP13XX_ATUE_IALR0); | ||
| 566 | __raw_writel(IOP13XX_MU_BASE_PHYS, IOP13XX_ATUE_IATVR0); | ||
| 567 | __raw_writel(IOP13XX_MU_BASE_PCI, IOP13XX_ATUE_IABAR0); | ||
| 568 | #endif | ||
| 569 | |||
| 562 | /* BAR 1 (1:1 mapping with Physical RAM) */ | 570 | /* BAR 1 (1:1 mapping with Physical RAM) */ |
| 563 | /* Set limit and enable */ | 571 | /* Set limit and enable */ |
| 564 | __raw_writel(~(IOP13XX_MAX_RAM_SIZE - PHYS_OFFSET - 1) & ~0x1, | 572 | __raw_writel(~(IOP13XX_MAX_RAM_SIZE - PHYS_OFFSET - 1) & ~0x1, |
| @@ -720,6 +728,14 @@ void __init iop13xx_atux_setup(void) | |||
| 720 | else | 728 | else |
| 721 | atux_trhfa_timeout = jiffies; | 729 | atux_trhfa_timeout = jiffies; |
| 722 | 730 | ||
| 731 | #ifdef CONFIG_PCI_MSI | ||
| 732 | /* BAR 0 (inbound msi window) */ | ||
| 733 | __raw_writel(IOP13XX_MU_BASE_PHYS, IOP13XX_MU_MUBAR); | ||
| 734 | __raw_writel(~(IOP13XX_MU_WINDOW_SIZE - 1), IOP13XX_ATUX_IALR0); | ||
| 735 | __raw_writel(IOP13XX_MU_BASE_PHYS, IOP13XX_ATUX_IATVR0); | ||
| 736 | __raw_writel(IOP13XX_MU_BASE_PCI, IOP13XX_ATUX_IABAR0); | ||
| 737 | #endif | ||
| 738 | |||
| 723 | /* BAR 1 (1:1 mapping with Physical RAM) */ | 739 | /* BAR 1 (1:1 mapping with Physical RAM) */ |
| 724 | /* Set limit and enable */ | 740 | /* Set limit and enable */ |
| 725 | __raw_writel(~(IOP13XX_MAX_RAM_SIZE - PHYS_OFFSET - 1) & ~0x1, | 741 | __raw_writel(~(IOP13XX_MAX_RAM_SIZE - PHYS_OFFSET - 1) & ~0x1, |
diff --git a/arch/arm/mach-ks8695/Kconfig b/arch/arm/mach-ks8695/Kconfig new file mode 100644 index 000000000000..ce1cf8de2b4d --- /dev/null +++ b/arch/arm/mach-ks8695/Kconfig | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | if ARCH_KS8695 | ||
| 2 | |||
| 3 | menu "Kendin/Micrel KS8695 Implementations" | ||
| 4 | |||
| 5 | config MACH_KS8695 | ||
| 6 | bool "KS8695 development board" | ||
| 7 | help | ||
| 8 | Say 'Y' here if you want your kernel to run on the original | ||
| 9 | Kendin-Micrel KS8695 development board. | ||
| 10 | |||
| 11 | endmenu | ||
| 12 | |||
| 13 | endif | ||
diff --git a/arch/arm/mach-ks8695/Makefile b/arch/arm/mach-ks8695/Makefile new file mode 100644 index 000000000000..56b7d337333a --- /dev/null +++ b/arch/arm/mach-ks8695/Makefile | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | # arch/arm/mach-ks8695/Makefile | ||
| 2 | # | ||
| 3 | # Makefile for KS8695 architecture support | ||
| 4 | # | ||
| 5 | |||
| 6 | obj-y := cpu.o irq.o time.o devices.o | ||
| 7 | obj-m := | ||
| 8 | obj-n := | ||
| 9 | obj- := | ||
| 10 | |||
| 11 | # PCI support is optional | ||
| 12 | #obj-$(CONFIG_PCI) += pci.o | ||
| 13 | |||
| 14 | # Board-specific support | ||
| 15 | obj-$(CONFIG_MACH_KS8695) += board-micrel.o | ||
diff --git a/arch/arm/mach-ks8695/Makefile.boot b/arch/arm/mach-ks8695/Makefile.boot new file mode 100644 index 000000000000..48eb2cb3ac77 --- /dev/null +++ b/arch/arm/mach-ks8695/Makefile.boot | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | # Note: the following conditions must always be true: | ||
| 2 | # ZRELADDR == virt_to_phys(TEXTADDR) | ||
| 3 | # PARAMS_PHYS must be within 4MB of ZRELADDR | ||
| 4 | # INITRD_PHYS must be in RAM | ||
| 5 | |||
| 6 | zreladdr-y := 0x00008000 | ||
| 7 | params_phys-y := 0x00000100 | ||
| 8 | initrd_phys-y := 0x00800000 | ||
diff --git a/arch/arm/mach-ks8695/board-micrel.c b/arch/arm/mach-ks8695/board-micrel.c new file mode 100644 index 000000000000..8fc0edb5211e --- /dev/null +++ b/arch/arm/mach-ks8695/board-micrel.c | |||
| @@ -0,0 +1,60 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-ks8695/board-micrel.c | ||
| 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 version 2 as | ||
| 6 | * published by the Free Software Foundation. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #include <linux/kernel.h> | ||
| 10 | #include <linux/types.h> | ||
| 11 | #include <linux/interrupt.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/platform_device.h> | ||
| 14 | |||
| 15 | #include <asm/mach-types.h> | ||
| 16 | |||
| 17 | #include <asm/mach/arch.h> | ||
| 18 | #include <asm/mach/map.h> | ||
| 19 | #include <asm/mach/irq.h> | ||
| 20 | |||
| 21 | #include <asm/arch/devices.h> | ||
| 22 | |||
| 23 | #include "generic.h" | ||
| 24 | |||
| 25 | #ifdef CONFIG_PCI | ||
| 26 | static int __init micrel_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | ||
| 27 | { | ||
| 28 | return KS8695_IRQ_EXTERN0; | ||
| 29 | } | ||
| 30 | |||
| 31 | static struct ks8695_pci_cfg micrel_pci = { | ||
| 32 | .mode = KS8695_MODE_MINIPCI, | ||
| 33 | .map_irq = micrel_pci_map_irq, | ||
| 34 | }; | ||
| 35 | #endif | ||
| 36 | |||
| 37 | |||
| 38 | static void micrel_init(void) | ||
| 39 | { | ||
| 40 | printk(KERN_INFO "Micrel KS8695 Development Board initializing\n"); | ||
| 41 | |||
| 42 | #ifdef CONFIG_PCI | ||
| 43 | ks8695_init_pci(&micrel_pci); | ||
| 44 | #endif | ||
| 45 | |||
| 46 | /* Add devices */ | ||
| 47 | ks8695_add_device_wan(); /* eth0 = WAN */ | ||
| 48 | ks8695_add_device_lan(); /* eth1 = LAN */ | ||
| 49 | } | ||
| 50 | |||
| 51 | MACHINE_START(KS8695, "KS8695 Centaur Development Board") | ||
| 52 | /* Maintainer: Micrel Semiconductor Inc. */ | ||
| 53 | .phys_io = KS8695_IO_PA, | ||
| 54 | .io_pg_offst = (KS8695_IO_VA >> 18) & 0xfffc, | ||
| 55 | .boot_params = KS8695_SDRAM_PA + 0x100, | ||
| 56 | .map_io = ks8695_map_io, | ||
| 57 | .init_irq = ks8695_init_irq, | ||
| 58 | .init_machine = micrel_init, | ||
| 59 | .timer = &ks8695_timer, | ||
| 60 | MACHINE_END | ||
diff --git a/arch/arm/mach-ks8695/cpu.c b/arch/arm/mach-ks8695/cpu.c new file mode 100644 index 000000000000..407d255e42bf --- /dev/null +++ b/arch/arm/mach-ks8695/cpu.c | |||
| @@ -0,0 +1,73 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-ks8695/cpu.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 6 | * | ||
| 7 | * KS8695 CPU support | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License as published by | ||
| 11 | * the Free Software Foundation; either version 2 of the License, or | ||
| 12 | * (at your option) any later version. | ||
| 13 | * | ||
| 14 | * This program is distributed in the hope that it will be useful, | ||
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | * GNU General Public License for more details. | ||
| 18 | * | ||
| 19 | * You should have received a copy of the GNU General Public License | ||
| 20 | * along with this program; if not, write to the Free Software | ||
| 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 22 | */ | ||
| 23 | |||
| 24 | #include <linux/kernel.h> | ||
| 25 | #include <linux/module.h> | ||
| 26 | #include <linux/init.h> | ||
| 27 | |||
| 28 | #include <asm/hardware.h> | ||
| 29 | #include <asm/io.h> | ||
| 30 | #include <asm/mach/arch.h> | ||
| 31 | #include <asm/mach/map.h> | ||
| 32 | |||
| 33 | #include <asm/arch/regs-sys.h> | ||
| 34 | #include <asm/arch/regs-misc.h> | ||
| 35 | |||
| 36 | |||
| 37 | static struct __initdata map_desc ks8695_io_desc[] = { | ||
| 38 | { | ||
| 39 | .virtual = KS8695_IO_VA, | ||
| 40 | .pfn = __phys_to_pfn(KS8695_IO_PA), | ||
| 41 | .length = KS8695_IO_SIZE, | ||
| 42 | .type = MT_DEVICE, | ||
| 43 | } | ||
| 44 | }; | ||
| 45 | |||
| 46 | static void __init ks8695_processor_info(void) | ||
| 47 | { | ||
| 48 | unsigned long id, rev; | ||
| 49 | |||
| 50 | id = __raw_readl(KS8695_MISC_VA + KS8695_DID); | ||
| 51 | rev = __raw_readl(KS8695_MISC_VA + KS8695_RID); | ||
| 52 | |||
| 53 | printk("KS8695 ID=%04lx SubID=%02lx Revision=%02lx\n", (id & DID_ID), (rev & RID_SUBID), (rev & RID_REVISION)); | ||
| 54 | } | ||
| 55 | |||
| 56 | static unsigned int sysclk[8] = { 125000000, 100000000, 62500000, 50000000, 41700000, 33300000, 31300000, 25000000 }; | ||
| 57 | static unsigned int cpuclk[8] = { 166000000, 166000000, 83000000, 83000000, 55300000, 55300000, 41500000, 41500000 }; | ||
| 58 | |||
| 59 | static void __init ks8695_clock_info(void) | ||
| 60 | { | ||
| 61 | unsigned int scdc = __raw_readl(KS8695_SYS_VA + KS8695_CLKCON) & CLKCON_SCDC; | ||
| 62 | |||
| 63 | printk("Clocks: System %u MHz, CPU %u MHz\n", | ||
| 64 | sysclk[scdc] / 1000000, cpuclk[scdc] / 1000000); | ||
| 65 | } | ||
| 66 | |||
| 67 | void __init ks8695_map_io(void) | ||
| 68 | { | ||
| 69 | iotable_init(ks8695_io_desc, ARRAY_SIZE(ks8695_io_desc)); | ||
| 70 | |||
| 71 | ks8695_processor_info(); | ||
| 72 | ks8695_clock_info(); | ||
| 73 | } | ||
diff --git a/arch/arm/mach-ks8695/devices.c b/arch/arm/mach-ks8695/devices.c new file mode 100644 index 000000000000..386593f8ac65 --- /dev/null +++ b/arch/arm/mach-ks8695/devices.c | |||
| @@ -0,0 +1,191 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-ks8695/devices.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Andrew Victor | ||
| 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. | ||
| 9 | * | ||
| 10 | * This program is distributed in the hope that it will be useful, | ||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 13 | * GNU General Public License for more details. | ||
| 14 | * | ||
| 15 | * You should have received a copy of the GNU General Public License | ||
| 16 | * along with this program; if not, write to the Free Software | ||
| 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 18 | */ | ||
| 19 | |||
| 20 | #include <asm/mach/arch.h> | ||
| 21 | #include <asm/mach/map.h> | ||
| 22 | |||
| 23 | #include <linux/platform_device.h> | ||
| 24 | |||
| 25 | #include <asm/arch/regs-wan.h> | ||
| 26 | #include <asm/arch/regs-lan.h> | ||
| 27 | #include <asm/arch/regs-hpna.h> | ||
| 28 | |||
| 29 | |||
| 30 | /* -------------------------------------------------------------------- | ||
| 31 | * Ethernet | ||
| 32 | * -------------------------------------------------------------------- */ | ||
| 33 | |||
| 34 | #if defined(CONFIG_ARM_KS8695_ETHER) || defined(CONFIG_ARM_KS8695_ETHER_MODULE) | ||
| 35 | static u64 eth_dmamask = 0xffffffffUL; | ||
| 36 | |||
| 37 | static struct resource ks8695_wan_resources[] = { | ||
| 38 | [0] = { | ||
| 39 | .start = KS8695_WAN_VA, | ||
| 40 | .end = KS8695_WAN_VA + 0x00ff, | ||
| 41 | .flags = IORESOURCE_MEM, | ||
| 42 | }, | ||
| 43 | [1] = { | ||
| 44 | .name = "WAN RX", | ||
| 45 | .start = KS8695_IRQ_WAN_RX_STATUS, | ||
| 46 | .end = KS8695_IRQ_WAN_RX_STATUS, | ||
| 47 | .flags = IORESOURCE_IRQ, | ||
| 48 | }, | ||
| 49 | [2] = { | ||
| 50 | .name = "WAN TX", | ||
| 51 | .start = KS8695_IRQ_WAN_TX_STATUS, | ||
| 52 | .end = KS8695_IRQ_WAN_TX_STATUS, | ||
| 53 | .flags = IORESOURCE_IRQ, | ||
| 54 | }, | ||
| 55 | [3] = { | ||
| 56 | .name = "WAN Link", | ||
| 57 | .start = KS8695_IRQ_WAN_LINK, | ||
| 58 | .end = KS8695_IRQ_WAN_LINK, | ||
| 59 | .flags = IORESOURCE_IRQ, | ||
| 60 | }, | ||
| 61 | }; | ||
| 62 | |||
| 63 | static struct platform_device ks8695_wan_device = { | ||
| 64 | .name = "ks8695_ether", | ||
| 65 | .id = 0, | ||
| 66 | .dev = { | ||
| 67 | .dma_mask = ð_dmamask, | ||
| 68 | .coherent_dma_mask = 0xffffffff, | ||
| 69 | }, | ||
| 70 | .resource = ks8695_wan_resources, | ||
| 71 | .num_resources = ARRAY_SIZE(ks8695_wan_resources), | ||
| 72 | }; | ||
| 73 | |||
| 74 | |||
| 75 | static struct resource ks8695_lan_resources[] = { | ||
| 76 | [0] = { | ||
| 77 | .start = KS8695_LAN_VA, | ||
| 78 | .end = KS8695_LAN_VA + 0x00ff, | ||
| 79 | .flags = IORESOURCE_MEM, | ||
| 80 | }, | ||
| 81 | [1] = { | ||
| 82 | .name = "LAN RX", | ||
| 83 | .start = KS8695_IRQ_LAN_RX_STATUS, | ||
| 84 | .end = KS8695_IRQ_LAN_RX_STATUS, | ||
| 85 | .flags = IORESOURCE_IRQ, | ||
| 86 | }, | ||
| 87 | [2] = { | ||
| 88 | .name = "LAN TX", | ||
| 89 | .start = KS8695_IRQ_LAN_TX_STATUS, | ||
| 90 | .end = KS8695_IRQ_LAN_TX_STATUS, | ||
| 91 | .flags = IORESOURCE_IRQ, | ||
| 92 | }, | ||
| 93 | }; | ||
| 94 | |||
| 95 | static struct platform_device ks8695_lan_device = { | ||
| 96 | .name = "ks8695_ether", | ||
| 97 | .id = 1, | ||
| 98 | .dev = { | ||
| 99 | .dma_mask = ð_dmamask, | ||
| 100 | .coherent_dma_mask = 0xffffffff, | ||
| 101 | }, | ||
| 102 | .resource = ks8695_lan_resources, | ||
| 103 | .num_resources = ARRAY_SIZE(ks8695_lan_resources), | ||
| 104 | }; | ||
| 105 | |||
| 106 | |||
| 107 | static struct resource ks8695_hpna_resources[] = { | ||
| 108 | [0] = { | ||
| 109 | .start = KS8695_HPNA_VA, | ||
| 110 | .end = KS8695_HPNA_VA + 0x00ff, | ||
| 111 | .flags = IORESOURCE_MEM, | ||
| 112 | }, | ||
| 113 | [1] = { | ||
| 114 | .name = "HPNA RX", | ||
| 115 | .start = KS8695_IRQ_HPNA_RX_STATUS, | ||
| 116 | .end = KS8695_IRQ_HPNA_RX_STATUS, | ||
| 117 | .flags = IORESOURCE_IRQ, | ||
| 118 | }, | ||
| 119 | [2] = { | ||
| 120 | .name = "HPNA TX", | ||
| 121 | .start = KS8695_IRQ_HPNA_TX_STATUS, | ||
| 122 | .end = KS8695_IRQ_HPNA_TX_STATUS, | ||
| 123 | .flags = IORESOURCE_IRQ, | ||
| 124 | }, | ||
| 125 | }; | ||
| 126 | |||
| 127 | static struct platform_device ks8695_hpna_device = { | ||
| 128 | .name = "ks8695_ether", | ||
| 129 | .id = 2, | ||
| 130 | .dev = { | ||
| 131 | .dma_mask = ð_dmamask, | ||
| 132 | .coherent_dma_mask = 0xffffffff, | ||
| 133 | }, | ||
| 134 | .resource = ks8695_hpna_resources, | ||
| 135 | .num_resources = ARRAY_SIZE(ks8695_hpna_resources), | ||
| 136 | }; | ||
| 137 | |||
| 138 | void __init ks8695_add_device_wan(void) | ||
| 139 | { | ||
| 140 | platform_device_register(&ks8695_wan_device); | ||
| 141 | } | ||
| 142 | |||
| 143 | void __init ks8695_add_device_lan(void) | ||
| 144 | { | ||
| 145 | platform_device_register(&ks8695_lan_device); | ||
| 146 | } | ||
| 147 | |||
| 148 | void __init ks8696_add_device_hpna(void) | ||
| 149 | { | ||
| 150 | platform_device_register(&ks8695_hpna_device); | ||
| 151 | } | ||
| 152 | #else | ||
| 153 | void __init ks8695_add_device_wan(void) {} | ||
| 154 | void __init ks8695_add_device_lan(void) {} | ||
| 155 | void __init ks8696_add_device_hpna(void) {} | ||
| 156 | #endif | ||
| 157 | |||
| 158 | |||
| 159 | /* -------------------------------------------------------------------- | ||
| 160 | * Watchdog | ||
| 161 | * -------------------------------------------------------------------- */ | ||
| 162 | |||
| 163 | #if defined(CONFIG_KS8695_WATCHDOG) || defined(CONFIG_KS8695_WATCHDOG_MODULE) | ||
| 164 | static struct platform_device ks8695_wdt_device = { | ||
| 165 | .name = "ks8695_wdt", | ||
| 166 | .id = -1, | ||
| 167 | .num_resources = 0, | ||
| 168 | }; | ||
| 169 | |||
| 170 | static void __init ks8695_add_device_watchdog(void) | ||
| 171 | { | ||
| 172 | platform_device_register(&ks8695_wdt_device); | ||
| 173 | } | ||
| 174 | #else | ||
| 175 | static void __init ks8695_add_device_watchdog(void) {} | ||
| 176 | #endif | ||
| 177 | |||
| 178 | |||
| 179 | /* -------------------------------------------------------------------- */ | ||
| 180 | |||
| 181 | /* | ||
| 182 | * These devices are always present and don't need any board-specific | ||
| 183 | * setup. | ||
| 184 | */ | ||
| 185 | static int __init ks8695_add_standard_devices(void) | ||
| 186 | { | ||
| 187 | ks8695_add_device_watchdog(); | ||
| 188 | return 0; | ||
| 189 | } | ||
| 190 | |||
| 191 | arch_initcall(ks8695_add_standard_devices); | ||
diff --git a/arch/arm/mach-ks8695/generic.h b/arch/arm/mach-ks8695/generic.h new file mode 100644 index 000000000000..2fbfab8d5fae --- /dev/null +++ b/arch/arm/mach-ks8695/generic.h | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-ks8695/generic.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 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 | |||
| 13 | extern __init void ks8695_map_io(void); | ||
| 14 | extern __init void ks8695_init_irq(void); | ||
| 15 | extern struct sys_timer ks8695_timer; | ||
diff --git a/arch/arm/mach-ks8695/irq.c b/arch/arm/mach-ks8695/irq.c new file mode 100644 index 000000000000..2407bba00547 --- /dev/null +++ b/arch/arm/mach-ks8695/irq.c | |||
| @@ -0,0 +1,175 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-ks8695/irq.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 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/init.h> | ||
| 23 | #include <linux/module.h> | ||
| 24 | #include <linux/interrupt.h> | ||
| 25 | #include <linux/ioport.h> | ||
| 26 | #include <linux/ptrace.h> | ||
| 27 | #include <linux/sysdev.h> | ||
| 28 | |||
| 29 | #include <asm/hardware.h> | ||
| 30 | #include <asm/irq.h> | ||
| 31 | #include <asm/io.h> | ||
| 32 | |||
| 33 | #include <asm/mach/irq.h> | ||
| 34 | |||
| 35 | #include <asm/arch/regs-irq.h> | ||
| 36 | #include <asm/arch/regs-gpio.h> | ||
| 37 | |||
| 38 | static void ks8695_irq_mask(unsigned int irqno) | ||
| 39 | { | ||
| 40 | unsigned long inten; | ||
| 41 | |||
| 42 | inten = __raw_readl(KS8695_IRQ_VA + KS8695_INTEN); | ||
| 43 | inten &= ~(1 << irqno); | ||
| 44 | |||
| 45 | __raw_writel(inten, KS8695_IRQ_VA + KS8695_INTEN); | ||
| 46 | } | ||
| 47 | |||
| 48 | static void ks8695_irq_unmask(unsigned int irqno) | ||
| 49 | { | ||
| 50 | unsigned long inten; | ||
| 51 | |||
| 52 | inten = __raw_readl(KS8695_IRQ_VA + KS8695_INTEN); | ||
| 53 | inten |= (1 << irqno); | ||
| 54 | |||
| 55 | __raw_writel(inten, KS8695_IRQ_VA + KS8695_INTEN); | ||
| 56 | } | ||
| 57 | |||
| 58 | static void ks8695_irq_ack(unsigned int irqno) | ||
| 59 | { | ||
| 60 | __raw_writel((1 << irqno), KS8695_IRQ_VA + KS8695_INTST); | ||
| 61 | } | ||
| 62 | |||
| 63 | |||
| 64 | static struct irq_chip ks8695_irq_level_chip; | ||
| 65 | static struct irq_chip ks8695_irq_edge_chip; | ||
| 66 | |||
| 67 | |||
| 68 | static int ks8695_irq_set_type(unsigned int irqno, unsigned int type) | ||
| 69 | { | ||
| 70 | unsigned long ctrl, mode; | ||
| 71 | unsigned short level_triggered = 0; | ||
| 72 | |||
| 73 | ctrl = __raw_readl(KS8695_GPIO_VA + KS8695_IOPC); | ||
| 74 | |||
| 75 | switch (type) { | ||
| 76 | case IRQT_HIGH: | ||
| 77 | mode = IOPC_TM_HIGH; | ||
| 78 | level_triggered = 1; | ||
| 79 | break; | ||
| 80 | case IRQT_LOW: | ||
| 81 | mode = IOPC_TM_LOW; | ||
| 82 | level_triggered = 1; | ||
| 83 | break; | ||
| 84 | case IRQT_RISING: | ||
| 85 | mode = IOPC_TM_RISING; | ||
| 86 | break; | ||
| 87 | case IRQT_FALLING: | ||
| 88 | mode = IOPC_TM_FALLING; | ||
| 89 | break; | ||
| 90 | case IRQT_BOTHEDGE: | ||
| 91 | mode = IOPC_TM_EDGE; | ||
| 92 | break; | ||
| 93 | default: | ||
| 94 | return -EINVAL; | ||
| 95 | } | ||
| 96 | |||
| 97 | switch (irqno) { | ||
| 98 | case KS8695_IRQ_EXTERN0: | ||
| 99 | ctrl &= ~IOPC_IOEINT0TM; | ||
| 100 | ctrl |= IOPC_IOEINT0_MODE(mode); | ||
| 101 | break; | ||
| 102 | case KS8695_IRQ_EXTERN1: | ||
| 103 | ctrl &= ~IOPC_IOEINT1TM; | ||
| 104 | ctrl |= IOPC_IOEINT1_MODE(mode); | ||
| 105 | break; | ||
| 106 | case KS8695_IRQ_EXTERN2: | ||
| 107 | ctrl &= ~IOPC_IOEINT2TM; | ||
| 108 | ctrl |= IOPC_IOEINT2_MODE(mode); | ||
| 109 | break; | ||
| 110 | case KS8695_IRQ_EXTERN3: | ||
| 111 | ctrl &= ~IOPC_IOEINT3TM; | ||
| 112 | ctrl |= IOPC_IOEINT3_MODE(mode); | ||
| 113 | break; | ||
| 114 | default: | ||
| 115 | return -EINVAL; | ||
| 116 | } | ||
| 117 | |||
| 118 | if (level_triggered) { | ||
| 119 | set_irq_chip(irqno, &ks8695_irq_level_chip); | ||
| 120 | set_irq_handler(irqno, handle_level_irq); | ||
| 121 | } | ||
| 122 | else { | ||
| 123 | set_irq_chip(irqno, &ks8695_irq_edge_chip); | ||
| 124 | set_irq_handler(irqno, handle_edge_irq); | ||
| 125 | } | ||
| 126 | |||
| 127 | __raw_writel(ctrl, KS8695_GPIO_VA + KS8695_IOPC); | ||
| 128 | return 0; | ||
| 129 | } | ||
| 130 | |||
| 131 | static struct irq_chip ks8695_irq_level_chip = { | ||
| 132 | .ack = ks8695_irq_mask, | ||
| 133 | .mask = ks8695_irq_mask, | ||
| 134 | .unmask = ks8695_irq_unmask, | ||
| 135 | .set_type = ks8695_irq_set_type, | ||
| 136 | }; | ||
| 137 | |||
| 138 | static struct irq_chip ks8695_irq_edge_chip = { | ||
| 139 | .ack = ks8695_irq_ack, | ||
| 140 | .mask = ks8695_irq_mask, | ||
| 141 | .unmask = ks8695_irq_unmask, | ||
| 142 | .set_type = ks8695_irq_set_type, | ||
| 143 | }; | ||
| 144 | |||
| 145 | void __init ks8695_init_irq(void) | ||
| 146 | { | ||
| 147 | unsigned int irq; | ||
| 148 | |||
| 149 | /* Disable all interrupts initially */ | ||
| 150 | __raw_writel(0, KS8695_IRQ_VA + KS8695_INTMC); | ||
| 151 | __raw_writel(0, KS8695_IRQ_VA + KS8695_INTEN); | ||
| 152 | |||
| 153 | for (irq = 0; irq < NR_IRQS; irq++) { | ||
| 154 | switch (irq) { | ||
| 155 | /* Level-triggered interrupts */ | ||
| 156 | case KS8695_IRQ_BUS_ERROR: | ||
| 157 | case KS8695_IRQ_UART_MODEM_STATUS: | ||
| 158 | case KS8695_IRQ_UART_LINE_STATUS: | ||
| 159 | case KS8695_IRQ_UART_RX: | ||
| 160 | case KS8695_IRQ_COMM_TX: | ||
| 161 | case KS8695_IRQ_COMM_RX: | ||
| 162 | set_irq_chip(irq, &ks8695_irq_level_chip); | ||
| 163 | set_irq_handler(irq, handle_level_irq); | ||
| 164 | break; | ||
| 165 | |||
| 166 | /* Edge-triggered interrupts */ | ||
| 167 | default: | ||
| 168 | ks8695_irq_ack(irq); /* clear pending bit */ | ||
| 169 | set_irq_chip(irq, &ks8695_irq_edge_chip); | ||
| 170 | set_irq_handler(irq, handle_edge_irq); | ||
| 171 | } | ||
| 172 | |||
| 173 | set_irq_flags(irq, IRQF_VALID); | ||
| 174 | } | ||
| 175 | } | ||
diff --git a/arch/arm/mach-ks8695/time.c b/arch/arm/mach-ks8695/time.c new file mode 100644 index 000000000000..d2c86e4a72eb --- /dev/null +++ b/arch/arm/mach-ks8695/time.c | |||
| @@ -0,0 +1,114 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-ks8695/time.c | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 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/init.h> | ||
| 23 | #include <linux/interrupt.h> | ||
| 24 | #include <linux/irq.h> | ||
| 25 | #include <linux/kernel.h> | ||
| 26 | #include <linux/sched.h> | ||
| 27 | |||
| 28 | #include <asm/io.h> | ||
| 29 | #include <asm/mach/time.h> | ||
| 30 | |||
| 31 | #include <asm/arch/regs-timer.h> | ||
| 32 | #include <asm/arch/regs-irq.h> | ||
| 33 | |||
| 34 | #include "generic.h" | ||
| 35 | |||
| 36 | /* | ||
| 37 | * Returns number of ms since last clock interrupt. Note that interrupts | ||
| 38 | * will have been disabled by do_gettimeoffset() | ||
| 39 | */ | ||
| 40 | static unsigned long ks8695_gettimeoffset (void) | ||
| 41 | { | ||
| 42 | unsigned long elapsed, tick2, intpending; | ||
| 43 | |||
| 44 | /* | ||
| 45 | * Get the current number of ticks. Note that there is a race | ||
| 46 | * condition between us reading the timer and checking for an | ||
| 47 | * interrupt. We solve this by ensuring that the counter has not | ||
| 48 | * reloaded between our two reads. | ||
| 49 | */ | ||
| 50 | elapsed = __raw_readl(KS8695_TMR_VA + KS8695_T1TC) + __raw_readl(KS8695_TMR_VA + KS8695_T1PD); | ||
| 51 | do { | ||
| 52 | tick2 = elapsed; | ||
| 53 | intpending = __raw_readl(KS8695_IRQ_VA + KS8695_INTST) & (1 << KS8695_IRQ_TIMER1); | ||
| 54 | elapsed = __raw_readl(KS8695_TMR_VA + KS8695_T1TC) + __raw_readl(KS8695_TMR_VA + KS8695_T1PD); | ||
| 55 | } while (elapsed > tick2); | ||
| 56 | |||
| 57 | /* Convert to number of ticks expired (not remaining) */ | ||
| 58 | elapsed = (CLOCK_TICK_RATE / HZ) - elapsed; | ||
| 59 | |||
| 60 | /* Is interrupt pending? If so, then timer has been reloaded already. */ | ||
| 61 | if (intpending) | ||
| 62 | elapsed += (CLOCK_TICK_RATE / HZ); | ||
| 63 | |||
| 64 | /* Convert ticks to usecs */ | ||
| 65 | return (unsigned long)(elapsed * (tick_nsec / 1000)) / LATCH; | ||
| 66 | } | ||
| 67 | |||
| 68 | /* | ||
| 69 | * IRQ handler for the timer. | ||
| 70 | */ | ||
| 71 | static irqreturn_t ks8695_timer_interrupt(int irq, void *dev_id) | ||
| 72 | { | ||
| 73 | write_seqlock(&xtime_lock); | ||
| 74 | timer_tick(); | ||
| 75 | write_sequnlock(&xtime_lock); | ||
| 76 | |||
| 77 | return IRQ_HANDLED; | ||
| 78 | } | ||
| 79 | |||
| 80 | static struct irqaction ks8695_timer_irq = { | ||
| 81 | .name = "ks8695_tick", | ||
| 82 | .flags = IRQF_DISABLED | IRQF_TIMER, | ||
| 83 | .handler = ks8695_timer_interrupt, | ||
| 84 | }; | ||
| 85 | |||
| 86 | static void ks8695_timer_setup(void) | ||
| 87 | { | ||
| 88 | unsigned long tmout = CLOCK_TICK_RATE / HZ; | ||
| 89 | unsigned long tmcon; | ||
| 90 | |||
| 91 | /* disable timer1 */ | ||
| 92 | tmcon = __raw_readl(KS8695_TMR_VA + KS8695_TMCON); | ||
| 93 | __raw_writel(tmcon & ~TMCON_T1EN, KS8695_TMR_VA + KS8695_TMCON); | ||
| 94 | |||
| 95 | __raw_writel(tmout / 2, KS8695_TMR_VA + KS8695_T1TC); | ||
| 96 | __raw_writel(tmout / 2, KS8695_TMR_VA + KS8695_T1PD); | ||
| 97 | |||
| 98 | /* re-enable timer1 */ | ||
| 99 | __raw_writel(tmcon | TMCON_T1EN, KS8695_TMR_VA + KS8695_TMCON); | ||
| 100 | } | ||
| 101 | |||
| 102 | static void __init ks8695_timer_init (void) | ||
| 103 | { | ||
| 104 | ks8695_timer_setup(); | ||
| 105 | |||
| 106 | /* Enable timer interrupts */ | ||
| 107 | setup_irq(KS8695_IRQ_TIMER1, &ks8695_timer_irq); | ||
| 108 | } | ||
| 109 | |||
| 110 | struct sys_timer ks8695_timer = { | ||
| 111 | .init = ks8695_timer_init, | ||
| 112 | .offset = ks8695_gettimeoffset, | ||
| 113 | .resume = ks8695_timer_setup, | ||
| 114 | }; | ||
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index ad519390dd58..48c8c9195dc3 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
| @@ -326,7 +326,7 @@ static struct omap_lcd_config h2_lcd_config __initdata = { | |||
| 326 | .ctrl_name = "internal", | 326 | .ctrl_name = "internal", |
| 327 | }; | 327 | }; |
| 328 | 328 | ||
| 329 | static struct omap_board_config_kernel h2_config[] = { | 329 | static struct omap_board_config_kernel h2_config[] __initdata = { |
| 330 | { OMAP_TAG_USB, &h2_usb_config }, | 330 | { OMAP_TAG_USB, &h2_usb_config }, |
| 331 | { OMAP_TAG_MMC, &h2_mmc_config }, | 331 | { OMAP_TAG_MMC, &h2_mmc_config }, |
| 332 | { OMAP_TAG_UART, &h2_uart_config }, | 332 | { OMAP_TAG_UART, &h2_uart_config }, |
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index 6f4ea4bda5e0..8caee68aa090 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c | |||
| @@ -1,4 +1,3 @@ | |||
| 1 | //kernel/linux-omap-fsample/arch/arm/mach-omap1/pm.c#3 - integrate change 4545 (text) | ||
| 2 | /* | 1 | /* |
| 3 | * linux/arch/arm/mach-omap1/pm.c | 2 | * linux/arch/arm/mach-omap1/pm.c |
| 4 | * | 3 | * |
| @@ -377,7 +376,7 @@ void omap_pm_suspend(void) | |||
| 377 | * Jump to assembly code. The processor will stay there | 376 | * Jump to assembly code. The processor will stay there |
| 378 | * until wake up. | 377 | * until wake up. |
| 379 | */ | 378 | */ |
| 380 | omap_sram_suspend(arg0, arg1); | 379 | omap_sram_suspend(arg0, arg1); |
| 381 | 380 | ||
| 382 | /* | 381 | /* |
| 383 | * If we are here, processor is woken up! | 382 | * If we are here, processor is woken up! |
| @@ -631,10 +630,6 @@ static int omap_pm_prepare(suspend_state_t state) | |||
| 631 | case PM_SUSPEND_STANDBY: | 630 | case PM_SUSPEND_STANDBY: |
| 632 | case PM_SUSPEND_MEM: | 631 | case PM_SUSPEND_MEM: |
| 633 | break; | 632 | break; |
| 634 | |||
| 635 | case PM_SUSPEND_DISK: | ||
| 636 | return -ENOTSUPP; | ||
| 637 | |||
| 638 | default: | 633 | default: |
| 639 | return -EINVAL; | 634 | return -EINVAL; |
| 640 | } | 635 | } |
| @@ -657,10 +652,6 @@ static int omap_pm_enter(suspend_state_t state) | |||
| 657 | case PM_SUSPEND_MEM: | 652 | case PM_SUSPEND_MEM: |
| 658 | omap_pm_suspend(); | 653 | omap_pm_suspend(); |
| 659 | break; | 654 | break; |
| 660 | |||
| 661 | case PM_SUSPEND_DISK: | ||
| 662 | return -ENOTSUPP; | ||
| 663 | |||
| 664 | default: | 655 | default: |
| 665 | return -EINVAL; | 656 | return -EINVAL; |
| 666 | } | 657 | } |
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index 54c836a98456..e290b989aa94 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c | |||
| @@ -54,7 +54,7 @@ | |||
| 54 | 54 | ||
| 55 | static struct resource gpmc_mem_root; | 55 | static struct resource gpmc_mem_root; |
| 56 | static struct resource gpmc_cs_mem[GPMC_CS_NUM]; | 56 | static struct resource gpmc_cs_mem[GPMC_CS_NUM]; |
| 57 | static spinlock_t gpmc_mem_lock = SPIN_LOCK_UNLOCKED; | 57 | static DEFINE_SPINLOCK(gpmc_mem_lock); |
| 58 | static unsigned gpmc_cs_map; | 58 | static unsigned gpmc_cs_map; |
| 59 | 59 | ||
| 60 | static void __iomem *gpmc_base = | 60 | static void __iomem *gpmc_base = |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index f538d0fdb13c..0439906d5da7 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
| @@ -43,7 +43,7 @@ struct pin_config __initdata_or_module omap24xx_pins[] = { | |||
| 43 | /* 24xx I2C */ | 43 | /* 24xx I2C */ |
| 44 | MUX_CFG_24XX("M19_24XX_I2C1_SCL", 0x111, 0, 0, 0, 1) | 44 | MUX_CFG_24XX("M19_24XX_I2C1_SCL", 0x111, 0, 0, 0, 1) |
| 45 | MUX_CFG_24XX("L15_24XX_I2C1_SDA", 0x112, 0, 0, 0, 1) | 45 | MUX_CFG_24XX("L15_24XX_I2C1_SDA", 0x112, 0, 0, 0, 1) |
| 46 | MUX_CFG_24XX("J15_24XX_I2C2_SCL", 0x113, 0, 0, 0, 1) | 46 | MUX_CFG_24XX("J15_24XX_I2C2_SCL", 0x113, 0, 0, 1, 1) |
| 47 | MUX_CFG_24XX("H19_24XX_I2C2_SDA", 0x114, 0, 0, 0, 1) | 47 | MUX_CFG_24XX("H19_24XX_I2C2_SDA", 0x114, 0, 0, 0, 1) |
| 48 | 48 | ||
| 49 | /* Menelaus interrupt */ | 49 | /* Menelaus interrupt */ |
| @@ -52,7 +52,9 @@ MUX_CFG_24XX("W19_24XX_SYS_NIRQ", 0x12c, 0, 1, 1, 1) | |||
| 52 | /* 24xx clocks */ | 52 | /* 24xx clocks */ |
| 53 | MUX_CFG_24XX("W14_24XX_SYS_CLKOUT", 0x137, 0, 1, 1, 1) | 53 | MUX_CFG_24XX("W14_24XX_SYS_CLKOUT", 0x137, 0, 1, 1, 1) |
| 54 | 54 | ||
| 55 | /* 24xx GPMC wait pin monitoring */ | 55 | /* 24xx GPMC chipselects, wait pin monitoring */ |
| 56 | MUX_CFG_24XX("E2_GPMC_NCS2", 0x08e, 0, 1, 1, 1) | ||
| 57 | MUX_CFG_24XX("L2_GPMC_NCS7", 0x093, 0, 1, 1, 1) | ||
| 56 | MUX_CFG_24XX("L3_GPMC_WAIT0", 0x09a, 0, 1, 1, 1) | 58 | MUX_CFG_24XX("L3_GPMC_WAIT0", 0x09a, 0, 1, 1, 1) |
| 57 | MUX_CFG_24XX("N7_GPMC_WAIT1", 0x09b, 0, 1, 1, 1) | 59 | MUX_CFG_24XX("N7_GPMC_WAIT1", 0x09b, 0, 1, 1, 1) |
| 58 | MUX_CFG_24XX("M1_GPMC_WAIT2", 0x09c, 0, 1, 1, 1) | 60 | MUX_CFG_24XX("M1_GPMC_WAIT2", 0x09c, 0, 1, 1, 1) |
| @@ -66,6 +68,7 @@ MUX_CFG_24XX("V15_24XX_MCBSP2_DX", 0x127, 1, 1, 0, 1) | |||
| 66 | 68 | ||
| 67 | /* 24xx GPIO */ | 69 | /* 24xx GPIO */ |
| 68 | MUX_CFG_24XX("M21_242X_GPIO11", 0x0c9, 3, 1, 1, 1) | 70 | MUX_CFG_24XX("M21_242X_GPIO11", 0x0c9, 3, 1, 1, 1) |
| 71 | MUX_CFG_24XX("P21_242X_GPIO12", 0x0ca, 3, 0, 0, 1) | ||
| 69 | MUX_CFG_24XX("AA10_242X_GPIO13", 0x0e5, 3, 0, 0, 1) | 72 | MUX_CFG_24XX("AA10_242X_GPIO13", 0x0e5, 3, 0, 0, 1) |
| 70 | MUX_CFG_24XX("AA6_242X_GPIO14", 0x0e6, 3, 0, 0, 1) | 73 | MUX_CFG_24XX("AA6_242X_GPIO14", 0x0e6, 3, 0, 0, 1) |
| 71 | MUX_CFG_24XX("AA4_242X_GPIO15", 0x0e7, 3, 0, 0, 1) | 74 | MUX_CFG_24XX("AA4_242X_GPIO15", 0x0e7, 3, 0, 0, 1) |
| @@ -75,7 +78,9 @@ MUX_CFG_24XX("AA8_242X_GPIO58", 0x0ea, 3, 0, 0, 1) | |||
| 75 | MUX_CFG_24XX("Y20_24XX_GPIO60", 0x12c, 3, 0, 0, 1) | 78 | MUX_CFG_24XX("Y20_24XX_GPIO60", 0x12c, 3, 0, 0, 1) |
| 76 | MUX_CFG_24XX("W4__24XX_GPIO74", 0x0f2, 3, 0, 0, 1) | 79 | MUX_CFG_24XX("W4__24XX_GPIO74", 0x0f2, 3, 0, 0, 1) |
| 77 | MUX_CFG_24XX("M15_24XX_GPIO92", 0x10a, 3, 0, 0, 1) | 80 | MUX_CFG_24XX("M15_24XX_GPIO92", 0x10a, 3, 0, 0, 1) |
| 81 | MUX_CFG_24XX("J15_24XX_GPIO99", 0x113, 3, 1, 1, 1) | ||
| 78 | MUX_CFG_24XX("V14_24XX_GPIO117", 0x128, 3, 1, 0, 1) | 82 | MUX_CFG_24XX("V14_24XX_GPIO117", 0x128, 3, 1, 0, 1) |
| 83 | MUX_CFG_24XX("P14_24XX_GPIO125", 0x140, 3, 1, 1, 1) | ||
| 79 | 84 | ||
| 80 | /* 242x DBG GPIO */ | 85 | /* 242x DBG GPIO */ |
| 81 | MUX_CFG_24XX("V4_242X_GPIO49", 0xd3, 3, 0, 0, 1) | 86 | MUX_CFG_24XX("V4_242X_GPIO49", 0xd3, 3, 0, 0, 1) |
| @@ -118,6 +123,30 @@ MUX_CFG_24XX("E18_24XX_MMC_DAT_DIR3", 0x0fc, 0, 0, 0, 1) | |||
| 118 | MUX_CFG_24XX("G18_24XX_MMC_CMD_DIR", 0x0fd, 0, 0, 0, 1) | 123 | MUX_CFG_24XX("G18_24XX_MMC_CMD_DIR", 0x0fd, 0, 0, 0, 1) |
| 119 | MUX_CFG_24XX("H15_24XX_MMC_CLKI", 0x0fe, 0, 0, 0, 1) | 124 | MUX_CFG_24XX("H15_24XX_MMC_CLKI", 0x0fe, 0, 0, 0, 1) |
| 120 | 125 | ||
| 126 | /* Full speed USB */ | ||
| 127 | MUX_CFG_24XX("J20_24XX_USB0_PUEN", 0x11d, 0, 0, 0, 1) | ||
| 128 | MUX_CFG_24XX("J19_24XX_USB0_VP", 0x11e, 0, 0, 0, 1) | ||
| 129 | MUX_CFG_24XX("K20_24XX_USB0_VM", 0x11f, 0, 0, 0, 1) | ||
| 130 | MUX_CFG_24XX("J18_24XX_USB0_RCV", 0x120, 0, 0, 0, 1) | ||
| 131 | MUX_CFG_24XX("K19_24XX_USB0_TXEN", 0x121, 0, 0, 0, 1) | ||
| 132 | MUX_CFG_24XX("J14_24XX_USB0_SE0", 0x122, 0, 0, 0, 1) | ||
| 133 | MUX_CFG_24XX("K18_24XX_USB0_DAT", 0x123, 0, 0, 0, 1) | ||
| 134 | |||
| 135 | MUX_CFG_24XX("N14_24XX_USB1_SE0", 0x0ed, 2, 0, 0, 1) | ||
| 136 | MUX_CFG_24XX("W12_24XX_USB1_SE0", 0x0dd, 3, 0, 0, 1) | ||
| 137 | MUX_CFG_24XX("P15_24XX_USB1_DAT", 0x0ee, 2, 0, 0, 1) | ||
| 138 | MUX_CFG_24XX("R13_24XX_USB1_DAT", 0x0e0, 3, 0, 0, 1) | ||
| 139 | MUX_CFG_24XX("W20_24XX_USB1_TXEN", 0x0ec, 2, 0, 0, 1) | ||
| 140 | MUX_CFG_24XX("P13_24XX_USB1_TXEN", 0x0df, 3, 0, 0, 1) | ||
| 141 | MUX_CFG_24XX("V19_24XX_USB1_RCV", 0x0eb, 2, 0, 0, 1) | ||
| 142 | MUX_CFG_24XX("V12_24XX_USB1_RCV", 0x0de, 3, 0, 0, 1) | ||
| 143 | |||
| 144 | MUX_CFG_24XX("AA10_24XX_USB2_SE0", 0x0e5, 2, 0, 0, 1) | ||
| 145 | MUX_CFG_24XX("Y11_24XX_USB2_DAT", 0x0e8, 2, 0, 0, 1) | ||
| 146 | MUX_CFG_24XX("AA12_24XX_USB2_TXEN", 0x0e9, 2, 0, 0, 1) | ||
| 147 | MUX_CFG_24XX("AA6_24XX_USB2_RCV", 0x0e6, 2, 0, 0, 1) | ||
| 148 | MUX_CFG_24XX("AA4_24XX_USB2_TLLSE0", 0x0e7, 2, 0, 0, 1) | ||
| 149 | |||
| 121 | /* Keypad GPIO*/ | 150 | /* Keypad GPIO*/ |
| 122 | MUX_CFG_24XX("T19_24XX_KBR0", 0x106, 3, 1, 1, 1) | 151 | MUX_CFG_24XX("T19_24XX_KBR0", 0x106, 3, 1, 1, 1) |
| 123 | MUX_CFG_24XX("R19_24XX_KBR1", 0x107, 3, 1, 1, 1) | 152 | MUX_CFG_24XX("R19_24XX_KBR1", 0x107, 3, 1, 1, 1) |
diff --git a/arch/arm/mach-pnx4008/dma.c b/arch/arm/mach-pnx4008/dma.c index d6a279e4b524..f7009d845be8 100644 --- a/arch/arm/mach-pnx4008/dma.c +++ b/arch/arm/mach-pnx4008/dma.c | |||
| @@ -47,7 +47,7 @@ static struct ll_pool { | |||
| 47 | int count; | 47 | int count; |
| 48 | } ll_pool; | 48 | } ll_pool; |
| 49 | 49 | ||
| 50 | static spinlock_t ll_lock = SPIN_LOCK_UNLOCKED; | 50 | static DEFINE_SPINLOCK(ll_lock); |
| 51 | 51 | ||
| 52 | struct pnx4008_dma_ll *pnx4008_alloc_ll_entry(dma_addr_t * ll_dma) | 52 | struct pnx4008_dma_ll *pnx4008_alloc_ll_entry(dma_addr_t * ll_dma) |
| 53 | { | 53 | { |
| @@ -135,7 +135,7 @@ static inline void dma_decrement_usage(void) | |||
| 135 | } | 135 | } |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | static spinlock_t dma_lock = SPIN_LOCK_UNLOCKED; | 138 | static DEFINE_SPINLOCK(dma_lock); |
| 139 | 139 | ||
| 140 | static inline void pnx4008_dma_lock(void) | 140 | static inline void pnx4008_dma_lock(void) |
| 141 | { | 141 | { |
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c index 119c64b7223f..28c79bd0a3a0 100644 --- a/arch/arm/mach-pxa/trizeps4.c +++ b/arch/arm/mach-pxa/trizeps4.c | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #include <linux/delay.h> | 24 | #include <linux/delay.h> |
| 25 | #include <linux/serial_8250.h> | 25 | #include <linux/serial_8250.h> |
| 26 | #include <linux/mtd/mtd.h> | 26 | #include <linux/mtd/mtd.h> |
| 27 | #include <linux/mtd/physmap.h> | ||
| 27 | #include <linux/mtd/partitions.h> | 28 | #include <linux/mtd/partitions.h> |
| 28 | 29 | ||
| 29 | #include <asm/types.h> | 30 | #include <asm/types.h> |
| @@ -55,23 +56,31 @@ | |||
| 55 | static struct mtd_partition trizeps4_partitions[] = { | 56 | static struct mtd_partition trizeps4_partitions[] = { |
| 56 | { | 57 | { |
| 57 | .name = "Bootloader", | 58 | .name = "Bootloader", |
| 59 | .offset = 0x00000000, | ||
| 58 | .size = 0x00040000, | 60 | .size = 0x00040000, |
| 59 | .offset = 0, | ||
| 60 | .mask_flags = MTD_WRITEABLE /* force read-only */ | 61 | .mask_flags = MTD_WRITEABLE /* force read-only */ |
| 61 | },{ | 62 | },{ |
| 62 | .name = "Kernel", | 63 | .name = "Backup", |
| 63 | .size = 0x00400000, | 64 | .offset = 0x00040000, |
| 64 | .offset = 0x00040000 | 65 | .size = 0x00040000, |
| 66 | },{ | ||
| 67 | .name = "Image", | ||
| 68 | .offset = 0x00080000, | ||
| 69 | .size = 0x01080000, | ||
| 70 | },{ | ||
| 71 | .name = "IPSM", | ||
| 72 | .offset = 0x01100000, | ||
| 73 | .size = 0x00e00000, | ||
| 65 | },{ | 74 | },{ |
| 66 | .name = "Filesystem", | 75 | .name = "Registry", |
| 76 | .offset = 0x01f00000, | ||
| 67 | .size = MTDPART_SIZ_FULL, | 77 | .size = MTDPART_SIZ_FULL, |
| 68 | .offset = 0x00440000 | ||
| 69 | } | 78 | } |
| 70 | }; | 79 | }; |
| 71 | 80 | ||
| 72 | static struct flash_platform_data trizeps4_flash_data[] = { | 81 | static struct physmap_flash_data trizeps4_flash_data[] = { |
| 73 | { | 82 | { |
| 74 | .map_name = "cfi_probe", | 83 | .width = 4, /* bankwidth in bytes */ |
| 75 | .parts = trizeps4_partitions, | 84 | .parts = trizeps4_partitions, |
| 76 | .nr_parts = ARRAY_SIZE(trizeps4_partitions) | 85 | .nr_parts = ARRAY_SIZE(trizeps4_partitions) |
| 77 | } | 86 | } |
| @@ -79,15 +88,15 @@ static struct flash_platform_data trizeps4_flash_data[] = { | |||
| 79 | 88 | ||
| 80 | static struct resource flash_resource = { | 89 | static struct resource flash_resource = { |
| 81 | .start = PXA_CS0_PHYS, | 90 | .start = PXA_CS0_PHYS, |
| 82 | .end = PXA_CS0_PHYS + SZ_64M - 1, | 91 | .end = PXA_CS0_PHYS + SZ_32M - 1, |
| 83 | .flags = IORESOURCE_MEM, | 92 | .flags = IORESOURCE_MEM, |
| 84 | }; | 93 | }; |
| 85 | 94 | ||
| 86 | static struct platform_device flash_device = { | 95 | static struct platform_device flash_device = { |
| 87 | .name = "pxa2xx-flash", | 96 | .name = "physmap-flash", |
| 88 | .id = 0, | 97 | .id = 0, |
| 89 | .dev = { | 98 | .dev = { |
| 90 | .platform_data = &trizeps4_flash_data, | 99 | .platform_data = trizeps4_flash_data, |
| 91 | }, | 100 | }, |
| 92 | .resource = &flash_resource, | 101 | .resource = &flash_resource, |
| 93 | .num_resources = 1, | 102 | .num_resources = 1, |
| @@ -393,11 +402,37 @@ static struct pxafb_mach_info sharp_lcd = { | |||
| 393 | .pxafb_backlight_power = board_backlight_power, | 402 | .pxafb_backlight_power = board_backlight_power, |
| 394 | }; | 403 | }; |
| 395 | 404 | ||
| 405 | static struct pxafb_mode_info toshiba_lcd_mode = { | ||
| 406 | .pixclock = 39720, | ||
| 407 | .xres = 640, | ||
| 408 | .yres = 480, | ||
| 409 | .bpp = 8, | ||
| 410 | .hsync_len = 63, | ||
| 411 | .left_margin = 12, | ||
| 412 | .right_margin = 12, | ||
| 413 | .vsync_len = 4, | ||
| 414 | .upper_margin = 32, | ||
| 415 | .lower_margin = 10, | ||
| 416 | .sync = 0, | ||
| 417 | .cmap_greyscale = 0, | ||
| 418 | }; | ||
| 419 | |||
| 420 | static struct pxafb_mach_info toshiba_lcd = { | ||
| 421 | .modes = &toshiba_lcd_mode, | ||
| 422 | .num_modes = 1, | ||
| 423 | .cmap_inverse = 0, | ||
| 424 | .cmap_static = 0, | ||
| 425 | .lccr0 = LCCR0_Color | LCCR0_Act, | ||
| 426 | .lccr3 = 0x03400002, | ||
| 427 | .pxafb_backlight_power = board_backlight_power, | ||
| 428 | }; | ||
| 429 | |||
| 396 | static void __init trizeps4_init(void) | 430 | static void __init trizeps4_init(void) |
| 397 | { | 431 | { |
| 398 | platform_add_devices(trizeps4_devices, ARRAY_SIZE(trizeps4_devices)); | 432 | platform_add_devices(trizeps4_devices, ARRAY_SIZE(trizeps4_devices)); |
| 399 | 433 | ||
| 400 | set_pxa_fb_info(&sharp_lcd); | 434 | /* set_pxa_fb_info(&sharp_lcd); */ |
| 435 | set_pxa_fb_info(&toshiba_lcd); | ||
| 401 | 436 | ||
| 402 | pxa_set_mci_info(&trizeps4_mci_platform_data); | 437 | pxa_set_mci_info(&trizeps4_mci_platform_data); |
| 403 | pxa_set_ficp_info(&trizeps4_ficp_platform_data); | 438 | pxa_set_ficp_info(&trizeps4_ficp_platform_data); |
| @@ -436,9 +471,10 @@ static void __init trizeps4_map_io(void) | |||
| 436 | /* whats that for ??? */ | 471 | /* whats that for ??? */ |
| 437 | pxa_gpio_mode(GPIO79_nCS_3_MD); | 472 | pxa_gpio_mode(GPIO79_nCS_3_MD); |
| 438 | 473 | ||
| 474 | #ifdef CONFIG_LEDS | ||
| 439 | pxa_gpio_mode( GPIO_SYS_BUSY_LED | GPIO_OUT); /* LED1 */ | 475 | pxa_gpio_mode( GPIO_SYS_BUSY_LED | GPIO_OUT); /* LED1 */ |
| 440 | pxa_gpio_mode( GPIO_HEARTBEAT_LED | GPIO_OUT); /* LED2 */ | 476 | pxa_gpio_mode( GPIO_HEARTBEAT_LED | GPIO_OUT); /* LED2 */ |
| 441 | 477 | #endif | |
| 442 | #ifdef CONFIG_MACH_TRIZEPS4_CONXS | 478 | #ifdef CONFIG_MACH_TRIZEPS4_CONXS |
| 443 | #ifdef CONFIG_IDE_PXA_CF | 479 | #ifdef CONFIG_IDE_PXA_CF |
| 444 | /* if boot direct from compact flash dont disable power */ | 480 | /* if boot direct from compact flash dont disable power */ |
diff --git a/arch/arm/mach-s3c2410/Makefile b/arch/arm/mach-s3c2410/Makefile index 9a3d3d24c084..3e7a85594d9c 100644 --- a/arch/arm/mach-s3c2410/Makefile +++ b/arch/arm/mach-s3c2410/Makefile | |||
| @@ -20,7 +20,7 @@ obj-$(CONFIG_S3C2410_CLOCK) += clock.o | |||
| 20 | # Machine support | 20 | # Machine support |
| 21 | 21 | ||
| 22 | obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o | 22 | obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o |
| 23 | obj-$(CONFIG_ARCH_H1940) += mach-h1940.o | 23 | obj-$(CONFIG_ARCH_H1940) += mach-h1940.o h1940-bluetooth.o |
| 24 | obj-$(CONFIG_PM_H1940) += pm-h1940.o | 24 | obj-$(CONFIG_PM_H1940) += pm-h1940.o |
| 25 | obj-$(CONFIG_MACH_N30) += mach-n30.o | 25 | obj-$(CONFIG_MACH_N30) += mach-n30.o |
| 26 | obj-$(CONFIG_ARCH_BAST) += mach-bast.o usb-simtec.o | 26 | obj-$(CONFIG_ARCH_BAST) += mach-bast.o usb-simtec.o |
diff --git a/arch/arm/mach-s3c2410/h1940-bluetooth.c b/arch/arm/mach-s3c2410/h1940-bluetooth.c new file mode 100644 index 000000000000..3c48886521e7 --- /dev/null +++ b/arch/arm/mach-s3c2410/h1940-bluetooth.c | |||
| @@ -0,0 +1,142 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-s3c2410/h1940-bluetooth.c | ||
| 3 | * Copyright (c) Arnaud Patard <arnaud.patard@rtp-net.org> | ||
| 4 | * | ||
| 5 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 6 | * License. See the file COPYING in the main directory of this archive for | ||
| 7 | * more details. | ||
| 8 | * | ||
| 9 | * S3C2410 bluetooth "driver" | ||
| 10 | * | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/module.h> | ||
| 14 | #include <linux/platform_device.h> | ||
| 15 | #include <linux/delay.h> | ||
| 16 | #include <linux/string.h> | ||
| 17 | #include <linux/ctype.h> | ||
| 18 | #include <linux/leds.h> | ||
| 19 | #include <asm/arch/regs-gpio.h> | ||
| 20 | #include <asm/hardware.h> | ||
| 21 | #include <asm/arch/h1940-latch.h> | ||
| 22 | |||
| 23 | #define DRV_NAME "h1940-bt" | ||
| 24 | |||
| 25 | #ifdef CONFIG_LEDS_H1940 | ||
| 26 | DEFINE_LED_TRIGGER(bt_led_trigger); | ||
| 27 | #endif | ||
| 28 | |||
| 29 | static int state; | ||
| 30 | |||
| 31 | /* Bluetooth control */ | ||
| 32 | static void h1940bt_enable(int on) | ||
| 33 | { | ||
| 34 | if (on) { | ||
| 35 | #ifdef CONFIG_LEDS_H1940 | ||
| 36 | /* flashing Blue */ | ||
| 37 | led_trigger_event(bt_led_trigger, LED_HALF); | ||
| 38 | #endif | ||
| 39 | |||
| 40 | /* Power on the chip */ | ||
| 41 | h1940_latch_control(0, H1940_LATCH_BLUETOOTH_POWER); | ||
| 42 | /* Reset the chip */ | ||
| 43 | mdelay(10); | ||
| 44 | s3c2410_gpio_setpin(S3C2410_GPH1, 1); | ||
| 45 | mdelay(10); | ||
| 46 | s3c2410_gpio_setpin(S3C2410_GPH1, 0); | ||
| 47 | |||
| 48 | state = 1; | ||
| 49 | } | ||
| 50 | else { | ||
| 51 | #ifdef CONFIG_LEDS_H1940 | ||
| 52 | led_trigger_event(bt_led_trigger, 0); | ||
| 53 | #endif | ||
| 54 | |||
| 55 | s3c2410_gpio_setpin(S3C2410_GPH1, 1); | ||
| 56 | mdelay(10); | ||
| 57 | s3c2410_gpio_setpin(S3C2410_GPH1, 0); | ||
| 58 | mdelay(10); | ||
| 59 | h1940_latch_control(H1940_LATCH_BLUETOOTH_POWER, 0); | ||
| 60 | |||
| 61 | state = 0; | ||
| 62 | } | ||
| 63 | } | ||
| 64 | |||
| 65 | static ssize_t h1940bt_show(struct device *dev, struct device_attribute *attr, char *buf) | ||
| 66 | { | ||
| 67 | return snprintf(buf, PAGE_SIZE, "%d\n", state); | ||
| 68 | } | ||
| 69 | |||
| 70 | static ssize_t h1940bt_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | ||
| 71 | { | ||
| 72 | int new_state; | ||
| 73 | char *endp; | ||
| 74 | |||
| 75 | new_state = simple_strtoul(buf, &endp, 0); | ||
| 76 | if (*endp && !isspace(*endp)) | ||
| 77 | return -EINVAL; | ||
| 78 | |||
| 79 | h1940bt_enable(new_state); | ||
| 80 | |||
| 81 | return count; | ||
| 82 | } | ||
| 83 | static DEVICE_ATTR(enable, 0644, | ||
| 84 | h1940bt_show, | ||
| 85 | h1940bt_store); | ||
| 86 | |||
| 87 | static int __init h1940bt_probe(struct platform_device *pdev) | ||
| 88 | { | ||
| 89 | /* Configures BT serial port GPIOs */ | ||
| 90 | s3c2410_gpio_cfgpin(S3C2410_GPH0, S3C2410_GPH0_nCTS0); | ||
| 91 | s3c2410_gpio_pullup(S3C2410_GPH0, 1); | ||
| 92 | s3c2410_gpio_cfgpin(S3C2410_GPH1, S3C2410_GPH1_OUTP); | ||
| 93 | s3c2410_gpio_pullup(S3C2410_GPH1, 1); | ||
| 94 | s3c2410_gpio_cfgpin(S3C2410_GPH2, S3C2410_GPH2_TXD0); | ||
| 95 | s3c2410_gpio_pullup(S3C2410_GPH2, 1); | ||
| 96 | s3c2410_gpio_cfgpin(S3C2410_GPH3, S3C2410_GPH3_RXD0); | ||
| 97 | s3c2410_gpio_pullup(S3C2410_GPH3, 1); | ||
| 98 | |||
| 99 | #ifdef CONFIG_LEDS_H1940 | ||
| 100 | led_trigger_register_simple("h1940-bluetooth", &bt_led_trigger); | ||
| 101 | #endif | ||
| 102 | |||
| 103 | /* disable BT by default */ | ||
| 104 | h1940bt_enable(0); | ||
| 105 | |||
| 106 | return device_create_file(&pdev->dev, &dev_attr_enable); | ||
| 107 | } | ||
| 108 | |||
| 109 | static int h1940bt_remove(struct platform_device *pdev) | ||
| 110 | { | ||
| 111 | #ifdef CONFIG_LEDS_H1940 | ||
| 112 | led_trigger_unregister_simple(bt_led_trigger); | ||
| 113 | #endif | ||
| 114 | return 0; | ||
| 115 | } | ||
| 116 | |||
| 117 | |||
| 118 | static struct platform_driver h1940bt_driver = { | ||
| 119 | .driver = { | ||
| 120 | .name = DRV_NAME, | ||
| 121 | }, | ||
| 122 | .probe = h1940bt_probe, | ||
| 123 | .remove = h1940bt_remove, | ||
| 124 | }; | ||
| 125 | |||
| 126 | |||
| 127 | static int __init h1940bt_init(void) | ||
| 128 | { | ||
| 129 | return platform_driver_register(&h1940bt_driver); | ||
| 130 | } | ||
| 131 | |||
| 132 | static void __exit h1940bt_exit(void) | ||
| 133 | { | ||
| 134 | platform_driver_unregister(&h1940bt_driver); | ||
| 135 | } | ||
| 136 | |||
| 137 | module_init(h1940bt_init); | ||
| 138 | module_exit(h1940bt_exit); | ||
| 139 | |||
| 140 | MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>"); | ||
| 141 | MODULE_DESCRIPTION("Driver for the iPAQ H1940 bluetooth chip"); | ||
| 142 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c index 5d5f00e9c462..5ccd0be23a33 100644 --- a/arch/arm/mach-s3c2410/mach-h1940.c +++ b/arch/arm/mach-s3c2410/mach-h1940.c | |||
| @@ -177,6 +177,11 @@ static struct platform_device s3c_device_leds = { | |||
| 177 | .id = -1, | 177 | .id = -1, |
| 178 | }; | 178 | }; |
| 179 | 179 | ||
| 180 | static struct platform_device s3c_device_bluetooth = { | ||
| 181 | .name = "h1940-bt", | ||
| 182 | .id = -1, | ||
| 183 | }; | ||
| 184 | |||
| 180 | static struct platform_device *h1940_devices[] __initdata = { | 185 | static struct platform_device *h1940_devices[] __initdata = { |
| 181 | &s3c_device_usb, | 186 | &s3c_device_usb, |
| 182 | &s3c_device_lcd, | 187 | &s3c_device_lcd, |
| @@ -185,6 +190,7 @@ static struct platform_device *h1940_devices[] __initdata = { | |||
| 185 | &s3c_device_iis, | 190 | &s3c_device_iis, |
| 186 | &s3c_device_usbgadget, | 191 | &s3c_device_usbgadget, |
| 187 | &s3c_device_leds, | 192 | &s3c_device_leds, |
| 193 | &s3c_device_bluetooth, | ||
| 188 | }; | 194 | }; |
| 189 | 195 | ||
| 190 | static void __init h1940_map_io(void) | 196 | static void __init h1940_map_io(void) |
diff --git a/arch/arm/mach-s3c2443/clock.c b/arch/arm/mach-s3c2443/clock.c index dd2272fb1131..0b6e360aeae7 100644 --- a/arch/arm/mach-s3c2443/clock.c +++ b/arch/arm/mach-s3c2443/clock.c | |||
| @@ -791,6 +791,10 @@ static struct clk init_clocks[] = { | |||
| 791 | .name = "usb-bus-host", | 791 | .name = "usb-bus-host", |
| 792 | .id = -1, | 792 | .id = -1, |
| 793 | .parent = &clk_usb_bus_host, | 793 | .parent = &clk_usb_bus_host, |
| 794 | }, { .name = "ac97", | ||
| 795 | .id = -1, | ||
| 796 | .parent = &clk_p, | ||
| 797 | .ctrlbit = S3C2443_PCLKCON_AC97, | ||
| 794 | } | 798 | } |
| 795 | }; | 799 | }; |
| 796 | 800 | ||
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index b81391a4e374..15f0284010ca 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
| @@ -131,8 +131,8 @@ config CPU_ARM920T | |||
| 131 | # ARM922T | 131 | # ARM922T |
| 132 | config CPU_ARM922T | 132 | config CPU_ARM922T |
| 133 | bool "Support ARM922T processor" if ARCH_INTEGRATOR | 133 | bool "Support ARM922T processor" if ARCH_INTEGRATOR |
| 134 | depends on ARCH_LH7A40X || ARCH_INTEGRATOR | 134 | depends on ARCH_LH7A40X || ARCH_INTEGRATOR || ARCH_KS8695 |
| 135 | default y if ARCH_LH7A40X | 135 | default y if ARCH_LH7A40X || ARCH_KS8695 |
| 136 | select CPU_32v4T | 136 | select CPU_32v4T |
| 137 | select CPU_ABRT_EV4T | 137 | select CPU_ABRT_EV4T |
| 138 | select CPU_CACHE_V4WT | 138 | select CPU_CACHE_V4WT |
| @@ -143,7 +143,7 @@ config CPU_ARM922T | |||
| 143 | help | 143 | help |
| 144 | The ARM922T is a version of the ARM920T, but with smaller | 144 | The ARM922T is a version of the ARM920T, but with smaller |
| 145 | instruction and data caches. It is used in Altera's | 145 | instruction and data caches. It is used in Altera's |
| 146 | Excalibur XA device family. | 146 | Excalibur XA device family and Micrel's KS8695 Centaur. |
| 147 | 147 | ||
| 148 | Say Y if you want support for the ARM922T processor. | 148 | Say Y if you want support for the ARM922T processor. |
| 149 | Otherwise, say N. | 149 | Otherwise, say N. |
| @@ -171,8 +171,8 @@ config CPU_ARM925T | |||
| 171 | # ARM926T | 171 | # ARM926T |
| 172 | config CPU_ARM926T | 172 | config CPU_ARM926T |
| 173 | bool "Support ARM926T processor" | 173 | bool "Support ARM926T processor" |
| 174 | depends on ARCH_INTEGRATOR || ARCH_VERSATILE_PB || MACH_VERSATILE_AB || ARCH_OMAP730 || ARCH_OMAP16XX || MACH_REALVIEW_EB || ARCH_PNX4008 || ARCH_NETX || CPU_S3C2412 || ARCH_AT91SAM9260 || ARCH_AT91SAM9261 || ARCH_AT91SAM9263 || ARCH_NS9XXX | 174 | depends on ARCH_INTEGRATOR || ARCH_VERSATILE_PB || MACH_VERSATILE_AB || ARCH_OMAP730 || ARCH_OMAP16XX || MACH_REALVIEW_EB || ARCH_PNX4008 || ARCH_NETX || CPU_S3C2412 || ARCH_AT91SAM9260 || ARCH_AT91SAM9261 || ARCH_AT91SAM9263 || ARCH_AT91SAM9RL || ARCH_NS9XXX || ARCH_DAVINCI |
| 175 | default y if ARCH_VERSATILE_PB || MACH_VERSATILE_AB || ARCH_OMAP730 || ARCH_OMAP16XX || ARCH_PNX4008 || ARCH_NETX || CPU_S3C2412 || ARCH_AT91SAM9260 || ARCH_AT91SAM9261 || ARCH_AT91SAM9263 || ARCH_NS9XXX | 175 | default y if ARCH_VERSATILE_PB || MACH_VERSATILE_AB || ARCH_OMAP730 || ARCH_OMAP16XX || ARCH_PNX4008 || ARCH_NETX || CPU_S3C2412 || ARCH_AT91SAM9260 || ARCH_AT91SAM9261 || ARCH_AT91SAM9263 || ARCH_AT91SAM9RL || ARCH_NS9XXX || ARCH_DAVINCI |
| 176 | select CPU_32v5 | 176 | select CPU_32v5 |
| 177 | select CPU_ABRT_EV5TJ | 177 | select CPU_ABRT_EV5TJ |
| 178 | select CPU_CACHE_VIVT | 178 | select CPU_CACHE_VIVT |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 2d86b106ff3e..55a4d3be16b6 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
| @@ -747,7 +747,7 @@ int omap_set_dma_callback(int lch, | |||
| 747 | */ | 747 | */ |
| 748 | dma_addr_t omap_get_dma_src_pos(int lch) | 748 | dma_addr_t omap_get_dma_src_pos(int lch) |
| 749 | { | 749 | { |
| 750 | dma_addr_t offset; | 750 | dma_addr_t offset = 0; |
| 751 | 751 | ||
| 752 | if (cpu_class_is_omap1()) | 752 | if (cpu_class_is_omap1()) |
| 753 | offset = (dma_addr_t) (OMAP1_DMA_CSSA_L_REG(lch) | | 753 | offset = (dma_addr_t) (OMAP1_DMA_CSSA_L_REG(lch) | |
| @@ -769,7 +769,7 @@ dma_addr_t omap_get_dma_src_pos(int lch) | |||
| 769 | */ | 769 | */ |
| 770 | dma_addr_t omap_get_dma_dst_pos(int lch) | 770 | dma_addr_t omap_get_dma_dst_pos(int lch) |
| 771 | { | 771 | { |
| 772 | dma_addr_t offset; | 772 | dma_addr_t offset = 0; |
| 773 | 773 | ||
| 774 | if (cpu_class_is_omap1()) | 774 | if (cpu_class_is_omap1()) |
| 775 | offset = (dma_addr_t) (OMAP1_DMA_CDSA_L_REG(lch) | | 775 | offset = (dma_addr_t) (OMAP1_DMA_CDSA_L_REG(lch) | |
diff --git a/arch/arm/plat-omap/mux.c b/arch/arm/plat-omap/mux.c index 6c798d288688..75211f20ccb3 100644 --- a/arch/arm/plat-omap/mux.c +++ b/arch/arm/plat-omap/mux.c | |||
| @@ -83,10 +83,21 @@ int __init_or_module omap_cfg_reg(const unsigned long index) | |||
| 83 | reg |= OMAP24XX_PULL_ENA; | 83 | reg |= OMAP24XX_PULL_ENA; |
| 84 | if(cfg->pu_pd_val) | 84 | if(cfg->pu_pd_val) |
| 85 | reg |= OMAP24XX_PULL_UP; | 85 | reg |= OMAP24XX_PULL_UP; |
| 86 | #ifdef CONFIG_OMAP_MUX_DEBUG | 86 | #if defined(CONFIG_OMAP_MUX_DEBUG) || defined(CONFIG_OMAP_MUX_WARNINGS) |
| 87 | printk("Muxing %s (0x%08x): 0x%02x -> 0x%02x\n", | 87 | { |
| 88 | cfg->name, OMAP24XX_L4_BASE + cfg->mux_reg, | 88 | u8 orig = omap_readb(OMAP24XX_L4_BASE + cfg->mux_reg); |
| 89 | omap_readb(OMAP24XX_L4_BASE + cfg->mux_reg), reg); | 89 | u8 debug = 0; |
| 90 | |||
| 91 | #ifdef CONFIG_OMAP_MUX_DEBUG | ||
| 92 | debug = cfg->debug; | ||
| 93 | #endif | ||
| 94 | warn = (orig != reg); | ||
| 95 | if (debug || warn) | ||
| 96 | printk("MUX: setup %s (0x%08x): 0x%02x -> 0x%02x\n", | ||
| 97 | cfg->name, | ||
| 98 | OMAP24XX_L4_BASE + cfg->mux_reg, | ||
| 99 | orig, reg); | ||
| 100 | } | ||
| 90 | #endif | 101 | #endif |
| 91 | omap_writeb(reg, OMAP24XX_L4_BASE + cfg->mux_reg); | 102 | omap_writeb(reg, OMAP24XX_L4_BASE + cfg->mux_reg); |
| 92 | 103 | ||
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index b1142ce4ac47..0a9a5e7f62e5 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | # | 12 | # |
| 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new | 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new |
| 14 | # | 14 | # |
| 15 | # Last update: Mon Apr 16 21:01:04 2007 | 15 | # Last update: Fri May 11 19:53:41 2007 |
| 16 | # | 16 | # |
| 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number | 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number |
| 18 | # | 18 | # |
| @@ -1335,3 +1335,35 @@ at91sam9rlek MACH_AT91SAM9RLEK AT91SAM9RLEK 1326 | |||
| 1335 | comtech_router MACH_COMTECH_ROUTER COMTECH_ROUTER 1327 | 1335 | comtech_router MACH_COMTECH_ROUTER COMTECH_ROUTER 1327 |
| 1336 | sbc2410x MACH_SBC2410X SBC2410X 1328 | 1336 | sbc2410x MACH_SBC2410X SBC2410X 1328 |
| 1337 | at4x0bd MACH_AT4X0BD AT4X0BD 1329 | 1337 | at4x0bd MACH_AT4X0BD AT4X0BD 1329 |
| 1338 | cbifr MACH_CBIFR CBIFR 1330 | ||
| 1339 | arcom_quantum MACH_ARCOM_QUANTUM ARCOM_QUANTUM 1331 | ||
| 1340 | matrix520 MACH_MATRIX520 MATRIX520 1332 | ||
| 1341 | matrix510 MACH_MATRIX510 MATRIX510 1333 | ||
| 1342 | matrix500 MACH_MATRIX500 MATRIX500 1334 | ||
| 1343 | m501 MACH_M501 M501 1335 | ||
| 1344 | aaeon1270 MACH_AAEON1270 AAEON1270 1336 | ||
| 1345 | matrix500ev MACH_MATRIX500EV MATRIX500EV 1337 | ||
| 1346 | pac500 MACH_PAC500 PAC500 1338 | ||
| 1347 | pnx8181 MACH_PNX8181 PNX8181 1339 | ||
| 1348 | colibri320 MACH_COLIBRI320 COLIBRI320 1340 | ||
| 1349 | aztoolbb MACH_AZTOOLBB AZTOOLBB 1341 | ||
| 1350 | aztoolg2 MACH_AZTOOLG2 AZTOOLG2 1342 | ||
| 1351 | dvlhost MACH_DVLHOST DVLHOST 1343 | ||
| 1352 | zir9200 MACH_ZIR9200 ZIR9200 1344 | ||
| 1353 | zir9260 MACH_ZIR9260 ZIR9260 1345 | ||
| 1354 | cocopah MACH_COCOPAH COCOPAH 1346 | ||
| 1355 | nds MACH_NDS NDS 1347 | ||
| 1356 | rosencrantz MACH_ROSENCRANTZ ROSENCRANTZ 1348 | ||
| 1357 | fttx_odsc MACH_FTTX_ODSC FTTX_ODSC 1349 | ||
| 1358 | classe_r6904 MACH_CLASSE_R6904 CLASSE_R6904 1350 | ||
| 1359 | cam60 MACH_CAM60 CAM60 1351 | ||
| 1360 | mxc30031ads MACH_MXC30031ADS MXC30031ADS 1352 | ||
| 1361 | datacall MACH_DATACALL DATACALL 1353 | ||
| 1362 | at91eb01 MACH_AT91EB01 AT91EB01 1354 | ||
| 1363 | rty MACH_RTY RTY 1355 | ||
| 1364 | dwl2100 MACH_DWL2100 DWL2100 1356 | ||
| 1365 | vinsi MACH_VINSI VINSI 1357 | ||
| 1366 | db88f5281 MACH_DB88F5281 DB88F5281 1358 | ||
| 1367 | csb726 MACH_CSB726 CSB726 1359 | ||
| 1368 | tik27 MACH_TIK27 TIK27 1360 | ||
| 1369 | mx_uc7420 MACH_MX_UC7420 MX_UC7420 1361 | ||
diff --git a/drivers/ata/pata_icside.c b/drivers/ata/pata_icside.c index dbc8ee2adcf0..c791a46df461 100644 --- a/drivers/ata/pata_icside.c +++ b/drivers/ata/pata_icside.c | |||
| @@ -60,6 +60,18 @@ struct pata_icside_state { | |||
| 60 | struct scatterlist sg[PATA_ICSIDE_MAX_SG]; | 60 | struct scatterlist sg[PATA_ICSIDE_MAX_SG]; |
| 61 | }; | 61 | }; |
| 62 | 62 | ||
| 63 | struct pata_icside_info { | ||
| 64 | struct pata_icside_state *state; | ||
| 65 | struct expansion_card *ec; | ||
| 66 | void __iomem *base; | ||
| 67 | void __iomem *irqaddr; | ||
| 68 | unsigned int irqmask; | ||
| 69 | const expansioncard_ops_t *irqops; | ||
| 70 | unsigned int mwdma_mask; | ||
| 71 | unsigned int nr_ports; | ||
| 72 | const struct portinfo *port[2]; | ||
| 73 | }; | ||
| 74 | |||
| 63 | #define ICS_TYPE_A3IN 0 | 75 | #define ICS_TYPE_A3IN 0 |
| 64 | #define ICS_TYPE_A3USER 1 | 76 | #define ICS_TYPE_A3USER 1 |
| 65 | #define ICS_TYPE_V6 3 | 77 | #define ICS_TYPE_V6 3 |
| @@ -269,9 +281,10 @@ static u8 pata_icside_bmdma_status(struct ata_port *ap) | |||
| 269 | return readb(irq_port) & 1 ? ATA_DMA_INTR : 0; | 281 | return readb(irq_port) & 1 ? ATA_DMA_INTR : 0; |
| 270 | } | 282 | } |
| 271 | 283 | ||
| 272 | static int icside_dma_init(struct ata_probe_ent *ae, struct expansion_card *ec) | 284 | static int icside_dma_init(struct pata_icside_info *info) |
| 273 | { | 285 | { |
| 274 | struct pata_icside_state *state = ae->private_data; | 286 | struct pata_icside_state *state = info->state; |
| 287 | struct expansion_card *ec = info->ec; | ||
| 275 | int i; | 288 | int i; |
| 276 | 289 | ||
| 277 | for (i = 0; i < ATA_MAX_DEVICES; i++) { | 290 | for (i = 0; i < ATA_MAX_DEVICES; i++) { |
| @@ -281,7 +294,7 @@ static int icside_dma_init(struct ata_probe_ent *ae, struct expansion_card *ec) | |||
| 281 | 294 | ||
| 282 | if (ec->dma != NO_DMA && !request_dma(ec->dma, DRV_NAME)) { | 295 | if (ec->dma != NO_DMA && !request_dma(ec->dma, DRV_NAME)) { |
| 283 | state->dma = ec->dma; | 296 | state->dma = ec->dma; |
| 284 | ae->mwdma_mask = 0x07; /* MW0..2 */ | 297 | info->mwdma_mask = 0x07; /* MW0..2 */ |
| 285 | } | 298 | } |
| 286 | 299 | ||
| 287 | return 0; | 300 | return 0; |
| @@ -371,6 +384,8 @@ static struct ata_port_operations pata_icside_port_ops = { | |||
| 371 | .check_status = ata_check_status, | 384 | .check_status = ata_check_status, |
| 372 | .dev_select = ata_std_dev_select, | 385 | .dev_select = ata_std_dev_select, |
| 373 | 386 | ||
| 387 | .cable_detect = ata_cable_40wire, | ||
| 388 | |||
| 374 | .bmdma_setup = pata_icside_bmdma_setup, | 389 | .bmdma_setup = pata_icside_bmdma_setup, |
| 375 | .bmdma_start = pata_icside_bmdma_start, | 390 | .bmdma_start = pata_icside_bmdma_start, |
| 376 | 391 | ||
| @@ -385,7 +400,6 @@ static struct ata_port_operations pata_icside_port_ops = { | |||
| 385 | .error_handler = ata_bmdma_error_handler, | 400 | .error_handler = ata_bmdma_error_handler, |
| 386 | .post_internal_cmd = pata_icside_bmdma_stop, | 401 | .post_internal_cmd = pata_icside_bmdma_stop, |
| 387 | 402 | ||
| 388 | .irq_handler = ata_interrupt, | ||
| 389 | .irq_clear = ata_dummy_noret, | 403 | .irq_clear = ata_dummy_noret, |
| 390 | .irq_on = ata_irq_on, | 404 | .irq_on = ata_irq_on, |
| 391 | .irq_ack = pata_icside_irq_ack, | 405 | .irq_ack = pata_icside_irq_ack, |
| @@ -396,11 +410,10 @@ static struct ata_port_operations pata_icside_port_ops = { | |||
| 396 | .bmdma_status = pata_icside_bmdma_status, | 410 | .bmdma_status = pata_icside_bmdma_status, |
| 397 | }; | 411 | }; |
| 398 | 412 | ||
| 399 | static void | 413 | static void __devinit |
| 400 | pata_icside_add_port(struct ata_probe_ent *ae, void __iomem *base, | 414 | pata_icside_setup_ioaddr(struct ata_ioports *ioaddr, void __iomem *base, |
| 401 | const struct portinfo *info) | 415 | const struct portinfo *info) |
| 402 | { | 416 | { |
| 403 | struct ata_ioports *ioaddr = &ae->port[ae->n_ports++]; | ||
| 404 | void __iomem *cmd = base + info->dataoffset; | 417 | void __iomem *cmd = base + info->dataoffset; |
| 405 | 418 | ||
| 406 | ioaddr->cmd_addr = cmd; | 419 | ioaddr->cmd_addr = cmd; |
| @@ -419,58 +432,44 @@ pata_icside_add_port(struct ata_probe_ent *ae, void __iomem *base, | |||
| 419 | ioaddr->altstatus_addr = ioaddr->ctl_addr; | 432 | ioaddr->altstatus_addr = ioaddr->ctl_addr; |
| 420 | } | 433 | } |
| 421 | 434 | ||
| 422 | static int __init | 435 | static int __devinit pata_icside_register_v5(struct pata_icside_info *info) |
| 423 | pata_icside_register_v5(struct ata_probe_ent *ae, struct expansion_card *ec) | ||
| 424 | { | 436 | { |
| 425 | struct pata_icside_state *state = ae->private_data; | 437 | struct pata_icside_state *state = info->state; |
| 426 | void __iomem *base; | 438 | void __iomem *base; |
| 427 | 439 | ||
| 428 | base = ioremap(ecard_resource_start(ec, ECARD_RES_MEMC), | 440 | base = ecardm_iomap(info->ec, ECARD_RES_MEMC, 0, 0); |
| 429 | ecard_resource_len(ec, ECARD_RES_MEMC)); | ||
| 430 | if (!base) | 441 | if (!base) |
| 431 | return -ENOMEM; | 442 | return -ENOMEM; |
| 432 | 443 | ||
| 433 | state->irq_port = base; | 444 | state->irq_port = base; |
| 434 | 445 | ||
| 435 | ec->irqaddr = base + ICS_ARCIN_V5_INTRSTAT; | 446 | info->base = base; |
| 436 | ec->irqmask = 1; | 447 | info->irqaddr = base + ICS_ARCIN_V5_INTRSTAT; |
| 437 | ec->irq_data = state; | 448 | info->irqmask = 1; |
| 438 | ec->ops = &pata_icside_ops_arcin_v5; | 449 | info->irqops = &pata_icside_ops_arcin_v5; |
| 439 | 450 | info->nr_ports = 1; | |
| 440 | /* | 451 | info->port[0] = &pata_icside_portinfo_v5; |
| 441 | * Be on the safe side - disable interrupts | ||
| 442 | */ | ||
| 443 | ec->ops->irqdisable(ec, ec->irq); | ||
| 444 | |||
| 445 | pata_icside_add_port(ae, base, &pata_icside_portinfo_v5); | ||
| 446 | 452 | ||
| 447 | return 0; | 453 | return 0; |
| 448 | } | 454 | } |
| 449 | 455 | ||
| 450 | static int __init | 456 | static int __devinit pata_icside_register_v6(struct pata_icside_info *info) |
| 451 | pata_icside_register_v6(struct ata_probe_ent *ae, struct expansion_card *ec) | ||
| 452 | { | 457 | { |
| 453 | struct pata_icside_state *state = ae->private_data; | 458 | struct pata_icside_state *state = info->state; |
| 459 | struct expansion_card *ec = info->ec; | ||
| 454 | void __iomem *ioc_base, *easi_base; | 460 | void __iomem *ioc_base, *easi_base; |
| 455 | unsigned int sel = 0; | 461 | unsigned int sel = 0; |
| 456 | int ret; | ||
| 457 | 462 | ||
| 458 | ioc_base = ioremap(ecard_resource_start(ec, ECARD_RES_IOCFAST), | 463 | ioc_base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0); |
| 459 | ecard_resource_len(ec, ECARD_RES_IOCFAST)); | 464 | if (!ioc_base) |
| 460 | if (!ioc_base) { | 465 | return -ENOMEM; |
| 461 | ret = -ENOMEM; | ||
| 462 | goto out; | ||
| 463 | } | ||
| 464 | 466 | ||
| 465 | easi_base = ioc_base; | 467 | easi_base = ioc_base; |
| 466 | 468 | ||
| 467 | if (ecard_resource_flags(ec, ECARD_RES_EASI)) { | 469 | if (ecard_resource_flags(ec, ECARD_RES_EASI)) { |
| 468 | easi_base = ioremap(ecard_resource_start(ec, ECARD_RES_EASI), | 470 | easi_base = ecardm_iomap(ec, ECARD_RES_EASI, 0, 0); |
| 469 | ecard_resource_len(ec, ECARD_RES_EASI)); | 471 | if (!easi_base) |
| 470 | if (!easi_base) { | 472 | return -ENOMEM; |
| 471 | ret = -ENOMEM; | ||
| 472 | goto unmap_slot; | ||
| 473 | } | ||
| 474 | 473 | ||
| 475 | /* | 474 | /* |
| 476 | * Enable access to the EASI region. | 475 | * Enable access to the EASI region. |
| @@ -480,45 +479,72 @@ pata_icside_register_v6(struct ata_probe_ent *ae, struct expansion_card *ec) | |||
| 480 | 479 | ||
| 481 | writeb(sel, ioc_base); | 480 | writeb(sel, ioc_base); |
| 482 | 481 | ||
| 483 | ec->irq_data = state; | ||
| 484 | ec->ops = &pata_icside_ops_arcin_v6; | ||
| 485 | |||
| 486 | state->irq_port = easi_base; | 482 | state->irq_port = easi_base; |
| 487 | state->ioc_base = ioc_base; | 483 | state->ioc_base = ioc_base; |
| 488 | state->port[0].port_sel = sel; | 484 | state->port[0].port_sel = sel; |
| 489 | state->port[1].port_sel = sel | 1; | 485 | state->port[1].port_sel = sel | 1; |
| 490 | 486 | ||
| 491 | /* | 487 | /* |
| 492 | * Be on the safe side - disable interrupts | ||
| 493 | */ | ||
| 494 | ec->ops->irqdisable(ec, ec->irq); | ||
| 495 | |||
| 496 | /* | ||
| 497 | * Find and register the interfaces. | ||
| 498 | */ | ||
| 499 | pata_icside_add_port(ae, easi_base, &pata_icside_portinfo_v6_1); | ||
| 500 | pata_icside_add_port(ae, easi_base, &pata_icside_portinfo_v6_2); | ||
| 501 | |||
| 502 | /* | ||
| 503 | * FIXME: work around libata's aversion to calling port_disable. | 488 | * FIXME: work around libata's aversion to calling port_disable. |
| 504 | * This permanently disables interrupts on port 0 - bad luck if | 489 | * This permanently disables interrupts on port 0 - bad luck if |
| 505 | * you have a drive on that port. | 490 | * you have a drive on that port. |
| 506 | */ | 491 | */ |
| 507 | state->port[0].disabled = 1; | 492 | state->port[0].disabled = 1; |
| 508 | 493 | ||
| 509 | return icside_dma_init(ae, ec); | 494 | info->base = easi_base; |
| 495 | info->irqops = &pata_icside_ops_arcin_v6; | ||
| 496 | info->nr_ports = 2; | ||
| 497 | info->port[0] = &pata_icside_portinfo_v6_1; | ||
| 498 | info->port[1] = &pata_icside_portinfo_v6_2; | ||
| 510 | 499 | ||
| 511 | unmap_slot: | 500 | return icside_dma_init(info); |
| 512 | iounmap(ioc_base); | 501 | } |
| 513 | out: | 502 | |
| 514 | return ret; | 503 | static int __devinit pata_icside_add_ports(struct pata_icside_info *info) |
| 504 | { | ||
| 505 | struct expansion_card *ec = info->ec; | ||
| 506 | struct ata_host *host; | ||
| 507 | int i; | ||
| 508 | |||
| 509 | if (info->irqaddr) { | ||
| 510 | ec->irqaddr = info->irqaddr; | ||
| 511 | ec->irqmask = info->irqmask; | ||
| 512 | } | ||
| 513 | if (info->irqops) | ||
| 514 | ecard_setirq(ec, info->irqops, info->state); | ||
| 515 | |||
| 516 | /* | ||
| 517 | * Be on the safe side - disable interrupts | ||
| 518 | */ | ||
| 519 | ec->ops->irqdisable(ec, ec->irq); | ||
| 520 | |||
| 521 | host = ata_host_alloc(&ec->dev, info->nr_ports); | ||
| 522 | if (!host) | ||
| 523 | return -ENOMEM; | ||
| 524 | |||
| 525 | host->private_data = info->state; | ||
| 526 | host->flags = ATA_HOST_SIMPLEX; | ||
| 527 | |||
| 528 | for (i = 0; i < info->nr_ports; i++) { | ||
| 529 | struct ata_port *ap = host->ports[i]; | ||
| 530 | |||
| 531 | ap->pio_mask = 0x1f; | ||
| 532 | ap->mwdma_mask = info->mwdma_mask; | ||
| 533 | ap->flags |= ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST; | ||
| 534 | ap->ops = &pata_icside_port_ops; | ||
| 535 | |||
| 536 | pata_icside_setup_ioaddr(&ap->ioaddr, info->base, info->port[i]); | ||
| 537 | } | ||
| 538 | |||
| 539 | return ata_host_activate(host, ec->irq, ata_interrupt, 0, | ||
| 540 | &pata_icside_sht); | ||
| 515 | } | 541 | } |
| 516 | 542 | ||
| 517 | static int __devinit | 543 | static int __devinit |
| 518 | pata_icside_probe(struct expansion_card *ec, const struct ecard_id *id) | 544 | pata_icside_probe(struct expansion_card *ec, const struct ecard_id *id) |
| 519 | { | 545 | { |
| 520 | struct pata_icside_state *state; | 546 | struct pata_icside_state *state; |
| 521 | struct ata_probe_ent ae; | 547 | struct pata_icside_info info; |
| 522 | void __iomem *idmem; | 548 | void __iomem *idmem; |
| 523 | int ret; | 549 | int ret; |
| 524 | 550 | ||
| @@ -526,7 +552,7 @@ pata_icside_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 526 | if (ret) | 552 | if (ret) |
| 527 | goto out; | 553 | goto out; |
| 528 | 554 | ||
| 529 | state = kzalloc(sizeof(struct pata_icside_state), GFP_KERNEL); | 555 | state = devm_kzalloc(&ec->dev, sizeof(*state), GFP_KERNEL); |
| 530 | if (!state) { | 556 | if (!state) { |
| 531 | ret = -ENOMEM; | 557 | ret = -ENOMEM; |
| 532 | goto release; | 558 | goto release; |
| @@ -535,8 +561,7 @@ pata_icside_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 535 | state->type = ICS_TYPE_NOTYPE; | 561 | state->type = ICS_TYPE_NOTYPE; |
| 536 | state->dma = NO_DMA; | 562 | state->dma = NO_DMA; |
| 537 | 563 | ||
| 538 | idmem = ioremap(ecard_resource_start(ec, ECARD_RES_IOCFAST), | 564 | idmem = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0); |
| 539 | ecard_resource_len(ec, ECARD_RES_IOCFAST)); | ||
| 540 | if (idmem) { | 565 | if (idmem) { |
| 541 | unsigned int type; | 566 | unsigned int type; |
| 542 | 567 | ||
| @@ -544,21 +569,14 @@ pata_icside_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 544 | type |= (readb(idmem + ICS_IDENT_OFFSET + 4) & 1) << 1; | 569 | type |= (readb(idmem + ICS_IDENT_OFFSET + 4) & 1) << 1; |
| 545 | type |= (readb(idmem + ICS_IDENT_OFFSET + 8) & 1) << 2; | 570 | type |= (readb(idmem + ICS_IDENT_OFFSET + 8) & 1) << 2; |
| 546 | type |= (readb(idmem + ICS_IDENT_OFFSET + 12) & 1) << 3; | 571 | type |= (readb(idmem + ICS_IDENT_OFFSET + 12) & 1) << 3; |
| 547 | iounmap(idmem); | 572 | ecardm_iounmap(ec, idmem); |
| 548 | 573 | ||
| 549 | state->type = type; | 574 | state->type = type; |
| 550 | } | 575 | } |
| 551 | 576 | ||
| 552 | memset(&ae, 0, sizeof(ae)); | 577 | memset(&info, 0, sizeof(info)); |
| 553 | INIT_LIST_HEAD(&ae.node); | 578 | info.state = state; |
| 554 | ae.dev = &ec->dev; | 579 | info.ec = ec; |
| 555 | ae.port_ops = &pata_icside_port_ops; | ||
| 556 | ae.sht = &pata_icside_sht; | ||
| 557 | ae.pio_mask = 0x1f; | ||
| 558 | ae.irq = ec->irq; | ||
| 559 | ae.port_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST; | ||
| 560 | ae._host_flags = ATA_HOST_SIMPLEX; | ||
| 561 | ae.private_data = state; | ||
| 562 | 580 | ||
| 563 | switch (state->type) { | 581 | switch (state->type) { |
| 564 | case ICS_TYPE_A3IN: | 582 | case ICS_TYPE_A3IN: |
| @@ -572,11 +590,11 @@ pata_icside_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 572 | break; | 590 | break; |
| 573 | 591 | ||
| 574 | case ICS_TYPE_V5: | 592 | case ICS_TYPE_V5: |
| 575 | ret = pata_icside_register_v5(&ae, ec); | 593 | ret = pata_icside_register_v5(&info); |
| 576 | break; | 594 | break; |
| 577 | 595 | ||
| 578 | case ICS_TYPE_V6: | 596 | case ICS_TYPE_V6: |
| 579 | ret = pata_icside_register_v6(&ae, ec); | 597 | ret = pata_icside_register_v6(&info); |
| 580 | break; | 598 | break; |
| 581 | 599 | ||
| 582 | default: | 600 | default: |
| @@ -586,12 +604,11 @@ pata_icside_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 586 | } | 604 | } |
| 587 | 605 | ||
| 588 | if (ret == 0) | 606 | if (ret == 0) |
| 589 | ret = ata_device_add(&ae) == 0 ? -ENODEV : 0; | 607 | ret = pata_icside_add_ports(&info); |
| 590 | 608 | ||
| 591 | if (ret == 0) | 609 | if (ret == 0) |
| 592 | goto out; | 610 | goto out; |
| 593 | 611 | ||
| 594 | kfree(state); | ||
| 595 | release: | 612 | release: |
| 596 | ecard_release_resources(ec); | 613 | ecard_release_resources(ec); |
| 597 | out: | 614 | out: |
| @@ -609,8 +626,7 @@ static void pata_icside_shutdown(struct expansion_card *ec) | |||
| 609 | * this register via that region. | 626 | * this register via that region. |
| 610 | */ | 627 | */ |
| 611 | local_irq_save(flags); | 628 | local_irq_save(flags); |
| 612 | if (ec->ops) | 629 | ec->ops->irqdisable(ec, ec->irq); |
| 613 | ec->ops->irqdisable(ec, ec->irq); | ||
| 614 | local_irq_restore(flags); | 630 | local_irq_restore(flags); |
| 615 | 631 | ||
| 616 | /* | 632 | /* |
| @@ -638,17 +654,9 @@ static void __devexit pata_icside_remove(struct expansion_card *ec) | |||
| 638 | * don't NULL out the drvdata - devres/libata wants it | 654 | * don't NULL out the drvdata - devres/libata wants it |
| 639 | * to free the ata_host structure. | 655 | * to free the ata_host structure. |
| 640 | */ | 656 | */ |
| 641 | ec->ops = NULL; | ||
| 642 | ec->irq_data = NULL; | ||
| 643 | |||
| 644 | if (state->dma != NO_DMA) | 657 | if (state->dma != NO_DMA) |
| 645 | free_dma(state->dma); | 658 | free_dma(state->dma); |
| 646 | if (state->ioc_base) | ||
| 647 | iounmap(state->ioc_base); | ||
| 648 | if (state->ioc_base != state->irq_port) | ||
| 649 | iounmap(state->irq_port); | ||
| 650 | 659 | ||
| 651 | kfree(state); | ||
| 652 | ecard_release_resources(ec); | 660 | ecard_release_resources(ec); |
| 653 | } | 661 | } |
| 654 | 662 | ||
diff --git a/drivers/ide/arm/icside.c b/drivers/ide/arm/icside.c index 1fe0457243db..66f826252aee 100644 --- a/drivers/ide/arm/icside.c +++ b/drivers/ide/arm/icside.c | |||
| @@ -565,8 +565,7 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec) | |||
| 565 | ide_hwif_t *hwif; | 565 | ide_hwif_t *hwif; |
| 566 | void __iomem *base; | 566 | void __iomem *base; |
| 567 | 567 | ||
| 568 | base = ioremap(ecard_resource_start(ec, ECARD_RES_MEMC), | 568 | base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0); |
| 569 | ecard_resource_len(ec, ECARD_RES_MEMC)); | ||
| 570 | if (!base) | 569 | if (!base) |
| 571 | return -ENOMEM; | 570 | return -ENOMEM; |
| 572 | 571 | ||
| @@ -574,8 +573,8 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec) | |||
| 574 | 573 | ||
| 575 | ec->irqaddr = base + ICS_ARCIN_V5_INTRSTAT; | 574 | ec->irqaddr = base + ICS_ARCIN_V5_INTRSTAT; |
| 576 | ec->irqmask = 1; | 575 | ec->irqmask = 1; |
| 577 | ec->irq_data = state; | 576 | |
| 578 | ec->ops = &icside_ops_arcin_v5; | 577 | ecard_setirq(ec, &icside_ops_arcin_v5, state); |
| 579 | 578 | ||
| 580 | /* | 579 | /* |
| 581 | * Be on the safe side - disable interrupts | 580 | * Be on the safe side - disable interrupts |
| @@ -583,10 +582,8 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec) | |||
| 583 | icside_irqdisable_arcin_v5(ec, 0); | 582 | icside_irqdisable_arcin_v5(ec, 0); |
| 584 | 583 | ||
| 585 | hwif = icside_setup(base, &icside_cardinfo_v5, ec); | 584 | hwif = icside_setup(base, &icside_cardinfo_v5, ec); |
| 586 | if (!hwif) { | 585 | if (!hwif) |
| 587 | iounmap(base); | ||
| 588 | return -ENODEV; | 586 | return -ENODEV; |
| 589 | } | ||
| 590 | 587 | ||
| 591 | state->hwif[0] = hwif; | 588 | state->hwif[0] = hwif; |
| 592 | 589 | ||
| @@ -605,8 +602,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec) | |||
| 605 | unsigned int sel = 0; | 602 | unsigned int sel = 0; |
| 606 | int ret; | 603 | int ret; |
| 607 | 604 | ||
| 608 | ioc_base = ioremap(ecard_resource_start(ec, ECARD_RES_IOCFAST), | 605 | ioc_base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0); |
| 609 | ecard_resource_len(ec, ECARD_RES_IOCFAST)); | ||
| 610 | if (!ioc_base) { | 606 | if (!ioc_base) { |
| 611 | ret = -ENOMEM; | 607 | ret = -ENOMEM; |
| 612 | goto out; | 608 | goto out; |
| @@ -615,11 +611,10 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec) | |||
| 615 | easi_base = ioc_base; | 611 | easi_base = ioc_base; |
| 616 | 612 | ||
| 617 | if (ecard_resource_flags(ec, ECARD_RES_EASI)) { | 613 | if (ecard_resource_flags(ec, ECARD_RES_EASI)) { |
| 618 | easi_base = ioremap(ecard_resource_start(ec, ECARD_RES_EASI), | 614 | easi_base = ecardm_iomap(ec, ECARD_RES_EASI, 0, 0); |
| 619 | ecard_resource_len(ec, ECARD_RES_EASI)); | ||
| 620 | if (!easi_base) { | 615 | if (!easi_base) { |
| 621 | ret = -ENOMEM; | 616 | ret = -ENOMEM; |
| 622 | goto unmap_slot; | 617 | goto out; |
| 623 | } | 618 | } |
| 624 | 619 | ||
| 625 | /* | 620 | /* |
| @@ -630,8 +625,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec) | |||
| 630 | 625 | ||
| 631 | writeb(sel, ioc_base); | 626 | writeb(sel, ioc_base); |
| 632 | 627 | ||
| 633 | ec->irq_data = state; | 628 | ecard_setirq(ec, &icside_ops_arcin_v6, state); |
| 634 | ec->ops = &icside_ops_arcin_v6; | ||
| 635 | 629 | ||
| 636 | state->irq_port = easi_base; | 630 | state->irq_port = easi_base; |
| 637 | state->ioc_base = ioc_base; | 631 | state->ioc_base = ioc_base; |
| @@ -649,7 +643,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec) | |||
| 649 | 643 | ||
| 650 | if (!hwif || !mate) { | 644 | if (!hwif || !mate) { |
| 651 | ret = -ENODEV; | 645 | ret = -ENODEV; |
| 652 | goto unmap_port; | 646 | goto out; |
| 653 | } | 647 | } |
| 654 | 648 | ||
| 655 | state->hwif[0] = hwif; | 649 | state->hwif[0] = hwif; |
| @@ -686,11 +680,6 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec) | |||
| 686 | 680 | ||
| 687 | return 0; | 681 | return 0; |
| 688 | 682 | ||
| 689 | unmap_port: | ||
| 690 | if (easi_base != ioc_base) | ||
| 691 | iounmap(easi_base); | ||
| 692 | unmap_slot: | ||
| 693 | iounmap(ioc_base); | ||
| 694 | out: | 683 | out: |
| 695 | return ret; | 684 | return ret; |
| 696 | } | 685 | } |
| @@ -716,8 +705,7 @@ icside_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 716 | state->type = ICS_TYPE_NOTYPE; | 705 | state->type = ICS_TYPE_NOTYPE; |
| 717 | state->dev = &ec->dev; | 706 | state->dev = &ec->dev; |
| 718 | 707 | ||
| 719 | idmem = ioremap(ecard_resource_start(ec, ECARD_RES_IOCFAST), | 708 | idmem = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0); |
| 720 | ecard_resource_len(ec, ECARD_RES_IOCFAST)); | ||
| 721 | if (idmem) { | 709 | if (idmem) { |
| 722 | unsigned int type; | 710 | unsigned int type; |
| 723 | 711 | ||
| @@ -725,7 +713,7 @@ icside_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 725 | type |= (readb(idmem + ICS_IDENT_OFFSET + 4) & 1) << 1; | 713 | type |= (readb(idmem + ICS_IDENT_OFFSET + 4) & 1) << 1; |
| 726 | type |= (readb(idmem + ICS_IDENT_OFFSET + 8) & 1) << 2; | 714 | type |= (readb(idmem + ICS_IDENT_OFFSET + 8) & 1) << 2; |
| 727 | type |= (readb(idmem + ICS_IDENT_OFFSET + 12) & 1) << 3; | 715 | type |= (readb(idmem + ICS_IDENT_OFFSET + 12) & 1) << 3; |
| 728 | iounmap(idmem); | 716 | ecardm_iounmap(ec, idmem); |
| 729 | 717 | ||
| 730 | state->type = type; | 718 | state->type = type; |
| 731 | } | 719 | } |
| @@ -793,13 +781,6 @@ static void __devexit icside_remove(struct expansion_card *ec) | |||
| 793 | } | 781 | } |
| 794 | 782 | ||
| 795 | ecard_set_drvdata(ec, NULL); | 783 | ecard_set_drvdata(ec, NULL); |
| 796 | ec->ops = NULL; | ||
| 797 | ec->irq_data = NULL; | ||
| 798 | |||
| 799 | if (state->ioc_base) | ||
| 800 | iounmap(state->ioc_base); | ||
| 801 | if (state->ioc_base != state->irq_port) | ||
| 802 | iounmap(state->irq_port); | ||
| 803 | 784 | ||
| 804 | kfree(state); | 785 | kfree(state); |
| 805 | ecard_release_resources(ec); | 786 | ecard_release_resources(ec); |
diff --git a/drivers/ide/arm/rapide.c b/drivers/ide/arm/rapide.c index 890ea3fac3c6..83811af11610 100644 --- a/drivers/ide/arm/rapide.c +++ b/drivers/ide/arm/rapide.c | |||
| @@ -63,8 +63,7 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 63 | if (ret) | 63 | if (ret) |
| 64 | goto out; | 64 | goto out; |
| 65 | 65 | ||
| 66 | base = ioremap(ecard_resource_start(ec, ECARD_RES_MEMC), | 66 | base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0); |
| 67 | ecard_resource_len(ec, ECARD_RES_MEMC)); | ||
| 68 | if (!base) { | 67 | if (!base) { |
| 69 | ret = -ENOMEM; | 68 | ret = -ENOMEM; |
| 70 | goto release; | 69 | goto release; |
| @@ -81,7 +80,6 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 81 | goto out; | 80 | goto out; |
| 82 | } | 81 | } |
| 83 | 82 | ||
| 84 | iounmap(base); | ||
| 85 | release: | 83 | release: |
| 86 | ecard_release_resources(ec); | 84 | ecard_release_resources(ec); |
| 87 | out: | 85 | out: |
| @@ -96,7 +94,6 @@ static void __devexit rapide_remove(struct expansion_card *ec) | |||
| 96 | 94 | ||
| 97 | /* there must be a better way */ | 95 | /* there must be a better way */ |
| 98 | ide_unregister(hwif - ide_hwifs); | 96 | ide_unregister(hwif - ide_hwifs); |
| 99 | iounmap(hwif->hwif_data); | ||
| 100 | ecard_release_resources(ec); | 97 | ecard_release_resources(ec); |
| 101 | } | 98 | } |
| 102 | 99 | ||
diff --git a/drivers/net/arm/ether1.c b/drivers/net/arm/ether1.c index f075cebe84ad..f21148e7b579 100644 --- a/drivers/net/arm/ether1.c +++ b/drivers/net/arm/ether1.c | |||
| @@ -1014,8 +1014,7 @@ ether1_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 1014 | SET_NETDEV_DEV(dev, &ec->dev); | 1014 | SET_NETDEV_DEV(dev, &ec->dev); |
| 1015 | 1015 | ||
| 1016 | dev->irq = ec->irq; | 1016 | dev->irq = ec->irq; |
| 1017 | priv(dev)->base = ioremap(ecard_resource_start(ec, ECARD_RES_IOCFAST), | 1017 | priv(dev)->base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0); |
| 1018 | ecard_resource_len(ec, ECARD_RES_IOCFAST)); | ||
| 1019 | if (!priv(dev)->base) { | 1018 | if (!priv(dev)->base) { |
| 1020 | ret = -ENOMEM; | 1019 | ret = -ENOMEM; |
| 1021 | goto free; | 1020 | goto free; |
| @@ -1056,8 +1055,6 @@ ether1_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 1056 | return 0; | 1055 | return 0; |
| 1057 | 1056 | ||
| 1058 | free: | 1057 | free: |
| 1059 | if (priv(dev)->base) | ||
| 1060 | iounmap(priv(dev)->base); | ||
| 1061 | free_netdev(dev); | 1058 | free_netdev(dev); |
| 1062 | release: | 1059 | release: |
| 1063 | ecard_release_resources(ec); | 1060 | ecard_release_resources(ec); |
| @@ -1072,7 +1069,6 @@ static void __devexit ether1_remove(struct expansion_card *ec) | |||
| 1072 | ecard_set_drvdata(ec, NULL); | 1069 | ecard_set_drvdata(ec, NULL); |
| 1073 | 1070 | ||
| 1074 | unregister_netdev(dev); | 1071 | unregister_netdev(dev); |
| 1075 | iounmap(priv(dev)->base); | ||
| 1076 | free_netdev(dev); | 1072 | free_netdev(dev); |
| 1077 | ecard_release_resources(ec); | 1073 | ecard_release_resources(ec); |
| 1078 | } | 1074 | } |
diff --git a/drivers/net/arm/ether3.c b/drivers/net/arm/ether3.c index 32da2eb9bcee..da713500654d 100644 --- a/drivers/net/arm/ether3.c +++ b/drivers/net/arm/ether3.c | |||
| @@ -793,8 +793,7 @@ ether3_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 793 | SET_MODULE_OWNER(dev); | 793 | SET_MODULE_OWNER(dev); |
| 794 | SET_NETDEV_DEV(dev, &ec->dev); | 794 | SET_NETDEV_DEV(dev, &ec->dev); |
| 795 | 795 | ||
| 796 | priv(dev)->base = ioremap(ecard_resource_start(ec, ECARD_RES_MEMC), | 796 | priv(dev)->base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0); |
| 797 | ecard_resource_len(ec, ECARD_RES_MEMC)); | ||
| 798 | if (!priv(dev)->base) { | 797 | if (!priv(dev)->base) { |
| 799 | ret = -ENOMEM; | 798 | ret = -ENOMEM; |
| 800 | goto free; | 799 | goto free; |
| @@ -869,8 +868,6 @@ ether3_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 869 | return 0; | 868 | return 0; |
| 870 | 869 | ||
| 871 | free: | 870 | free: |
| 872 | if (priv(dev)->base) | ||
| 873 | iounmap(priv(dev)->base); | ||
| 874 | free_netdev(dev); | 871 | free_netdev(dev); |
| 875 | release: | 872 | release: |
| 876 | ecard_release_resources(ec); | 873 | ecard_release_resources(ec); |
| @@ -885,7 +882,6 @@ static void __devexit ether3_remove(struct expansion_card *ec) | |||
| 885 | ecard_set_drvdata(ec, NULL); | 882 | ecard_set_drvdata(ec, NULL); |
| 886 | 883 | ||
| 887 | unregister_netdev(dev); | 884 | unregister_netdev(dev); |
| 888 | iounmap(priv(dev)->base); | ||
| 889 | free_netdev(dev); | 885 | free_netdev(dev); |
| 890 | ecard_release_resources(ec); | 886 | ecard_release_resources(ec); |
| 891 | } | 887 | } |
diff --git a/drivers/net/arm/etherh.c b/drivers/net/arm/etherh.c index 61f574aa3a99..769ba69451f4 100644 --- a/drivers/net/arm/etherh.c +++ b/drivers/net/arm/etherh.c | |||
| @@ -686,7 +686,7 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 686 | eh->supported = data->supported; | 686 | eh->supported = data->supported; |
| 687 | eh->ctrl = 0; | 687 | eh->ctrl = 0; |
| 688 | eh->id = ec->cid.product; | 688 | eh->id = ec->cid.product; |
| 689 | eh->memc = ioremap(ecard_resource_start(ec, ECARD_RES_MEMC), PAGE_SIZE); | 689 | eh->memc = ecardm_iomap(ec, ECARD_RES_MEMC, 0, PAGE_SIZE); |
| 690 | if (!eh->memc) { | 690 | if (!eh->memc) { |
| 691 | ret = -ENOMEM; | 691 | ret = -ENOMEM; |
| 692 | goto free; | 692 | goto free; |
| @@ -694,7 +694,7 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 694 | 694 | ||
| 695 | eh->ctrl_port = eh->memc; | 695 | eh->ctrl_port = eh->memc; |
| 696 | if (data->ctrl_ioc) { | 696 | if (data->ctrl_ioc) { |
| 697 | eh->ioc_fast = ioremap(ecard_resource_start(ec, ECARD_RES_IOCFAST), PAGE_SIZE); | 697 | eh->ioc_fast = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, PAGE_SIZE); |
| 698 | if (!eh->ioc_fast) { | 698 | if (!eh->ioc_fast) { |
| 699 | ret = -ENOMEM; | 699 | ret = -ENOMEM; |
| 700 | goto free; | 700 | goto free; |
| @@ -710,8 +710,7 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 710 | * IRQ and control port handling - only for non-NIC slot cards. | 710 | * IRQ and control port handling - only for non-NIC slot cards. |
| 711 | */ | 711 | */ |
| 712 | if (ec->slot_no != 8) { | 712 | if (ec->slot_no != 8) { |
| 713 | ec->ops = ðerh_ops; | 713 | ecard_setirq(ec, ðerh_ops, eh); |
| 714 | ec->irq_data = eh; | ||
| 715 | } else { | 714 | } else { |
| 716 | /* | 715 | /* |
| 717 | * If we're in the NIC slot, make sure the IRQ is enabled | 716 | * If we're in the NIC slot, make sure the IRQ is enabled |
| @@ -759,10 +758,6 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 759 | return 0; | 758 | return 0; |
| 760 | 759 | ||
| 761 | free: | 760 | free: |
| 762 | if (eh->ioc_fast) | ||
| 763 | iounmap(eh->ioc_fast); | ||
| 764 | if (eh->memc) | ||
| 765 | iounmap(eh->memc); | ||
| 766 | free_netdev(dev); | 761 | free_netdev(dev); |
| 767 | release: | 762 | release: |
| 768 | ecard_release_resources(ec); | 763 | ecard_release_resources(ec); |
| @@ -773,16 +768,10 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 773 | static void __devexit etherh_remove(struct expansion_card *ec) | 768 | static void __devexit etherh_remove(struct expansion_card *ec) |
| 774 | { | 769 | { |
| 775 | struct net_device *dev = ecard_get_drvdata(ec); | 770 | struct net_device *dev = ecard_get_drvdata(ec); |
| 776 | struct etherh_priv *eh = etherh_priv(dev); | ||
| 777 | 771 | ||
| 778 | ecard_set_drvdata(ec, NULL); | 772 | ecard_set_drvdata(ec, NULL); |
| 779 | 773 | ||
| 780 | unregister_netdev(dev); | 774 | unregister_netdev(dev); |
| 781 | ec->ops = NULL; | ||
| 782 | |||
| 783 | if (eh->ioc_fast) | ||
| 784 | iounmap(eh->ioc_fast); | ||
| 785 | iounmap(eh->memc); | ||
| 786 | 775 | ||
| 787 | free_netdev(dev); | 776 | free_netdev(dev); |
| 788 | 777 | ||
diff --git a/drivers/scsi/arm/arxescsi.c b/drivers/scsi/arm/arxescsi.c index 7e132c5bacf8..2836fe248df9 100644 --- a/drivers/scsi/arm/arxescsi.c +++ b/drivers/scsi/arm/arxescsi.c | |||
| @@ -281,7 +281,6 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 281 | { | 281 | { |
| 282 | struct Scsi_Host *host; | 282 | struct Scsi_Host *host; |
| 283 | struct arxescsi_info *info; | 283 | struct arxescsi_info *info; |
| 284 | unsigned long resbase, reslen; | ||
| 285 | void __iomem *base; | 284 | void __iomem *base; |
| 286 | int ret; | 285 | int ret; |
| 287 | 286 | ||
| @@ -289,9 +288,7 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 289 | if (ret) | 288 | if (ret) |
| 290 | goto out; | 289 | goto out; |
| 291 | 290 | ||
| 292 | resbase = ecard_resource_start(ec, ECARD_RES_MEMC); | 291 | base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0); |
| 293 | reslen = ecard_resource_len(ec, ECARD_RES_MEMC); | ||
| 294 | base = ioremap(resbase, reslen); | ||
| 295 | if (!base) { | 292 | if (!base) { |
| 296 | ret = -ENOMEM; | 293 | ret = -ENOMEM; |
| 297 | goto out_region; | 294 | goto out_region; |
| @@ -300,7 +297,7 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 300 | host = scsi_host_alloc(&arxescsi_template, sizeof(struct arxescsi_info)); | 297 | host = scsi_host_alloc(&arxescsi_template, sizeof(struct arxescsi_info)); |
| 301 | if (!host) { | 298 | if (!host) { |
| 302 | ret = -ENOMEM; | 299 | ret = -ENOMEM; |
| 303 | goto out_unmap; | 300 | goto out_region; |
| 304 | } | 301 | } |
| 305 | 302 | ||
| 306 | info = (struct arxescsi_info *)host->hostdata; | 303 | info = (struct arxescsi_info *)host->hostdata; |
| @@ -337,8 +334,6 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 337 | fas216_release(host); | 334 | fas216_release(host); |
| 338 | out_unregister: | 335 | out_unregister: |
| 339 | scsi_host_put(host); | 336 | scsi_host_put(host); |
| 340 | out_unmap: | ||
| 341 | iounmap(base); | ||
| 342 | out_region: | 337 | out_region: |
| 343 | ecard_release_resources(ec); | 338 | ecard_release_resources(ec); |
| 344 | out: | 339 | out: |
| @@ -348,13 +343,10 @@ arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 348 | static void __devexit arxescsi_remove(struct expansion_card *ec) | 343 | static void __devexit arxescsi_remove(struct expansion_card *ec) |
| 349 | { | 344 | { |
| 350 | struct Scsi_Host *host = ecard_get_drvdata(ec); | 345 | struct Scsi_Host *host = ecard_get_drvdata(ec); |
| 351 | struct arxescsi_info *info = (struct arxescsi_info *)host->hostdata; | ||
| 352 | 346 | ||
| 353 | ecard_set_drvdata(ec, NULL); | 347 | ecard_set_drvdata(ec, NULL); |
| 354 | fas216_remove(host); | 348 | fas216_remove(host); |
| 355 | 349 | ||
| 356 | iounmap(info->base); | ||
| 357 | |||
| 358 | fas216_release(host); | 350 | fas216_release(host); |
| 359 | scsi_host_put(host); | 351 | scsi_host_put(host); |
| 360 | ecard_release_resources(ec); | 352 | ecard_release_resources(ec); |
diff --git a/drivers/scsi/arm/cumana_2.c b/drivers/scsi/arm/cumana_2.c index 82add77ad131..68a64123af8f 100644 --- a/drivers/scsi/arm/cumana_2.c +++ b/drivers/scsi/arm/cumana_2.c | |||
| @@ -401,7 +401,6 @@ cumanascsi2_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 401 | { | 401 | { |
| 402 | struct Scsi_Host *host; | 402 | struct Scsi_Host *host; |
| 403 | struct cumanascsi2_info *info; | 403 | struct cumanascsi2_info *info; |
| 404 | unsigned long resbase, reslen; | ||
| 405 | void __iomem *base; | 404 | void __iomem *base; |
| 406 | int ret; | 405 | int ret; |
| 407 | 406 | ||
| @@ -409,9 +408,7 @@ cumanascsi2_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 409 | if (ret) | 408 | if (ret) |
| 410 | goto out; | 409 | goto out; |
| 411 | 410 | ||
| 412 | resbase = ecard_resource_start(ec, ECARD_RES_MEMC); | 411 | base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0); |
| 413 | reslen = ecard_resource_len(ec, ECARD_RES_MEMC); | ||
| 414 | base = ioremap(resbase, reslen); | ||
| 415 | if (!base) { | 412 | if (!base) { |
| 416 | ret = -ENOMEM; | 413 | ret = -ENOMEM; |
| 417 | goto out_region; | 414 | goto out_region; |
| @@ -421,7 +418,7 @@ cumanascsi2_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 421 | sizeof(struct cumanascsi2_info)); | 418 | sizeof(struct cumanascsi2_info)); |
| 422 | if (!host) { | 419 | if (!host) { |
| 423 | ret = -ENOMEM; | 420 | ret = -ENOMEM; |
| 424 | goto out_unmap; | 421 | goto out_region; |
| 425 | } | 422 | } |
| 426 | 423 | ||
| 427 | ecard_set_drvdata(ec, host); | 424 | ecard_set_drvdata(ec, host); |
| @@ -450,8 +447,8 @@ cumanascsi2_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 450 | 447 | ||
| 451 | ec->irqaddr = info->base + CUMANASCSI2_STATUS; | 448 | ec->irqaddr = info->base + CUMANASCSI2_STATUS; |
| 452 | ec->irqmask = STATUS_INT; | 449 | ec->irqmask = STATUS_INT; |
| 453 | ec->irq_data = info; | 450 | |
| 454 | ec->ops = &cumanascsi_2_ops; | 451 | ecard_setirq(ec, &cumanascsi_2_ops, info); |
| 455 | 452 | ||
| 456 | ret = fas216_init(host); | 453 | ret = fas216_init(host); |
| 457 | if (ret) | 454 | if (ret) |
| @@ -490,9 +487,6 @@ cumanascsi2_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 490 | out_free: | 487 | out_free: |
| 491 | scsi_host_put(host); | 488 | scsi_host_put(host); |
| 492 | 489 | ||
| 493 | out_unmap: | ||
| 494 | iounmap(base); | ||
| 495 | |||
| 496 | out_region: | 490 | out_region: |
| 497 | ecard_release_resources(ec); | 491 | ecard_release_resources(ec); |
| 498 | 492 | ||
| @@ -512,8 +506,6 @@ static void __devexit cumanascsi2_remove(struct expansion_card *ec) | |||
| 512 | free_dma(info->info.scsi.dma); | 506 | free_dma(info->info.scsi.dma); |
| 513 | free_irq(ec->irq, info); | 507 | free_irq(ec->irq, info); |
| 514 | 508 | ||
| 515 | iounmap(info->base); | ||
| 516 | |||
| 517 | fas216_release(host); | 509 | fas216_release(host); |
| 518 | scsi_host_put(host); | 510 | scsi_host_put(host); |
| 519 | ecard_release_resources(ec); | 511 | ecard_release_resources(ec); |
diff --git a/drivers/scsi/arm/eesox.c b/drivers/scsi/arm/eesox.c index ed06a8c19ad6..bb2477b3fb0b 100644 --- a/drivers/scsi/arm/eesox.c +++ b/drivers/scsi/arm/eesox.c | |||
| @@ -519,7 +519,6 @@ eesoxscsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 519 | { | 519 | { |
| 520 | struct Scsi_Host *host; | 520 | struct Scsi_Host *host; |
| 521 | struct eesoxscsi_info *info; | 521 | struct eesoxscsi_info *info; |
| 522 | unsigned long resbase, reslen; | ||
| 523 | void __iomem *base; | 522 | void __iomem *base; |
| 524 | int ret; | 523 | int ret; |
| 525 | 524 | ||
| @@ -527,9 +526,7 @@ eesoxscsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 527 | if (ret) | 526 | if (ret) |
| 528 | goto out; | 527 | goto out; |
| 529 | 528 | ||
| 530 | resbase = ecard_resource_start(ec, ECARD_RES_IOCFAST); | 529 | base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0); |
| 531 | reslen = ecard_resource_len(ec, ECARD_RES_IOCFAST); | ||
| 532 | base = ioremap(resbase, reslen); | ||
| 533 | if (!base) { | 530 | if (!base) { |
| 534 | ret = -ENOMEM; | 531 | ret = -ENOMEM; |
| 535 | goto out_region; | 532 | goto out_region; |
| @@ -539,7 +536,7 @@ eesoxscsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 539 | sizeof(struct eesoxscsi_info)); | 536 | sizeof(struct eesoxscsi_info)); |
| 540 | if (!host) { | 537 | if (!host) { |
| 541 | ret = -ENOMEM; | 538 | ret = -ENOMEM; |
| 542 | goto out_unmap; | 539 | goto out_region; |
| 543 | } | 540 | } |
| 544 | 541 | ||
| 545 | ecard_set_drvdata(ec, host); | 542 | ecard_set_drvdata(ec, host); |
| @@ -569,8 +566,8 @@ eesoxscsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 569 | 566 | ||
| 570 | ec->irqaddr = base + EESOX_DMASTAT; | 567 | ec->irqaddr = base + EESOX_DMASTAT; |
| 571 | ec->irqmask = EESOX_STAT_INTR; | 568 | ec->irqmask = EESOX_STAT_INTR; |
| 572 | ec->irq_data = info; | 569 | |
| 573 | ec->ops = &eesoxscsi_ops; | 570 | ecard_setirq(ec, &eesoxscsi_ops, info); |
| 574 | 571 | ||
| 575 | device_create_file(&ec->dev, &dev_attr_bus_term); | 572 | device_create_file(&ec->dev, &dev_attr_bus_term); |
| 576 | 573 | ||
| @@ -612,9 +609,6 @@ eesoxscsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 612 | device_remove_file(&ec->dev, &dev_attr_bus_term); | 609 | device_remove_file(&ec->dev, &dev_attr_bus_term); |
| 613 | scsi_host_put(host); | 610 | scsi_host_put(host); |
| 614 | 611 | ||
| 615 | out_unmap: | ||
| 616 | iounmap(base); | ||
| 617 | |||
| 618 | out_region: | 612 | out_region: |
| 619 | ecard_release_resources(ec); | 613 | ecard_release_resources(ec); |
| 620 | 614 | ||
| @@ -636,8 +630,6 @@ static void __devexit eesoxscsi_remove(struct expansion_card *ec) | |||
| 636 | 630 | ||
| 637 | device_remove_file(&ec->dev, &dev_attr_bus_term); | 631 | device_remove_file(&ec->dev, &dev_attr_bus_term); |
| 638 | 632 | ||
| 639 | iounmap(info->base); | ||
| 640 | |||
| 641 | fas216_release(host); | 633 | fas216_release(host); |
| 642 | scsi_host_put(host); | 634 | scsi_host_put(host); |
| 643 | ecard_release_resources(ec); | 635 | ecard_release_resources(ec); |
diff --git a/drivers/scsi/arm/powertec.c b/drivers/scsi/arm/powertec.c index 159047a34997..d9a546d1917c 100644 --- a/drivers/scsi/arm/powertec.c +++ b/drivers/scsi/arm/powertec.c | |||
| @@ -313,7 +313,6 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 313 | { | 313 | { |
| 314 | struct Scsi_Host *host; | 314 | struct Scsi_Host *host; |
| 315 | struct powertec_info *info; | 315 | struct powertec_info *info; |
| 316 | unsigned long resbase, reslen; | ||
| 317 | void __iomem *base; | 316 | void __iomem *base; |
| 318 | int ret; | 317 | int ret; |
| 319 | 318 | ||
| @@ -321,9 +320,7 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 321 | if (ret) | 320 | if (ret) |
| 322 | goto out; | 321 | goto out; |
| 323 | 322 | ||
| 324 | resbase = ecard_resource_start(ec, ECARD_RES_IOCFAST); | 323 | base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0); |
| 325 | reslen = ecard_resource_len(ec, ECARD_RES_IOCFAST); | ||
| 326 | base = ioremap(resbase, reslen); | ||
| 327 | if (!base) { | 324 | if (!base) { |
| 328 | ret = -ENOMEM; | 325 | ret = -ENOMEM; |
| 329 | goto out_region; | 326 | goto out_region; |
| @@ -333,7 +330,7 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 333 | sizeof (struct powertec_info)); | 330 | sizeof (struct powertec_info)); |
| 334 | if (!host) { | 331 | if (!host) { |
| 335 | ret = -ENOMEM; | 332 | ret = -ENOMEM; |
| 336 | goto out_unmap; | 333 | goto out_region; |
| 337 | } | 334 | } |
| 338 | 335 | ||
| 339 | ecard_set_drvdata(ec, host); | 336 | ecard_set_drvdata(ec, host); |
| @@ -361,8 +358,8 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 361 | 358 | ||
| 362 | ec->irqaddr = base + POWERTEC_INTR_STATUS; | 359 | ec->irqaddr = base + POWERTEC_INTR_STATUS; |
| 363 | ec->irqmask = POWERTEC_INTR_BIT; | 360 | ec->irqmask = POWERTEC_INTR_BIT; |
| 364 | ec->irq_data = info; | 361 | |
| 365 | ec->ops = &powertecscsi_ops; | 362 | ecard_setirq(ec, &powertecscsi_ops, info); |
| 366 | 363 | ||
| 367 | device_create_file(&ec->dev, &dev_attr_bus_term); | 364 | device_create_file(&ec->dev, &dev_attr_bus_term); |
| 368 | 365 | ||
| @@ -404,9 +401,6 @@ powertecscsi_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 404 | device_remove_file(&ec->dev, &dev_attr_bus_term); | 401 | device_remove_file(&ec->dev, &dev_attr_bus_term); |
| 405 | scsi_host_put(host); | 402 | scsi_host_put(host); |
| 406 | 403 | ||
| 407 | out_unmap: | ||
| 408 | iounmap(base); | ||
| 409 | |||
| 410 | out_region: | 404 | out_region: |
| 411 | ecard_release_resources(ec); | 405 | ecard_release_resources(ec); |
| 412 | 406 | ||
| @@ -428,8 +422,6 @@ static void __devexit powertecscsi_remove(struct expansion_card *ec) | |||
| 428 | free_dma(info->info.scsi.dma); | 422 | free_dma(info->info.scsi.dma); |
| 429 | free_irq(ec->irq, info); | 423 | free_irq(ec->irq, info); |
| 430 | 424 | ||
| 431 | iounmap(info->base); | ||
| 432 | |||
| 433 | fas216_release(host); | 425 | fas216_release(host); |
| 434 | scsi_host_put(host); | 426 | scsi_host_put(host); |
| 435 | ecard_release_resources(ec); | 427 | ecard_release_resources(ec); |
diff --git a/drivers/serial/8250_acorn.c b/drivers/serial/8250_acorn.c index 562ba745a044..b0ce8c56f1a4 100644 --- a/drivers/serial/8250_acorn.c +++ b/drivers/serial/8250_acorn.c | |||
| @@ -54,7 +54,7 @@ serial_card_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
| 54 | info->num_ports = type->num_ports; | 54 | info->num_ports = type->num_ports; |
| 55 | 55 | ||
| 56 | bus_addr = ecard_resource_start(ec, type->type); | 56 | bus_addr = ecard_resource_start(ec, type->type); |
| 57 | info->vaddr = ioremap(bus_addr, ecard_resource_len(ec, type->type)); | 57 | info->vaddr = ecardm_iomap(ec, type->type, 0, 0); |
| 58 | if (!info->vaddr) { | 58 | if (!info->vaddr) { |
| 59 | kfree(info); | 59 | kfree(info); |
| 60 | return -ENOMEM; | 60 | return -ENOMEM; |
| @@ -91,7 +91,6 @@ static void __devexit serial_card_remove(struct expansion_card *ec) | |||
| 91 | if (info->ports[i] > 0) | 91 | if (info->ports[i] > 0) |
| 92 | serial8250_unregister_port(info->ports[i]); | 92 | serial8250_unregister_port(info->ports[i]); |
| 93 | 93 | ||
| 94 | iounmap(info->vaddr); | ||
| 95 | kfree(info); | 94 | kfree(info); |
| 96 | } | 95 | } |
| 97 | 96 | ||
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index a6f5bfbb777b..315ea9916456 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
| @@ -359,6 +359,23 @@ config SERIAL_ATMEL_TTYAT | |||
| 359 | 359 | ||
| 360 | Say Y if you have an external 8250/16C550 UART. If unsure, say N. | 360 | Say Y if you have an external 8250/16C550 UART. If unsure, say N. |
| 361 | 361 | ||
| 362 | config SERIAL_KS8695 | ||
| 363 | bool "Micrel KS8695 (Centaur) serial port support" | ||
| 364 | depends on ARCH_KS8695 | ||
| 365 | select SERIAL_CORE | ||
| 366 | help | ||
| 367 | This selects the Micrel Centaur KS8695 UART. Say Y here. | ||
| 368 | |||
| 369 | config SERIAL_KS8695_CONSOLE | ||
| 370 | bool "Support for console on KS8695 (Centaur) serial port" | ||
| 371 | depends on SERIAL_KS8695=y | ||
| 372 | select SERIAL_CORE_CONSOLE | ||
| 373 | help | ||
| 374 | Say Y here if you wish to use a KS8695 (Centaur) UART as the | ||
| 375 | system console (the system console is the device which | ||
| 376 | receives all kernel messages and warnings and which allows | ||
| 377 | logins in single user mode). | ||
| 378 | |||
| 362 | config SERIAL_CLPS711X | 379 | config SERIAL_CLPS711X |
| 363 | tristate "CLPS711X serial port support" | 380 | tristate "CLPS711X serial port support" |
| 364 | depends on ARM && ARCH_CLPS711X | 381 | depends on ARM && ARCH_CLPS711X |
diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index 4959bcb8d1ef..08ad0d978183 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile | |||
| @@ -61,3 +61,4 @@ obj-$(CONFIG_SERIAL_ATMEL) += atmel_serial.o | |||
| 61 | obj-$(CONFIG_SERIAL_UARTLITE) += uartlite.o | 61 | obj-$(CONFIG_SERIAL_UARTLITE) += uartlite.o |
| 62 | obj-$(CONFIG_SERIAL_NETX) += netx-serial.o | 62 | obj-$(CONFIG_SERIAL_NETX) += netx-serial.o |
| 63 | obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_serial.o | 63 | obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_serial.o |
| 64 | obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o | ||
diff --git a/drivers/serial/serial_ks8695.c b/drivers/serial/serial_ks8695.c new file mode 100644 index 000000000000..c5346d677315 --- /dev/null +++ b/drivers/serial/serial_ks8695.c | |||
| @@ -0,0 +1,657 @@ | |||
| 1 | /* | ||
| 2 | * drivers/serial/serial_ks8695.c | ||
| 3 | * | ||
| 4 | * Driver for KS8695 serial ports | ||
| 5 | * | ||
| 6 | * Based on drivers/serial/serial_amba.c, by Kam Lee. | ||
| 7 | * | ||
| 8 | * Copyright 2002-2005 Micrel 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 as published by | ||
| 12 | * the Free Software Foundation; either version 2 of the License, or | ||
| 13 | * (at your option) any later version. | ||
| 14 | * | ||
| 15 | */ | ||
| 16 | #include <linux/module.h> | ||
| 17 | #include <linux/tty.h> | ||
| 18 | #include <linux/ioport.h> | ||
| 19 | #include <linux/init.h> | ||
| 20 | #include <linux/serial.h> | ||
| 21 | #include <linux/console.h> | ||
| 22 | #include <linux/sysrq.h> | ||
| 23 | #include <linux/device.h> | ||
| 24 | |||
| 25 | #include <asm/io.h> | ||
| 26 | #include <asm/irq.h> | ||
| 27 | #include <asm/mach/irq.h> | ||
| 28 | |||
| 29 | #include <asm/arch/regs-uart.h> | ||
| 30 | #include <asm/arch/regs-irq.h> | ||
| 31 | |||
| 32 | #if defined(CONFIG_SERIAL_KS8695_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) | ||
| 33 | #define SUPPORT_SYSRQ | ||
| 34 | #endif | ||
| 35 | |||
| 36 | #include <linux/serial_core.h> | ||
| 37 | |||
| 38 | |||
| 39 | #define SERIAL_KS8695_MAJOR 204 | ||
| 40 | #define SERIAL_KS8695_MINOR 16 | ||
| 41 | #define SERIAL_KS8695_DEVNAME "ttyAM" | ||
| 42 | |||
| 43 | #define SERIAL_KS8695_NR 1 | ||
| 44 | |||
| 45 | /* | ||
| 46 | * Access macros for the KS8695 UART | ||
| 47 | */ | ||
| 48 | #define UART_GET_CHAR(p) (__raw_readl((p)->membase + KS8695_URRB) & 0xFF) | ||
| 49 | #define UART_PUT_CHAR(p, c) __raw_writel((c), (p)->membase + KS8695_URTH) | ||
| 50 | #define UART_GET_FCR(p) __raw_readl((p)->membase + KS8695_URFC) | ||
| 51 | #define UART_PUT_FCR(p, c) __raw_writel((c), (p)->membase + KS8695_URFC) | ||
| 52 | #define UART_GET_MSR(p) __raw_readl((p)->membase + KS8695_URMS) | ||
| 53 | #define UART_GET_LSR(p) __raw_readl((p)->membase + KS8695_URLS) | ||
| 54 | #define UART_GET_LCR(p) __raw_readl((p)->membase + KS8695_URLC) | ||
| 55 | #define UART_PUT_LCR(p, c) __raw_writel((c), (p)->membase + KS8695_URLC) | ||
| 56 | #define UART_GET_MCR(p) __raw_readl((p)->membase + KS8695_URMC) | ||
| 57 | #define UART_PUT_MCR(p, c) __raw_writel((c), (p)->membase + KS8695_URMC) | ||
| 58 | #define UART_GET_BRDR(p) __raw_readl((p)->membase + KS8695_URBD) | ||
| 59 | #define UART_PUT_BRDR(p, c) __raw_writel((c), (p)->membase + KS8695_URBD) | ||
| 60 | |||
| 61 | #define KS8695_CLR_TX_INT() __raw_writel(1 << KS8695_IRQ_UART_TX, KS8695_IRQ_VA + KS8695_INTST) | ||
| 62 | |||
| 63 | #define UART_DUMMY_LSR_RX 0x100 | ||
| 64 | #define UART_PORT_SIZE (KS8695_USR - KS8695_URRB + 4) | ||
| 65 | |||
| 66 | #define tx_enabled(port) ((port)->unused[0]) | ||
| 67 | #define rx_enabled(port) ((port)->unused[1]) | ||
| 68 | |||
| 69 | |||
| 70 | #ifdef SUPPORT_SYSRQ | ||
| 71 | static struct console ks8695_console; | ||
| 72 | #endif | ||
| 73 | |||
| 74 | static void ks8695uart_stop_tx(struct uart_port *port) | ||
| 75 | { | ||
| 76 | if (tx_enabled(port)) { | ||
| 77 | disable_irq(KS8695_IRQ_UART_TX); | ||
| 78 | tx_enabled(port) = 0; | ||
| 79 | } | ||
| 80 | } | ||
| 81 | |||
| 82 | static void ks8695uart_start_tx(struct uart_port *port) | ||
| 83 | { | ||
| 84 | if (!tx_enabled(port)) { | ||
| 85 | enable_irq(KS8695_IRQ_UART_TX); | ||
| 86 | tx_enabled(port) = 1; | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 90 | static void ks8695uart_stop_rx(struct uart_port *port) | ||
| 91 | { | ||
| 92 | if (rx_enabled(port)) { | ||
| 93 | disable_irq(KS8695_IRQ_UART_RX); | ||
| 94 | rx_enabled(port) = 0; | ||
| 95 | } | ||
| 96 | } | ||
| 97 | |||
| 98 | static void ks8695uart_enable_ms(struct uart_port *port) | ||
| 99 | { | ||
| 100 | enable_irq(KS8695_IRQ_UART_MODEM_STATUS); | ||
| 101 | } | ||
| 102 | |||
| 103 | static void ks8695uart_disable_ms(struct uart_port *port) | ||
| 104 | { | ||
| 105 | disable_irq(KS8695_IRQ_UART_MODEM_STATUS); | ||
| 106 | } | ||
| 107 | |||
| 108 | static irqreturn_t ks8695uart_rx_chars(int irq, void *dev_id) | ||
| 109 | { | ||
| 110 | struct uart_port *port = dev_id; | ||
| 111 | struct tty_struct *tty = port->info->tty; | ||
| 112 | unsigned int status, ch, lsr, flg, max_count = 256; | ||
| 113 | |||
| 114 | status = UART_GET_LSR(port); /* clears pending LSR interrupts */ | ||
| 115 | while ((status & URLS_URDR) && max_count--) { | ||
| 116 | ch = UART_GET_CHAR(port); | ||
| 117 | flg = TTY_NORMAL; | ||
| 118 | |||
| 119 | port->icount.rx++; | ||
| 120 | |||
| 121 | /* | ||
| 122 | * Note that the error handling code is | ||
| 123 | * out of the main execution path | ||
| 124 | */ | ||
| 125 | lsr = UART_GET_LSR(port) | UART_DUMMY_LSR_RX; | ||
| 126 | if (unlikely(lsr & (URLS_URBI | URLS_URPE | URLS_URFE | URLS_URROE))) { | ||
| 127 | if (lsr & URLS_URBI) { | ||
| 128 | lsr &= ~(URLS_URFE | URLS_URPE); | ||
| 129 | port->icount.brk++; | ||
| 130 | if (uart_handle_break(port)) | ||
| 131 | goto ignore_char; | ||
| 132 | } | ||
| 133 | if (lsr & URLS_URPE) | ||
| 134 | port->icount.parity++; | ||
| 135 | if (lsr & URLS_URFE) | ||
| 136 | port->icount.frame++; | ||
| 137 | if (lsr & URLS_URROE) | ||
| 138 | port->icount.overrun++; | ||
| 139 | |||
| 140 | lsr &= port->read_status_mask; | ||
| 141 | |||
| 142 | if (lsr & URLS_URBI) | ||
| 143 | flg = TTY_BREAK; | ||
| 144 | else if (lsr & URLS_URPE) | ||
| 145 | flg = TTY_PARITY; | ||
| 146 | else if (lsr & URLS_URFE) | ||
| 147 | flg = TTY_FRAME; | ||
| 148 | } | ||
| 149 | |||
| 150 | if (uart_handle_sysrq_char(port, ch)) | ||
| 151 | goto ignore_char; | ||
| 152 | |||
| 153 | uart_insert_char(port, lsr, URLS_URROE, ch, flg); | ||
| 154 | |||
| 155 | ignore_char: | ||
| 156 | status = UART_GET_LSR(port); | ||
| 157 | } | ||
| 158 | tty_flip_buffer_push(tty); | ||
| 159 | |||
| 160 | return IRQ_HANDLED; | ||
| 161 | } | ||
| 162 | |||
| 163 | |||
| 164 | static irqreturn_t ks8695uart_tx_chars(int irq, void *dev_id) | ||
| 165 | { | ||
| 166 | struct uart_port *port = dev_id; | ||
| 167 | struct circ_buf *xmit = &port->info->xmit; | ||
| 168 | unsigned int count; | ||
| 169 | |||
| 170 | if (port->x_char) { | ||
| 171 | KS8695_CLR_TX_INT(); | ||
| 172 | UART_PUT_CHAR(port, port->x_char); | ||
| 173 | port->icount.tx++; | ||
| 174 | port->x_char = 0; | ||
| 175 | return IRQ_HANDLED; | ||
| 176 | } | ||
| 177 | |||
| 178 | if (uart_tx_stopped(port) || uart_circ_empty(xmit)) { | ||
| 179 | ks8695uart_stop_tx(port); | ||
| 180 | return IRQ_HANDLED; | ||
| 181 | } | ||
| 182 | |||
| 183 | count = 16; /* fifo size */ | ||
| 184 | while (!uart_circ_empty(xmit) && (count-- > 0)) { | ||
| 185 | KS8695_CLR_TX_INT(); | ||
| 186 | UART_PUT_CHAR(port, xmit->buf[xmit->tail]); | ||
| 187 | |||
| 188 | xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); | ||
| 189 | port->icount.tx++; | ||
| 190 | } | ||
| 191 | |||
| 192 | if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) | ||
| 193 | uart_write_wakeup(port); | ||
| 194 | |||
| 195 | if (uart_circ_empty(xmit)) | ||
| 196 | ks8695uart_stop_tx(port); | ||
| 197 | |||
| 198 | return IRQ_HANDLED; | ||
| 199 | } | ||
| 200 | |||
| 201 | static irqreturn_t ks8695uart_modem_status(int irq, void *dev_id) | ||
| 202 | { | ||
| 203 | struct uart_port *port = dev_id; | ||
| 204 | unsigned int status; | ||
| 205 | |||
| 206 | /* | ||
| 207 | * clear modem interrupt by reading MSR | ||
| 208 | */ | ||
| 209 | status = UART_GET_MSR(port); | ||
| 210 | |||
| 211 | if (status & URMS_URDDCD) | ||
| 212 | uart_handle_dcd_change(port, status & URMS_URDDCD); | ||
| 213 | |||
| 214 | if (status & URMS_URDDST) | ||
| 215 | port->icount.dsr++; | ||
| 216 | |||
| 217 | if (status & URMS_URDCTS) | ||
| 218 | uart_handle_cts_change(port, status & URMS_URDCTS); | ||
| 219 | |||
| 220 | if (status & URMS_URTERI) | ||
| 221 | port->icount.rng++; | ||
| 222 | |||
| 223 | wake_up_interruptible(&port->info->delta_msr_wait); | ||
| 224 | |||
| 225 | return IRQ_HANDLED; | ||
| 226 | } | ||
| 227 | |||
| 228 | static unsigned int ks8695uart_tx_empty(struct uart_port *port) | ||
| 229 | { | ||
| 230 | return (UART_GET_LSR(port) & URLS_URTE) ? TIOCSER_TEMT : 0; | ||
| 231 | } | ||
| 232 | |||
| 233 | static unsigned int ks8695uart_get_mctrl(struct uart_port *port) | ||
| 234 | { | ||
| 235 | unsigned int result = 0; | ||
| 236 | unsigned int status; | ||
| 237 | |||
| 238 | status = UART_GET_MSR(port); | ||
| 239 | if (status & URMS_URDCD) | ||
| 240 | result |= TIOCM_CAR; | ||
| 241 | if (status & URMS_URDSR) | ||
| 242 | result |= TIOCM_DSR; | ||
| 243 | if (status & URMS_URCTS) | ||
| 244 | result |= TIOCM_CTS; | ||
| 245 | if (status & URMS_URRI) | ||
| 246 | result |= TIOCM_RI; | ||
| 247 | |||
| 248 | return result; | ||
| 249 | } | ||
| 250 | |||
| 251 | static void ks8695uart_set_mctrl(struct uart_port *port, u_int mctrl) | ||
| 252 | { | ||
| 253 | unsigned int mcr; | ||
| 254 | |||
| 255 | mcr = UART_GET_MCR(port); | ||
| 256 | if (mctrl & TIOCM_RTS) | ||
| 257 | mcr |= URMC_URRTS; | ||
| 258 | else | ||
| 259 | mcr &= ~URMC_URRTS; | ||
| 260 | |||
| 261 | if (mctrl & TIOCM_DTR) | ||
| 262 | mcr |= URMC_URDTR; | ||
| 263 | else | ||
| 264 | mcr &= ~URMC_URDTR; | ||
| 265 | |||
| 266 | UART_PUT_MCR(port, mcr); | ||
| 267 | } | ||
| 268 | |||
| 269 | static void ks8695uart_break_ctl(struct uart_port *port, int break_state) | ||
| 270 | { | ||
| 271 | unsigned int lcr; | ||
| 272 | |||
| 273 | lcr = UART_GET_LCR(port); | ||
| 274 | |||
| 275 | if (break_state == -1) | ||
| 276 | lcr |= URLC_URSBC; | ||
| 277 | else | ||
| 278 | lcr &= ~URLC_URSBC; | ||
| 279 | |||
| 280 | UART_PUT_LCR(port, lcr); | ||
| 281 | } | ||
| 282 | |||
| 283 | static int ks8695uart_startup(struct uart_port *port) | ||
| 284 | { | ||
| 285 | int retval; | ||
| 286 | |||
| 287 | set_irq_flags(KS8695_IRQ_UART_TX, IRQF_VALID | IRQF_NOAUTOEN); | ||
| 288 | tx_enabled(port) = 0; | ||
| 289 | rx_enabled(port) = 1; | ||
| 290 | |||
| 291 | /* | ||
| 292 | * Allocate the IRQ | ||
| 293 | */ | ||
| 294 | retval = request_irq(KS8695_IRQ_UART_TX, ks8695uart_tx_chars, IRQF_DISABLED, "UART TX", port); | ||
| 295 | if (retval) | ||
| 296 | goto err_tx; | ||
| 297 | |||
| 298 | retval = request_irq(KS8695_IRQ_UART_RX, ks8695uart_rx_chars, IRQF_DISABLED, "UART RX", port); | ||
| 299 | if (retval) | ||
| 300 | goto err_rx; | ||
| 301 | |||
| 302 | retval = request_irq(KS8695_IRQ_UART_LINE_STATUS, ks8695uart_rx_chars, IRQF_DISABLED, "UART LineStatus", port); | ||
| 303 | if (retval) | ||
| 304 | return err_ls; | ||
| 305 | |||
| 306 | retval = request_irq(KS8695_IRQ_UART_MODEM_STATUS, ks8695uart_modem_status, IRQF_DISABLED, "UART ModemStatus", port); | ||
| 307 | if (retval) | ||
| 308 | return err_ms; | ||
| 309 | |||
| 310 | return 0; | ||
| 311 | |||
| 312 | err_ms: | ||
| 313 | free_irq(KS8695_IRQ_UART_LINE_STATUS, port); | ||
| 314 | err_ls: | ||
| 315 | free_irq(KS8695_IRQ_UART_RX, port); | ||
| 316 | err_rx: | ||
| 317 | free_irq(KS8695_IRQ_UART_TX, port); | ||
| 318 | err_tx: | ||
| 319 | return retval; | ||
| 320 | } | ||
| 321 | |||
| 322 | static void ks8695uart_shutdown(struct uart_port *port) | ||
| 323 | { | ||
| 324 | /* | ||
| 325 | * Free the interrupt | ||
| 326 | */ | ||
| 327 | free_irq(KS8695_IRQ_UART_RX, port); | ||
| 328 | free_irq(KS8695_IRQ_UART_TX, port); | ||
| 329 | free_irq(KS8695_IRQ_UART_MODEM_STATUS, port); | ||
| 330 | free_irq(KS8695_IRQ_UART_LINE_STATUS, port); | ||
| 331 | |||
| 332 | /* disable break condition and fifos */ | ||
| 333 | UART_PUT_LCR(port, UART_GET_LCR(port) & ~URLC_URSBC); | ||
| 334 | UART_PUT_FCR(port, UART_GET_FCR(port) & ~URFC_URFE); | ||
| 335 | } | ||
| 336 | |||
| 337 | static void ks8695uart_set_termios(struct uart_port *port, struct ktermios *termios, struct ktermios *old) | ||
| 338 | { | ||
| 339 | unsigned int lcr, fcr = 0; | ||
| 340 | unsigned long flags; | ||
| 341 | unsigned int baud, quot; | ||
| 342 | |||
| 343 | /* | ||
| 344 | * Ask the core to calculate the divisor for us. | ||
| 345 | */ | ||
| 346 | baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); | ||
| 347 | quot = uart_get_divisor(port, baud); | ||
| 348 | |||
| 349 | switch (termios->c_cflag & CSIZE) { | ||
| 350 | case CS5: | ||
| 351 | lcr = URCL_5; | ||
| 352 | break; | ||
| 353 | case CS6: | ||
| 354 | lcr = URCL_6; | ||
| 355 | break; | ||
| 356 | case CS7: | ||
| 357 | lcr = URCL_7; | ||
| 358 | break; | ||
| 359 | default: | ||
| 360 | lcr = URCL_8; | ||
| 361 | break; | ||
| 362 | } | ||
| 363 | |||
| 364 | /* stop bits */ | ||
| 365 | if (termios->c_cflag & CSTOPB) | ||
| 366 | lcr |= URLC_URSB; | ||
| 367 | |||
| 368 | /* parity */ | ||
| 369 | if (termios->c_cflag & PARENB) { | ||
| 370 | if (termios->c_cflag & CMSPAR) { /* Mark or Space parity */ | ||
| 371 | if (termios->c_cflag & PARODD) | ||
| 372 | lcr |= URPE_MARK; | ||
| 373 | else | ||
| 374 | lcr |= URPE_SPACE; | ||
| 375 | } | ||
| 376 | else if (termios->c_cflag & PARODD) | ||
| 377 | lcr |= URPE_ODD; | ||
| 378 | else | ||
| 379 | lcr |= URPE_EVEN; | ||
| 380 | } | ||
| 381 | |||
| 382 | if (port->fifosize > 1) | ||
| 383 | fcr = URFC_URFRT_8 | URFC_URTFR | URFC_URRFR | URFC_URFE; | ||
| 384 | |||
| 385 | spin_lock_irqsave(&port->lock, flags); | ||
| 386 | |||
| 387 | /* | ||
| 388 | * Update the per-port timeout. | ||
| 389 | */ | ||
| 390 | uart_update_timeout(port, termios->c_cflag, baud); | ||
| 391 | |||
| 392 | port->read_status_mask = URLS_URROE; | ||
| 393 | if (termios->c_iflag & INPCK) | ||
| 394 | port->read_status_mask |= (URLS_URFE | URLS_URPE); | ||
| 395 | if (termios->c_iflag & (BRKINT | PARMRK)) | ||
| 396 | port->read_status_mask |= URLS_URBI; | ||
| 397 | |||
| 398 | /* | ||
| 399 | * Characters to ignore | ||
| 400 | */ | ||
| 401 | port->ignore_status_mask = 0; | ||
| 402 | if (termios->c_iflag & IGNPAR) | ||
| 403 | port->ignore_status_mask |= (URLS_URFE | URLS_URPE); | ||
| 404 | if (termios->c_iflag & IGNBRK) { | ||
| 405 | port->ignore_status_mask |= URLS_URBI; | ||
| 406 | /* | ||
| 407 | * If we're ignoring parity and break indicators, | ||
| 408 | * ignore overruns too (for real raw support). | ||
| 409 | */ | ||
| 410 | if (termios->c_iflag & IGNPAR) | ||
| 411 | port->ignore_status_mask |= URLS_URROE; | ||
| 412 | } | ||
| 413 | |||
| 414 | /* | ||
| 415 | * Ignore all characters if CREAD is not set. | ||
| 416 | */ | ||
| 417 | if ((termios->c_cflag & CREAD) == 0) | ||
| 418 | port->ignore_status_mask |= UART_DUMMY_LSR_RX; | ||
| 419 | |||
| 420 | /* first, disable everything */ | ||
| 421 | if (UART_ENABLE_MS(port, termios->c_cflag)) | ||
| 422 | ks8695uart_enable_ms(port); | ||
| 423 | else | ||
| 424 | ks8695uart_disable_ms(port); | ||
| 425 | |||
| 426 | /* Set baud rate */ | ||
| 427 | UART_PUT_BRDR(port, quot); | ||
| 428 | |||
| 429 | UART_PUT_LCR(port, lcr); | ||
| 430 | UART_PUT_FCR(port, fcr); | ||
| 431 | |||
| 432 | spin_unlock_irqrestore(&port->lock, flags); | ||
| 433 | } | ||
| 434 | |||
| 435 | static const char *ks8695uart_type(struct uart_port *port) | ||
| 436 | { | ||
| 437 | return port->type == PORT_KS8695 ? "KS8695" : NULL; | ||
| 438 | } | ||
| 439 | |||
| 440 | /* | ||
| 441 | * Release the memory region(s) being used by 'port' | ||
| 442 | */ | ||
| 443 | static void ks8695uart_release_port(struct uart_port *port) | ||
| 444 | { | ||
| 445 | release_mem_region(port->mapbase, UART_PORT_SIZE); | ||
| 446 | } | ||
| 447 | |||
| 448 | /* | ||
| 449 | * Request the memory region(s) being used by 'port' | ||
| 450 | */ | ||
| 451 | static int ks8695uart_request_port(struct uart_port *port) | ||
| 452 | { | ||
| 453 | return request_mem_region(port->mapbase, UART_PORT_SIZE, | ||
| 454 | "serial_ks8695") != NULL ? 0 : -EBUSY; | ||
| 455 | } | ||
| 456 | |||
| 457 | /* | ||
| 458 | * Configure/autoconfigure the port. | ||
| 459 | */ | ||
| 460 | static void ks8695uart_config_port(struct uart_port *port, int flags) | ||
| 461 | { | ||
| 462 | if (flags & UART_CONFIG_TYPE) { | ||
| 463 | port->type = PORT_KS8695; | ||
| 464 | ks8695uart_request_port(port); | ||
| 465 | } | ||
| 466 | } | ||
| 467 | |||
| 468 | /* | ||
| 469 | * verify the new serial_struct (for TIOCSSERIAL). | ||
| 470 | */ | ||
| 471 | static int ks8695uart_verify_port(struct uart_port *port, struct serial_struct *ser) | ||
| 472 | { | ||
| 473 | int ret = 0; | ||
| 474 | |||
| 475 | if (ser->type != PORT_UNKNOWN && ser->type != PORT_KS8695) | ||
| 476 | ret = -EINVAL; | ||
| 477 | if (ser->irq != port->irq) | ||
| 478 | ret = -EINVAL; | ||
| 479 | if (ser->baud_base < 9600) | ||
| 480 | ret = -EINVAL; | ||
| 481 | return ret; | ||
| 482 | } | ||
| 483 | |||
| 484 | static struct uart_ops ks8695uart_pops = { | ||
| 485 | .tx_empty = ks8695uart_tx_empty, | ||
| 486 | .set_mctrl = ks8695uart_set_mctrl, | ||
| 487 | .get_mctrl = ks8695uart_get_mctrl, | ||
| 488 | .stop_tx = ks8695uart_stop_tx, | ||
| 489 | .start_tx = ks8695uart_start_tx, | ||
| 490 | .stop_rx = ks8695uart_stop_rx, | ||
| 491 | .enable_ms = ks8695uart_enable_ms, | ||
| 492 | .break_ctl = ks8695uart_break_ctl, | ||
| 493 | .startup = ks8695uart_startup, | ||
| 494 | .shutdown = ks8695uart_shutdown, | ||
| 495 | .set_termios = ks8695uart_set_termios, | ||
| 496 | .type = ks8695uart_type, | ||
| 497 | .release_port = ks8695uart_release_port, | ||
| 498 | .request_port = ks8695uart_request_port, | ||
| 499 | .config_port = ks8695uart_config_port, | ||
| 500 | .verify_port = ks8695uart_verify_port, | ||
| 501 | }; | ||
| 502 | |||
| 503 | static struct uart_port ks8695uart_ports[SERIAL_KS8695_NR] = { | ||
| 504 | { | ||
| 505 | .membase = (void *) KS8695_UART_VA, | ||
| 506 | .mapbase = KS8695_UART_VA, | ||
| 507 | .iotype = SERIAL_IO_MEM, | ||
| 508 | .irq = KS8695_IRQ_UART_TX, | ||
| 509 | .uartclk = CLOCK_TICK_RATE * 16, | ||
| 510 | .fifosize = 16, | ||
| 511 | .ops = &ks8695uart_pops, | ||
| 512 | .flags = ASYNC_BOOT_AUTOCONF, | ||
| 513 | .line = 0, | ||
| 514 | } | ||
| 515 | }; | ||
| 516 | |||
| 517 | #ifdef CONFIG_SERIAL_KS8695_CONSOLE | ||
| 518 | static void ks8695_console_putchar(struct uart_port *port, int ch) | ||
| 519 | { | ||
| 520 | while (!(UART_GET_LSR(port) & URLS_URTHRE)) | ||
| 521 | barrier(); | ||
| 522 | |||
| 523 | UART_PUT_CHAR(port, ch); | ||
| 524 | } | ||
| 525 | |||
| 526 | static void ks8695_console_write(struct console *co, const char *s, u_int count) | ||
| 527 | { | ||
| 528 | struct uart_port *port = ks8695uart_ports + co->index; | ||
| 529 | |||
| 530 | uart_console_write(port, s, count, ks8695_console_putchar); | ||
| 531 | } | ||
| 532 | |||
| 533 | static void __init ks8695_console_get_options(struct uart_port *port, int *baud, int *parity, int *bits) | ||
| 534 | { | ||
| 535 | unsigned int lcr; | ||
| 536 | |||
| 537 | lcr = UART_GET_LCR(port); | ||
| 538 | |||
| 539 | switch (lcr & URLC_PARITY) { | ||
| 540 | case URPE_ODD: | ||
| 541 | *parity = 'o'; | ||
| 542 | break; | ||
| 543 | case URPE_EVEN: | ||
| 544 | *parity = 'e'; | ||
| 545 | break; | ||
| 546 | default: | ||
| 547 | *parity = 'n'; | ||
| 548 | } | ||
| 549 | |||
| 550 | switch (lcr & URLC_URCL) { | ||
| 551 | case URCL_5: | ||
| 552 | *bits = 5; | ||
| 553 | break; | ||
| 554 | case URCL_6: | ||
| 555 | *bits = 6; | ||
| 556 | break; | ||
| 557 | case URCL_7: | ||
| 558 | *bits = 7; | ||
| 559 | break; | ||
| 560 | default: | ||
| 561 | *bits = 8; | ||
| 562 | } | ||
| 563 | |||
| 564 | *baud = port->uartclk / (UART_GET_BRDR(port) & 0x0FFF); | ||
| 565 | *baud /= 16; | ||
| 566 | *baud &= 0xFFFFFFF0; | ||
| 567 | } | ||
| 568 | |||
| 569 | static int __init ks8695_console_setup(struct console *co, char *options) | ||
| 570 | { | ||
| 571 | struct uart_port *port; | ||
| 572 | int baud = 115200; | ||
| 573 | int bits = 8; | ||
| 574 | int parity = 'n'; | ||
| 575 | int flow = 'n'; | ||
| 576 | |||
| 577 | /* | ||
| 578 | * Check whether an invalid uart number has been specified, and | ||
| 579 | * if so, search for the first available port that does have | ||
| 580 | * console support. | ||
| 581 | */ | ||
| 582 | port = uart_get_console(ks8695uart_ports, SERIAL_KS8695_NR, co); | ||
| 583 | |||
| 584 | if (options) | ||
| 585 | uart_parse_options(options, &baud, &parity, &bits, &flow); | ||
| 586 | else | ||
| 587 | ks8695_console_get_options(port, &baud, &parity, &bits); | ||
| 588 | |||
| 589 | return uart_set_options(port, co, baud, parity, bits, flow); | ||
| 590 | } | ||
| 591 | |||
| 592 | extern struct uart_driver ks8695_reg; | ||
| 593 | |||
| 594 | static struct console ks8695_console = { | ||
| 595 | .name = SERIAL_KS8695_DEVNAME, | ||
| 596 | .write = ks8695_console_write, | ||
| 597 | .device = uart_console_device, | ||
| 598 | .setup = ks8695_console_setup, | ||
| 599 | .flags = CON_PRINTBUFFER, | ||
| 600 | .index = -1, | ||
| 601 | .data = &ks8695_reg, | ||
| 602 | }; | ||
| 603 | |||
| 604 | static int __init ks8695_console_init(void) | ||
| 605 | { | ||
| 606 | register_console(&ks8695_console); | ||
| 607 | return 0; | ||
| 608 | } | ||
| 609 | |||
| 610 | console_initcall(ks8695_console_init); | ||
| 611 | |||
| 612 | #define KS8695_CONSOLE &ks8695_console | ||
| 613 | #else | ||
| 614 | #define KS8695_CONSOLE NULL | ||
| 615 | #endif | ||
| 616 | |||
| 617 | static struct uart_driver ks8695_reg = { | ||
| 618 | .owner = THIS_MODULE, | ||
| 619 | .driver_name = "serial_ks8695", | ||
| 620 | .dev_name = SERIAL_KS8695_DEVNAME, | ||
| 621 | .major = SERIAL_KS8695_MAJOR, | ||
| 622 | .minor = SERIAL_KS8695_MINOR, | ||
| 623 | .nr = SERIAL_KS8695_NR, | ||
| 624 | .cons = KS8695_CONSOLE, | ||
| 625 | }; | ||
| 626 | |||
| 627 | static int __init ks8695uart_init(void) | ||
| 628 | { | ||
| 629 | int i, ret; | ||
| 630 | |||
| 631 | printk(KERN_INFO "Serial: Micrel KS8695 UART driver\n"); | ||
| 632 | |||
| 633 | ret = uart_register_driver(&ks8695_reg); | ||
| 634 | if (ret) | ||
| 635 | return ret; | ||
| 636 | |||
| 637 | for (i = 0; i < SERIAL_KS8695_NR; i++) | ||
| 638 | uart_add_one_port(&ks8695_reg, &ks8695uart_ports[0]); | ||
| 639 | |||
| 640 | return 0; | ||
| 641 | } | ||
| 642 | |||
| 643 | static void __exit ks8695uart_exit(void) | ||
| 644 | { | ||
| 645 | int i; | ||
| 646 | |||
| 647 | for (i = 0; i < SERIAL_KS8695_NR; i++) | ||
| 648 | uart_remove_one_port(&ks8695_reg, &ks8695uart_ports[0]); | ||
| 649 | uart_unregister_driver(&ks8695_reg); | ||
| 650 | } | ||
| 651 | |||
| 652 | module_init(ks8695uart_init); | ||
| 653 | module_exit(ks8695uart_exit); | ||
| 654 | |||
| 655 | MODULE_DESCRIPTION("KS8695 serial port driver"); | ||
| 656 | MODULE_AUTHOR("Micrel Inc."); | ||
| 657 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig index 8065f2b53701..f771a7cae9ec 100644 --- a/drivers/usb/gadget/Kconfig +++ b/drivers/usb/gadget/Kconfig | |||
| @@ -210,7 +210,7 @@ config USB_OTG | |||
| 210 | 210 | ||
| 211 | config USB_GADGET_AT91 | 211 | config USB_GADGET_AT91 |
| 212 | boolean "AT91 USB Device Port" | 212 | boolean "AT91 USB Device Port" |
| 213 | depends on ARCH_AT91 | 213 | depends on ARCH_AT91 && !ARCH_AT91SAM9RL |
| 214 | select USB_GADGET_SELECTED | 214 | select USB_GADGET_SELECTED |
| 215 | help | 215 | help |
| 216 | Many Atmel AT91 processors (such as the AT91RM2000) have a | 216 | Many Atmel AT91 processors (such as the AT91RM2000) have a |
diff --git a/include/asm-arm/arch-at91/at91sam9rl.h b/include/asm-arm/arch-at91/at91sam9rl.h new file mode 100644 index 000000000000..8a9708a370c6 --- /dev/null +++ b/include/asm-arm/arch-at91/at91sam9rl.h | |||
| @@ -0,0 +1,110 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-at91/at91sam9260.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2007 Atmel Corporation | ||
| 5 | * | ||
| 6 | * Common definitions. | ||
| 7 | * Based on AT91SAM9RL datasheet revision A. (Preliminary) | ||
| 8 | * | ||
| 9 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 10 | * License. See the file COPYING in the main directory of this archive for | ||
| 11 | * more details. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef AT91SAM9RL_H | ||
| 15 | #define AT91SAM9RL_H | ||
| 16 | |||
| 17 | /* | ||
| 18 | * Peripheral identifiers/interrupts. | ||
| 19 | */ | ||
| 20 | #define AT91_ID_FIQ 0 /* Advanced Interrupt Controller (FIQ) */ | ||
| 21 | #define AT91_ID_SYS 1 /* System Controller */ | ||
| 22 | #define AT91SAM9RL_ID_PIOA 2 /* Parallel IO Controller A */ | ||
| 23 | #define AT91SAM9RL_ID_PIOB 3 /* Parallel IO Controller B */ | ||
| 24 | #define AT91SAM9RL_ID_PIOC 4 /* Parallel IO Controller C */ | ||
| 25 | #define AT91SAM9RL_ID_PIOD 5 /* Parallel IO Controller D */ | ||
| 26 | #define AT91SAM9RL_ID_US0 6 /* USART 0 */ | ||
| 27 | #define AT91SAM9RL_ID_US1 7 /* USART 1 */ | ||
| 28 | #define AT91SAM9RL_ID_US2 8 /* USART 2 */ | ||
| 29 | #define AT91SAM9RL_ID_US3 9 /* USART 3 */ | ||
| 30 | #define AT91SAM9RL_ID_MCI 10 /* Multimedia Card Interface */ | ||
| 31 | #define AT91SAM9RL_ID_TWI0 11 /* TWI 0 */ | ||
| 32 | #define AT91SAM9RL_ID_TWI1 12 /* TWI 1 */ | ||
| 33 | #define AT91SAM9RL_ID_SPI 13 /* Serial Peripheral Interface */ | ||
| 34 | #define AT91SAM9RL_ID_SSC0 14 /* Serial Synchronous Controller 0 */ | ||
| 35 | #define AT91SAM9RL_ID_SSC1 15 /* Serial Synchronous Controller 1 */ | ||
| 36 | #define AT91SAM9RL_ID_TC0 16 /* Timer Counter 0 */ | ||
| 37 | #define AT91SAM9RL_ID_TC1 17 /* Timer Counter 1 */ | ||
| 38 | #define AT91SAM9RL_ID_TC2 18 /* Timer Counter 2 */ | ||
| 39 | #define AT91SAM9RL_ID_PWMC 19 /* Pulse Width Modulation Controller */ | ||
| 40 | #define AT91SAM9RL_ID_TSC 20 /* Touch Screen Controller */ | ||
| 41 | #define AT91SAM9RL_ID_DMA 21 /* DMA Controller */ | ||
| 42 | #define AT91SAM9RL_ID_UDPHS 22 /* USB Device HS */ | ||
| 43 | #define AT91SAM9RL_ID_LCDC 23 /* LCD Controller */ | ||
| 44 | #define AT91SAM9RL_ID_AC97C 24 /* AC97 Controller */ | ||
| 45 | #define AT91SAM9RL_ID_IRQ0 31 /* Advanced Interrupt Controller (IRQ0) */ | ||
| 46 | |||
| 47 | |||
| 48 | /* | ||
| 49 | * User Peripheral physical base addresses. | ||
| 50 | */ | ||
| 51 | #define AT91SAM9RL_BASE_TCB0 0xfffa0000 | ||
| 52 | #define AT91SAM9RL_BASE_TC0 0xfffa0000 | ||
| 53 | #define AT91SAM9RL_BASE_TC1 0xfffa0040 | ||
| 54 | #define AT91SAM9RL_BASE_TC2 0xfffa0080 | ||
| 55 | #define AT91SAM9RL_BASE_MCI 0xfffa4000 | ||
| 56 | #define AT91SAM9RL_BASE_TWI0 0xfffa8000 | ||
| 57 | #define AT91SAM9RL_BASE_TWI1 0xfffac000 | ||
| 58 | #define AT91SAM9RL_BASE_US0 0xfffb0000 | ||
| 59 | #define AT91SAM9RL_BASE_US1 0xfffb4000 | ||
| 60 | #define AT91SAM9RL_BASE_US2 0xfffb8000 | ||
| 61 | #define AT91SAM9RL_BASE_US3 0xfffbc000 | ||
| 62 | #define AT91SAM9RL_BASE_SSC0 0xfffc0000 | ||
| 63 | #define AT91SAM9RL_BASE_SSC1 0xfffc4000 | ||
| 64 | #define AT91SAM9RL_BASE_PWMC 0xfffc8000 | ||
| 65 | #define AT91SAM9RL_BASE_SPI 0xfffcc000 | ||
| 66 | #define AT91SAM9RL_BASE_TSC 0xfffd0000 | ||
| 67 | #define AT91SAM9RL_BASE_UDPHS 0xfffd4000 | ||
| 68 | #define AT91SAM9RL_BASE_AC97C 0xfffd8000 | ||
| 69 | #define AT91_BASE_SYS 0xffffc000 | ||
| 70 | |||
| 71 | |||
| 72 | /* | ||
| 73 | * System Peripherals (offset from AT91_BASE_SYS) | ||
| 74 | */ | ||
| 75 | #define AT91_DMA (0xffffe600 - AT91_BASE_SYS) | ||
| 76 | #define AT91_ECC (0xffffe800 - AT91_BASE_SYS) | ||
| 77 | #define AT91_SDRAMC (0xffffea00 - AT91_BASE_SYS) | ||
| 78 | #define AT91_SMC (0xffffec00 - AT91_BASE_SYS) | ||
| 79 | #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS) | ||
| 80 | #define AT91_CCFG (0xffffef10 - AT91_BASE_SYS) | ||
| 81 | #define AT91_AIC (0xfffff000 - AT91_BASE_SYS) | ||
| 82 | #define AT91_DBGU (0xfffff200 - AT91_BASE_SYS) | ||
| 83 | #define AT91_PIOA (0xfffff400 - AT91_BASE_SYS) | ||
| 84 | #define AT91_PIOB (0xfffff600 - AT91_BASE_SYS) | ||
| 85 | #define AT91_PIOC (0xfffff800 - AT91_BASE_SYS) | ||
| 86 | #define AT91_PIOD (0xfffffa00 - AT91_BASE_SYS) | ||
| 87 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | ||
| 88 | #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) | ||
| 89 | #define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) | ||
| 90 | #define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) | ||
| 91 | #define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) | ||
| 92 | #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) | ||
| 93 | #define AT91_SCKCR (0xfffffd50 - AT91_BASE_SYS) | ||
| 94 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) | ||
| 95 | #define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) | ||
| 96 | |||
| 97 | |||
| 98 | /* | ||
| 99 | * Internal Memory. | ||
| 100 | */ | ||
| 101 | #define AT91SAM9RL_SRAM_BASE 0x00300000 /* Internal SRAM base address */ | ||
| 102 | #define AT91SAM9RL_SRAM_SIZE SZ_16K /* Internal SRAM size (16Kb) */ | ||
| 103 | |||
| 104 | #define AT91SAM9RL_ROM_BASE 0x00400000 /* Internal ROM base address */ | ||
| 105 | #define AT91SAM9RL_ROM_SIZE (2 * SZ_16K) /* Internal ROM size (32Kb) */ | ||
| 106 | |||
| 107 | #define AT91SAM9RL_LCDC_BASE 0x00500000 /* LCD Controller */ | ||
| 108 | #define AT91SAM9RL_UDPHS_BASE 0x00600000 /* USB Device HS controller */ | ||
| 109 | |||
| 110 | #endif | ||
diff --git a/include/asm-arm/arch-at91/at91sam9rl_matrix.h b/include/asm-arm/arch-at91/at91sam9rl_matrix.h new file mode 100644 index 000000000000..b15f11b7c08d --- /dev/null +++ b/include/asm-arm/arch-at91/at91sam9rl_matrix.h | |||
| @@ -0,0 +1,96 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-at91/at91sam9rl_matrix.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2007 Atmel Corporation | ||
| 5 | * | ||
| 6 | * Memory Controllers (MATRIX, EBI) - System peripherals registers. | ||
| 7 | * Based on AT91SAM9RL datasheet revision A. (Preliminary) | ||
| 8 | * | ||
| 9 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 10 | * License. See the file COPYING in the main directory of this archive for | ||
| 11 | * more details. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef AT91SAM9RL_MATRIX_H | ||
| 15 | #define AT91SAM9RL_MATRIX_H | ||
| 16 | |||
| 17 | #define AT91_MATRIX_MCFG0 (AT91_MATRIX + 0x00) /* Master Configuration Register 0 */ | ||
| 18 | #define AT91_MATRIX_MCFG1 (AT91_MATRIX + 0x04) /* Master Configuration Register 1 */ | ||
| 19 | #define AT91_MATRIX_MCFG2 (AT91_MATRIX + 0x08) /* Master Configuration Register 2 */ | ||
| 20 | #define AT91_MATRIX_MCFG3 (AT91_MATRIX + 0x0C) /* Master Configuration Register 3 */ | ||
| 21 | #define AT91_MATRIX_MCFG4 (AT91_MATRIX + 0x10) /* Master Configuration Register 4 */ | ||
| 22 | #define AT91_MATRIX_MCFG5 (AT91_MATRIX + 0x14) /* Master Configuration Register 5 */ | ||
| 23 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ | ||
| 24 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) | ||
| 25 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) | ||
| 26 | #define AT91_MATRIX_ULBT_FOUR (2 << 0) | ||
| 27 | #define AT91_MATRIX_ULBT_EIGHT (3 << 0) | ||
| 28 | #define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) | ||
| 29 | |||
| 30 | #define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x40) /* Slave Configuration Register 0 */ | ||
| 31 | #define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x44) /* Slave Configuration Register 1 */ | ||
| 32 | #define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x48) /* Slave Configuration Register 2 */ | ||
| 33 | #define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x4C) /* Slave Configuration Register 3 */ | ||
| 34 | #define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x50) /* Slave Configuration Register 4 */ | ||
| 35 | #define AT91_MATRIX_SCFG5 (AT91_MATRIX + 0x54) /* Slave Configuration Register 5 */ | ||
| 36 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ | ||
| 37 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ | ||
| 38 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) | ||
| 39 | #define AT91_MATRIX_DEFMSTR_TYPE_LAST (1 << 16) | ||
| 40 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) | ||
| 41 | #define AT91_MATRIX_FIXED_DEFMSTR (7 << 18) /* Fixed Index of Default Master */ | ||
| 42 | #define AT91_MATRIX_ARBT (3 << 24) /* Arbitration Type */ | ||
| 43 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) | ||
| 44 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) | ||
| 45 | |||
| 46 | #define AT91_MATRIX_PRAS0 (AT91_MATRIX + 0x80) /* Priority Register A for Slave 0 */ | ||
| 47 | #define AT91_MATRIX_PRAS1 (AT91_MATRIX + 0x88) /* Priority Register A for Slave 1 */ | ||
| 48 | #define AT91_MATRIX_PRAS2 (AT91_MATRIX + 0x90) /* Priority Register A for Slave 2 */ | ||
| 49 | #define AT91_MATRIX_PRAS3 (AT91_MATRIX + 0x98) /* Priority Register A for Slave 3 */ | ||
| 50 | #define AT91_MATRIX_PRAS4 (AT91_MATRIX + 0xA0) /* Priority Register A for Slave 4 */ | ||
| 51 | #define AT91_MATRIX_PRAS5 (AT91_MATRIX + 0xA8) /* Priority Register A for Slave 5 */ | ||
| 52 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ | ||
| 53 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ | ||
| 54 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ | ||
| 55 | #define AT91_MATRIX_M3PR (3 << 12) /* Master 3 Priority */ | ||
| 56 | #define AT91_MATRIX_M4PR (3 << 16) /* Master 4 Priority */ | ||
| 57 | #define AT91_MATRIX_M5PR (3 << 20) /* Master 5 Priority */ | ||
| 58 | |||
| 59 | #define AT91_MATRIX_MRCR (AT91_MATRIX + 0x100) /* Master Remap Control Register */ | ||
| 60 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ | ||
| 61 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ | ||
| 62 | #define AT91_MATRIX_RCB2 (1 << 2) | ||
| 63 | #define AT91_MATRIX_RCB3 (1 << 3) | ||
| 64 | #define AT91_MATRIX_RCB4 (1 << 4) | ||
| 65 | #define AT91_MATRIX_RCB5 (1 << 5) | ||
| 66 | |||
| 67 | #define AT91_MATRIX_TCMR (AT91_MATRIX + 0x114) /* TCM Configuration Register */ | ||
| 68 | #define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */ | ||
| 69 | #define AT91_MATRIX_ITCM_0 (0 << 0) | ||
| 70 | #define AT91_MATRIX_ITCM_16 (5 << 0) | ||
| 71 | #define AT91_MATRIX_ITCM_32 (6 << 0) | ||
| 72 | #define AT91_MATRIX_DTCM_SIZE (0xf << 4) /* Size of DTCM enabled memory block */ | ||
| 73 | #define AT91_MATRIX_DTCM_0 (0 << 4) | ||
| 74 | #define AT91_MATRIX_DTCM_16 (5 << 4) | ||
| 75 | #define AT91_MATRIX_DTCM_32 (6 << 4) | ||
| 76 | |||
| 77 | #define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x120) /* EBI0 Chip Select Assignment Register */ | ||
| 78 | #define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */ | ||
| 79 | #define AT91_MATRIX_CS1A_SMC (0 << 1) | ||
| 80 | #define AT91_MATRIX_CS1A_SDRAMC (1 << 1) | ||
| 81 | #define AT91_MATRIX_CS3A (1 << 3) /* Chip Select 3 Assignment */ | ||
| 82 | #define AT91_MATRIX_CS3A_SMC (0 << 3) | ||
| 83 | #define AT91_MATRIX_CS3A_SMC_SMARTMEDIA (1 << 3) | ||
| 84 | #define AT91_MATRIX_CS4A (1 << 4) /* Chip Select 4 Assignment */ | ||
| 85 | #define AT91_MATRIX_CS4A_SMC (0 << 4) | ||
| 86 | #define AT91_MATRIX_CS4A_SMC_CF1 (1 << 4) | ||
| 87 | #define AT91_MATRIX_CS5A (1 << 5) /* Chip Select 5 Assignment */ | ||
| 88 | #define AT91_MATRIX_CS5A_SMC (0 << 5) | ||
| 89 | #define AT91_MATRIX_CS5A_SMC_CF2 (1 << 5) | ||
| 90 | #define AT91_MATRIX_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */ | ||
| 91 | #define AT91_MATRIX_VDDIOMSEL (1 << 16) /* Memory voltage selection */ | ||
| 92 | #define AT91_MATRIX_VDDIOMSEL_1_8V (0 << 16) | ||
| 93 | #define AT91_MATRIX_VDDIOMSEL_3_3V (1 << 16) | ||
| 94 | |||
| 95 | |||
| 96 | #endif | ||
diff --git a/include/asm-arm/arch-at91/cpu.h b/include/asm-arm/arch-at91/cpu.h index 7ef4eebe9f8e..ef93c30a9c5f 100644 --- a/include/asm-arm/arch-at91/cpu.h +++ b/include/asm-arm/arch-at91/cpu.h | |||
| @@ -26,6 +26,8 @@ | |||
| 26 | #define ARCH_ID_AT91SAM9XE256 0x329a93a0 | 26 | #define ARCH_ID_AT91SAM9XE256 0x329a93a0 |
| 27 | #define ARCH_ID_AT91SAM9XE512 0x329aa3a0 | 27 | #define ARCH_ID_AT91SAM9XE512 0x329aa3a0 |
| 28 | 28 | ||
| 29 | #define ARCH_ID_AT91SAM9RL64 0x019b03a0 | ||
| 30 | |||
| 29 | static inline unsigned long at91_cpu_identify(void) | 31 | static inline unsigned long at91_cpu_identify(void) |
| 30 | { | 32 | { |
| 31 | return (at91_sys_read(AT91_DBGU_CIDR) & ~AT91_CIDR_VERSION); | 33 | return (at91_sys_read(AT91_DBGU_CIDR) & ~AT91_CIDR_VERSION); |
| @@ -68,6 +70,13 @@ static inline unsigned long at91_arch_identify(void) | |||
| 68 | #define cpu_is_at91sam9263() (0) | 70 | #define cpu_is_at91sam9263() (0) |
| 69 | #endif | 71 | #endif |
| 70 | 72 | ||
| 73 | #ifdef CONFIG_ARCH_AT91SAM9RL | ||
| 74 | #define cpu_is_at91sam9rl() (at91_cpu_identify() == ARCH_ID_AT91SAM9RL64) | ||
| 75 | #else | ||
| 76 | #define cpu_is_at91sam9rl() (0) | ||
| 77 | #endif | ||
| 78 | |||
| 79 | |||
| 71 | /* | 80 | /* |
| 72 | * Since this is ARM, we will never run on any AVR32 CPU. But these | 81 | * Since this is ARM, we will never run on any AVR32 CPU. But these |
| 73 | * definitions may reduce clutter in common drivers. | 82 | * definitions may reduce clutter in common drivers. |
diff --git a/include/asm-arm/arch-at91/hardware.h b/include/asm-arm/arch-at91/hardware.h index 28133e0154dd..46835e945aea 100644 --- a/include/asm-arm/arch-at91/hardware.h +++ b/include/asm-arm/arch-at91/hardware.h | |||
| @@ -24,6 +24,8 @@ | |||
| 24 | #include <asm/arch/at91sam9261.h> | 24 | #include <asm/arch/at91sam9261.h> |
| 25 | #elif defined(CONFIG_ARCH_AT91SAM9263) | 25 | #elif defined(CONFIG_ARCH_AT91SAM9263) |
| 26 | #include <asm/arch/at91sam9263.h> | 26 | #include <asm/arch/at91sam9263.h> |
| 27 | #elif defined(CONFIG_ARCH_AT91SAM9RL) | ||
| 28 | #include <asm/arch/at91sam9rl.h> | ||
| 27 | #else | 29 | #else |
| 28 | #error "Unsupported AT91 processor" | 30 | #error "Unsupported AT91 processor" |
| 29 | #endif | 31 | #endif |
| @@ -69,22 +71,5 @@ | |||
| 69 | /* Clocks */ | 71 | /* Clocks */ |
| 70 | #define AT91_SLOW_CLOCK 32768 /* slow clock */ | 72 | #define AT91_SLOW_CLOCK 32768 /* slow clock */ |
| 71 | 73 | ||
| 72 | #ifndef __ASSEMBLY__ | ||
| 73 | #include <asm/io.h> | ||
| 74 | |||
| 75 | static inline unsigned int at91_sys_read(unsigned int reg_offset) | ||
| 76 | { | ||
| 77 | void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS; | ||
| 78 | |||
| 79 | return __raw_readl(addr + reg_offset); | ||
| 80 | } | ||
| 81 | |||
| 82 | static inline void at91_sys_write(unsigned int reg_offset, unsigned long value) | ||
| 83 | { | ||
| 84 | void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS; | ||
| 85 | |||
| 86 | __raw_writel(value, addr + reg_offset); | ||
| 87 | } | ||
| 88 | #endif | ||
| 89 | 74 | ||
| 90 | #endif | 75 | #endif |
diff --git a/include/asm-arm/arch-at91/io.h b/include/asm-arm/arch-at91/io.h index 401f327ec047..80073fd36b8e 100644 --- a/include/asm-arm/arch-at91/io.h +++ b/include/asm-arm/arch-at91/io.h | |||
| @@ -29,4 +29,22 @@ | |||
| 29 | #define __mem_pci(a) (a) | 29 | #define __mem_pci(a) (a) |
| 30 | 30 | ||
| 31 | 31 | ||
| 32 | #ifndef __ASSEMBLY__ | ||
| 33 | |||
| 34 | static inline unsigned int at91_sys_read(unsigned int reg_offset) | ||
| 35 | { | ||
| 36 | void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS; | ||
| 37 | |||
| 38 | return __raw_readl(addr + reg_offset); | ||
| 39 | } | ||
| 40 | |||
| 41 | static inline void at91_sys_write(unsigned int reg_offset, unsigned long value) | ||
| 42 | { | ||
| 43 | void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS; | ||
| 44 | |||
| 45 | __raw_writel(value, addr + reg_offset); | ||
| 46 | } | ||
| 47 | |||
| 48 | #endif | ||
| 49 | |||
| 32 | #endif | 50 | #endif |
diff --git a/include/asm-arm/arch-at91/irqs.h b/include/asm-arm/arch-at91/irqs.h index 1ffa3bb9a9c1..1127a3b5e928 100644 --- a/include/asm-arm/arch-at91/irqs.h +++ b/include/asm-arm/arch-at91/irqs.h | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #ifndef __ASM_ARCH_IRQS_H | 21 | #ifndef __ASM_ARCH_IRQS_H |
| 22 | #define __ASM_ARCH_IRQS_H | 22 | #define __ASM_ARCH_IRQS_H |
| 23 | 23 | ||
| 24 | #include <asm/io.h> | ||
| 24 | #include <asm/arch/at91_aic.h> | 25 | #include <asm/arch/at91_aic.h> |
| 25 | 26 | ||
| 26 | #define NR_AIC_IRQS 32 | 27 | #define NR_AIC_IRQS 32 |
diff --git a/include/asm-arm/arch-at91/timex.h b/include/asm-arm/arch-at91/timex.h index f41636d607a2..2df1ee12dfb7 100644 --- a/include/asm-arm/arch-at91/timex.h +++ b/include/asm-arm/arch-at91/timex.h | |||
| @@ -37,6 +37,11 @@ | |||
| 37 | #define AT91SAM9_MASTER_CLOCK 99959500 | 37 | #define AT91SAM9_MASTER_CLOCK 99959500 |
| 38 | #define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) | 38 | #define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) |
| 39 | 39 | ||
| 40 | #elif defined(CONFIG_ARCH_AT91SAM9RL) | ||
| 41 | |||
| 42 | #define AT91SAM9_MASTER_CLOCK 100000000 | ||
| 43 | #define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) | ||
| 44 | |||
| 40 | #endif | 45 | #endif |
| 41 | 46 | ||
| 42 | #endif | 47 | #endif |
diff --git a/include/asm-arm/arch-at91/uncompress.h b/include/asm-arm/arch-at91/uncompress.h index a193d28304b6..30ac587b3b41 100644 --- a/include/asm-arm/arch-at91/uncompress.h +++ b/include/asm-arm/arch-at91/uncompress.h | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | #ifndef __ASM_ARCH_UNCOMPRESS_H | 21 | #ifndef __ASM_ARCH_UNCOMPRESS_H |
| 22 | #define __ASM_ARCH_UNCOMPRESS_H | 22 | #define __ASM_ARCH_UNCOMPRESS_H |
| 23 | 23 | ||
| 24 | #include <asm/hardware.h> | 24 | #include <asm/io.h> |
| 25 | #include <asm/arch/at91_dbgu.h> | 25 | #include <asm/arch/at91_dbgu.h> |
| 26 | 26 | ||
| 27 | /* | 27 | /* |
diff --git a/include/asm-arm/arch-cl7500/entry-macro.S b/include/asm-arm/arch-cl7500/entry-macro.S index 0cfb89b229d1..038b761fdadc 100644 --- a/include/asm-arm/arch-cl7500/entry-macro.S +++ b/include/asm-arm/arch-cl7500/entry-macro.S | |||
| @@ -1,6 +1,14 @@ | |||
| 1 | #include <asm/hardware.h> | 1 | #include <asm/hardware.h> |
| 2 | #include <asm/hardware/entry-macro-iomd.S> | 2 | #include <asm/hardware/entry-macro-iomd.S> |
| 3 | |||
| 4 | .equ ioc_base_high, IOC_BASE & 0xff000000 | ||
| 5 | .equ ioc_base_low, IOC_BASE & 0x00ff0000 | ||
| 6 | |||
| 3 | .macro get_irqnr_preamble, base, tmp | 7 | .macro get_irqnr_preamble, base, tmp |
| 8 | mov \base, #ioc_base_high @ point at IOC | ||
| 9 | .if ioc_base_low | ||
| 10 | orr \base, \base, #ioc_base_low | ||
| 11 | .endif | ||
| 4 | .endm | 12 | .endm |
| 5 | 13 | ||
| 6 | .macro arch_ret_to_user, tmp1, tmp2 | 14 | .macro arch_ret_to_user, tmp1, tmp2 |
diff --git a/include/asm-arm/arch-davinci/common.h b/include/asm-arm/arch-davinci/common.h new file mode 100644 index 000000000000..a97dfbb15e57 --- /dev/null +++ b/include/asm-arm/arch-davinci/common.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | /* | ||
| 2 | * Header for code common to all DaVinci machines. | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #ifndef __ARCH_ARM_MACH_DAVINCI_COMMON_H | ||
| 13 | #define __ARCH_ARM_MACH_DAVINCI_COMMON_H | ||
| 14 | |||
| 15 | struct sys_timer; | ||
| 16 | |||
| 17 | extern struct sys_timer davinci_timer; | ||
| 18 | |||
| 19 | #endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */ | ||
diff --git a/include/asm-arm/arch-davinci/debug-macro.S b/include/asm-arm/arch-davinci/debug-macro.S new file mode 100644 index 000000000000..e6c0f0d5d062 --- /dev/null +++ b/include/asm-arm/arch-davinci/debug-macro.S | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | /* | ||
| 2 | * Debugging macro for DaVinci | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | |||
| 12 | .macro addruart, rx | ||
| 13 | mrc p15, 0, \rx, c1, c0 | ||
| 14 | tst \rx, #1 @ MMU enabled? | ||
| 15 | moveq \rx, #0x01000000 @ physical base address | ||
| 16 | movne \rx, #0xfe000000 @ virtual base | ||
| 17 | orr \rx, \rx, #0x00c20000 @ UART 0 | ||
| 18 | .endm | ||
| 19 | |||
| 20 | #define UART_SHIFT 2 | ||
| 21 | #include <asm/hardware/debug-8250.S> | ||
diff --git a/include/asm-arm/arch-davinci/dma.h b/include/asm-arm/arch-davinci/dma.h new file mode 100644 index 000000000000..8e2f2d0ba667 --- /dev/null +++ b/include/asm-arm/arch-davinci/dma.h | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci DMA definitions | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #ifndef __ASM_ARCH_DMA_H | ||
| 12 | #define __ASM_ARCH_DMA_H | ||
| 13 | |||
| 14 | #define MAX_DMA_ADDRESS 0xffffffff | ||
| 15 | |||
| 16 | #endif /* __ASM_ARCH_DMA_H */ | ||
diff --git a/include/asm-arm/arch-davinci/entry-macro.S b/include/asm-arm/arch-davinci/entry-macro.S new file mode 100644 index 000000000000..3ebfcc5cb58e --- /dev/null +++ b/include/asm-arm/arch-davinci/entry-macro.S | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | /* | ||
| 2 | * Low-level IRQ helper macros for TI DaVinci-based platforms | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #include <asm/arch/io.h> | ||
| 12 | #include <asm/arch/irqs.h> | ||
| 13 | |||
| 14 | .macro disable_fiq | ||
| 15 | .endm | ||
| 16 | |||
| 17 | .macro get_irqnr_preamble, base, tmp | ||
| 18 | ldr \base, =IO_ADDRESS(DAVINCI_ARM_INTC_BASE) | ||
| 19 | .endm | ||
| 20 | |||
| 21 | .macro arch_ret_to_user, tmp1, tmp2 | ||
| 22 | .endm | ||
| 23 | |||
| 24 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
| 25 | ldr \tmp, [\base, #0x14] | ||
| 26 | mov \tmp, \tmp, lsr #2 | ||
| 27 | sub \irqnr, \tmp, #1 | ||
| 28 | cmp \tmp, #0 | ||
| 29 | .endm | ||
| 30 | |||
| 31 | .macro irq_prio_table | ||
| 32 | .endm | ||
diff --git a/include/asm-arm/arch-davinci/hardware.h b/include/asm-arm/arch-davinci/hardware.h new file mode 100644 index 000000000000..60362d80229e --- /dev/null +++ b/include/asm-arm/arch-davinci/hardware.h | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | /* | ||
| 2 | * Common hardware definitions | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #ifndef __ASM_ARCH_HARDWARE_H | ||
| 12 | #define __ASM_ARCH_HARDWARE_H | ||
| 13 | |||
| 14 | #endif /* __ASM_ARCH_HARDWARE_H */ | ||
diff --git a/include/asm-arm/arch-davinci/io.h b/include/asm-arm/arch-davinci/io.h new file mode 100644 index 000000000000..e7accb910864 --- /dev/null +++ b/include/asm-arm/arch-davinci/io.h | |||
| @@ -0,0 +1,79 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci IO address definitions | ||
| 3 | * | ||
| 4 | * Copied from include/asm/arm/arch-omap/io.h | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #ifndef __ASM_ARCH_IO_H | ||
| 12 | #define __ASM_ARCH_IO_H | ||
| 13 | |||
| 14 | #define IO_SPACE_LIMIT 0xffffffff | ||
| 15 | |||
| 16 | /* | ||
| 17 | * ---------------------------------------------------------------------------- | ||
| 18 | * I/O mapping | ||
| 19 | * ---------------------------------------------------------------------------- | ||
| 20 | */ | ||
| 21 | #define IO_PHYS 0x01c00000 | ||
| 22 | #define IO_OFFSET 0xfd000000 /* Virtual IO = 0xfec00000 */ | ||
| 23 | #define IO_SIZE 0x00400000 | ||
| 24 | #define IO_VIRT (IO_PHYS + IO_OFFSET) | ||
| 25 | #define io_p2v(pa) ((pa) + IO_OFFSET) | ||
| 26 | #define io_v2p(va) ((va) - IO_OFFSET) | ||
| 27 | #define IO_ADDRESS(x) io_p2v(x) | ||
| 28 | |||
| 29 | /* | ||
| 30 | * We don't actually have real ISA nor PCI buses, but there is so many | ||
| 31 | * drivers out there that might just work if we fake them... | ||
| 32 | */ | ||
| 33 | #define PCIO_BASE 0 | ||
| 34 | #define __io(a) ((void __iomem *)(PCIO_BASE + (a))) | ||
| 35 | #define __mem_pci(a) (a) | ||
| 36 | #define __mem_isa(a) (a) | ||
| 37 | |||
| 38 | #ifndef __ASSEMBLER__ | ||
| 39 | |||
| 40 | /* | ||
| 41 | * Functions to access the DaVinci IO region | ||
| 42 | * | ||
| 43 | * NOTE: - Use davinci_read/write[bwl] for physical register addresses | ||
| 44 | * - Use __raw_read/write[bwl]() for virtual register addresses | ||
| 45 | * - Use IO_ADDRESS(phys_addr) to convert registers to virtual addresses | ||
| 46 | * - DO NOT use hardcoded virtual addresses to allow changing the | ||
| 47 | * IO address space again if needed | ||
| 48 | */ | ||
| 49 | #define davinci_readb(a) (*(volatile unsigned char *)IO_ADDRESS(a)) | ||
| 50 | #define davinci_readw(a) (*(volatile unsigned short *)IO_ADDRESS(a)) | ||
| 51 | #define davinci_readl(a) (*(volatile unsigned int *)IO_ADDRESS(a)) | ||
| 52 | |||
| 53 | #define davinci_writeb(v,a) (*(volatile unsigned char *)IO_ADDRESS(a) = (v)) | ||
| 54 | #define davinci_writew(v,a) (*(volatile unsigned short *)IO_ADDRESS(a) = (v)) | ||
| 55 | #define davinci_writel(v,a) (*(volatile unsigned int *)IO_ADDRESS(a) = (v)) | ||
| 56 | |||
| 57 | /* 16 bit uses LDRH/STRH, base +/- offset_8 */ | ||
| 58 | typedef struct { volatile u16 offset[256]; } __regbase16; | ||
| 59 | #define __REGV16(vaddr) ((__regbase16 *)((vaddr)&~0xff)) \ | ||
| 60 | ->offset[((vaddr)&0xff)>>1] | ||
| 61 | #define __REG16(paddr) __REGV16(io_p2v(paddr)) | ||
| 62 | |||
| 63 | /* 8/32 bit uses LDR/STR, base +/- offset_12 */ | ||
| 64 | typedef struct { volatile u8 offset[4096]; } __regbase8; | ||
| 65 | #define __REGV8(vaddr) ((__regbase8 *)((vaddr)&~4095)) \ | ||
| 66 | ->offset[((vaddr)&4095)>>0] | ||
| 67 | #define __REG8(paddr) __REGV8(io_p2v(paddr)) | ||
| 68 | |||
| 69 | typedef struct { volatile u32 offset[4096]; } __regbase32; | ||
| 70 | #define __REGV32(vaddr) ((__regbase32 *)((vaddr)&~4095)) \ | ||
| 71 | ->offset[((vaddr)&4095)>>2] | ||
| 72 | |||
| 73 | #define __REG(paddr) __REGV32(io_p2v(paddr)) | ||
| 74 | #else | ||
| 75 | |||
| 76 | #define __REG(x) (*((volatile unsigned long *)io_p2v(x))) | ||
| 77 | |||
| 78 | #endif /* __ASSEMBLER__ */ | ||
| 79 | #endif /* __ASM_ARCH_IO_H */ | ||
diff --git a/include/asm-arm/arch-davinci/irqs.h b/include/asm-arm/arch-davinci/irqs.h new file mode 100644 index 000000000000..f4c5ca6da9f4 --- /dev/null +++ b/include/asm-arm/arch-davinci/irqs.h | |||
| @@ -0,0 +1,105 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci interrupt controller definitions | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Texas Instruments. | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify it | ||
| 7 | * under the terms of the GNU General Public License as published by the | ||
| 8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 9 | * option) any later version. | ||
| 10 | * | ||
| 11 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
| 12 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
| 13 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
| 14 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
| 15 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 16 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
| 17 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
| 18 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| 19 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
| 20 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 21 | * | ||
| 22 | * You should have received a copy of the GNU General Public License along | ||
| 23 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
| 24 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
| 25 | * | ||
| 26 | */ | ||
| 27 | #ifndef __ASM_ARCH_IRQS_H | ||
| 28 | #define __ASM_ARCH_IRQS_H | ||
| 29 | |||
| 30 | /* Base address */ | ||
| 31 | #define DAVINCI_ARM_INTC_BASE 0x01C48000 | ||
| 32 | |||
| 33 | /* Interrupt lines */ | ||
| 34 | #define IRQ_VDINT0 0 | ||
| 35 | #define IRQ_VDINT1 1 | ||
| 36 | #define IRQ_VDINT2 2 | ||
| 37 | #define IRQ_HISTINT 3 | ||
| 38 | #define IRQ_H3AINT 4 | ||
| 39 | #define IRQ_PRVUINT 5 | ||
| 40 | #define IRQ_RSZINT 6 | ||
| 41 | #define IRQ_VFOCINT 7 | ||
| 42 | #define IRQ_VENCINT 8 | ||
| 43 | #define IRQ_ASQINT 9 | ||
| 44 | #define IRQ_IMXINT 10 | ||
| 45 | #define IRQ_VLCDINT 11 | ||
| 46 | #define IRQ_USBINT 12 | ||
| 47 | #define IRQ_EMACINT 13 | ||
| 48 | |||
| 49 | #define IRQ_CCINT0 16 | ||
| 50 | #define IRQ_CCERRINT 17 | ||
| 51 | #define IRQ_TCERRINT0 18 | ||
| 52 | #define IRQ_TCERRINT 19 | ||
| 53 | #define IRQ_PSCIN 20 | ||
| 54 | |||
| 55 | #define IRQ_IDE 22 | ||
| 56 | #define IRQ_HPIINT 23 | ||
| 57 | #define IRQ_MBXINT 24 | ||
| 58 | #define IRQ_MBRINT 25 | ||
| 59 | #define IRQ_MMCINT 26 | ||
| 60 | #define IRQ_SDIOINT 27 | ||
| 61 | #define IRQ_MSINT 28 | ||
| 62 | #define IRQ_DDRINT 29 | ||
| 63 | #define IRQ_AEMIFINT 30 | ||
| 64 | #define IRQ_VLQINT 31 | ||
| 65 | #define IRQ_TINT0_TINT12 32 | ||
| 66 | #define IRQ_TINT0_TINT34 33 | ||
| 67 | #define IRQ_TINT1_TINT12 34 | ||
| 68 | #define IRQ_TINT1_TINT34 35 | ||
| 69 | #define IRQ_PWMINT0 36 | ||
| 70 | #define IRQ_PWMINT1 37 | ||
| 71 | #define IRQ_PWMINT2 38 | ||
| 72 | #define IRQ_I2C 39 | ||
| 73 | #define IRQ_UARTINT0 40 | ||
| 74 | #define IRQ_UARTINT1 41 | ||
| 75 | #define IRQ_UARTINT2 42 | ||
| 76 | #define IRQ_SPINT0 43 | ||
| 77 | #define IRQ_SPINT1 44 | ||
| 78 | |||
| 79 | #define IRQ_DSP2ARM0 46 | ||
| 80 | #define IRQ_DSP2ARM1 47 | ||
| 81 | #define IRQ_GPIO0 48 | ||
| 82 | #define IRQ_GPIO1 49 | ||
| 83 | #define IRQ_GPIO2 50 | ||
| 84 | #define IRQ_GPIO3 51 | ||
| 85 | #define IRQ_GPIO4 52 | ||
| 86 | #define IRQ_GPIO5 53 | ||
| 87 | #define IRQ_GPIO6 54 | ||
| 88 | #define IRQ_GPIO7 55 | ||
| 89 | #define IRQ_GPIOBNK0 56 | ||
| 90 | #define IRQ_GPIOBNK1 57 | ||
| 91 | #define IRQ_GPIOBNK2 58 | ||
| 92 | #define IRQ_GPIOBNK3 59 | ||
| 93 | #define IRQ_GPIOBNK4 60 | ||
| 94 | #define IRQ_COMMTX 61 | ||
| 95 | #define IRQ_COMMRX 62 | ||
| 96 | #define IRQ_EMUINT 63 | ||
| 97 | |||
| 98 | #define DAVINCI_N_AINTC_IRQ 64 | ||
| 99 | #define DAVINCI_N_GPIO 71 | ||
| 100 | |||
| 101 | #define NR_IRQS (DAVINCI_N_AINTC_IRQ + DAVINCI_N_GPIO) | ||
| 102 | |||
| 103 | #define ARCH_TIMER_IRQ IRQ_TINT1_TINT34 | ||
| 104 | |||
| 105 | #endif /* __ASM_ARCH_IRQS_H */ | ||
diff --git a/include/asm-arm/arch-davinci/memory.h b/include/asm-arm/arch-davinci/memory.h new file mode 100644 index 000000000000..dd1625c23cf4 --- /dev/null +++ b/include/asm-arm/arch-davinci/memory.h | |||
| @@ -0,0 +1,64 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci memory space definitions | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #ifndef __ASM_ARCH_MEMORY_H | ||
| 12 | #define __ASM_ARCH_MEMORY_H | ||
| 13 | |||
| 14 | /************************************************************************** | ||
| 15 | * Included Files | ||
| 16 | **************************************************************************/ | ||
| 17 | #include <asm/page.h> | ||
| 18 | #include <asm/sizes.h> | ||
| 19 | |||
| 20 | /************************************************************************** | ||
| 21 | * Definitions | ||
| 22 | **************************************************************************/ | ||
| 23 | #define DAVINCI_DDR_BASE 0x80000000 | ||
| 24 | #define DAVINCI_IRAM_BASE 0x00008000 /* ARM Internal RAM */ | ||
| 25 | |||
| 26 | #define PHYS_OFFSET DAVINCI_DDR_BASE | ||
| 27 | |||
| 28 | /* | ||
| 29 | * Increase size of DMA-consistent memory region | ||
| 30 | */ | ||
| 31 | #define CONSISTENT_DMA_SIZE (14<<20) | ||
| 32 | |||
| 33 | #ifndef __ASSEMBLY__ | ||
| 34 | /* | ||
| 35 | * Restrict DMA-able region to workaround silicon bug. The bug | ||
| 36 | * restricts buffers available for DMA to video hardware to be | ||
| 37 | * below 128M | ||
| 38 | */ | ||
| 39 | static inline void | ||
| 40 | __arch_adjust_zones(int node, unsigned long *size, unsigned long *holes) | ||
| 41 | { | ||
| 42 | unsigned int sz = (128<<20) >> PAGE_SHIFT; | ||
| 43 | |||
| 44 | if (node != 0) | ||
| 45 | sz = 0; | ||
| 46 | |||
| 47 | size[1] = size[0] - sz; | ||
| 48 | size[0] = sz; | ||
| 49 | } | ||
| 50 | |||
| 51 | #define arch_adjust_zones(node, zone_size, holes) \ | ||
| 52 | if ((meminfo.bank[0].size >> 20) > 128) __arch_adjust_zones(node, zone_size, holes) | ||
| 53 | |||
| 54 | #define ISA_DMA_THRESHOLD (PHYS_OFFSET + (128<<20) - 1) | ||
| 55 | |||
| 56 | #endif | ||
| 57 | |||
| 58 | /* | ||
| 59 | * Bus address is physical address | ||
| 60 | */ | ||
| 61 | #define __virt_to_bus(x) __virt_to_phys(x) | ||
| 62 | #define __bus_to_virt(x) __phys_to_virt(x) | ||
| 63 | |||
| 64 | #endif /* __ASM_ARCH_MEMORY_H */ | ||
diff --git a/include/asm-arm/arch-davinci/psc.h b/include/asm-arm/arch-davinci/psc.h new file mode 100644 index 000000000000..4977aa071e1e --- /dev/null +++ b/include/asm-arm/arch-davinci/psc.h | |||
| @@ -0,0 +1,76 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci Power & Sleep Controller (PSC) defines | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Texas Instruments. | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify it | ||
| 7 | * under the terms of the GNU General Public License as published by the | ||
| 8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 9 | * option) any later version. | ||
| 10 | * | ||
| 11 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
| 12 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
| 13 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
| 14 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
| 15 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 16 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
| 17 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
| 18 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| 19 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
| 20 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 21 | * | ||
| 22 | * You should have received a copy of the GNU General Public License along | ||
| 23 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
| 24 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
| 25 | * | ||
| 26 | */ | ||
| 27 | #ifndef __ASM_ARCH_PSC_H | ||
| 28 | #define __ASM_ARCH_PSC_H | ||
| 29 | |||
| 30 | /* Power and Sleep Controller (PSC) Domains */ | ||
| 31 | #define DAVINCI_GPSC_ARMDOMAIN 0 | ||
| 32 | #define DAVINCI_GPSC_DSPDOMAIN 1 | ||
| 33 | |||
| 34 | #define DAVINCI_LPSC_VPSSMSTR 0 | ||
| 35 | #define DAVINCI_LPSC_VPSSSLV 1 | ||
| 36 | #define DAVINCI_LPSC_TPCC 2 | ||
| 37 | #define DAVINCI_LPSC_TPTC0 3 | ||
| 38 | #define DAVINCI_LPSC_TPTC1 4 | ||
| 39 | #define DAVINCI_LPSC_EMAC 5 | ||
| 40 | #define DAVINCI_LPSC_EMAC_WRAPPER 6 | ||
| 41 | #define DAVINCI_LPSC_MDIO 7 | ||
| 42 | #define DAVINCI_LPSC_IEEE1394 8 | ||
| 43 | #define DAVINCI_LPSC_USB 9 | ||
| 44 | #define DAVINCI_LPSC_ATA 10 | ||
| 45 | #define DAVINCI_LPSC_VLYNQ 11 | ||
| 46 | #define DAVINCI_LPSC_UHPI 12 | ||
| 47 | #define DAVINCI_LPSC_DDR_EMIF 13 | ||
| 48 | #define DAVINCI_LPSC_AEMIF 14 | ||
| 49 | #define DAVINCI_LPSC_MMC_SD 15 | ||
| 50 | #define DAVINCI_LPSC_MEMSTICK 16 | ||
| 51 | #define DAVINCI_LPSC_McBSP 17 | ||
| 52 | #define DAVINCI_LPSC_I2C 18 | ||
| 53 | #define DAVINCI_LPSC_UART0 19 | ||
| 54 | #define DAVINCI_LPSC_UART1 20 | ||
| 55 | #define DAVINCI_LPSC_UART2 21 | ||
| 56 | #define DAVINCI_LPSC_SPI 22 | ||
| 57 | #define DAVINCI_LPSC_PWM0 23 | ||
| 58 | #define DAVINCI_LPSC_PWM1 24 | ||
| 59 | #define DAVINCI_LPSC_PWM2 25 | ||
| 60 | #define DAVINCI_LPSC_GPIO 26 | ||
| 61 | #define DAVINCI_LPSC_TIMER0 27 | ||
| 62 | #define DAVINCI_LPSC_TIMER1 28 | ||
| 63 | #define DAVINCI_LPSC_TIMER2 29 | ||
| 64 | #define DAVINCI_LPSC_SYSTEM_SUBSYS 30 | ||
| 65 | #define DAVINCI_LPSC_ARM 31 | ||
| 66 | #define DAVINCI_LPSC_SCR2 32 | ||
| 67 | #define DAVINCI_LPSC_SCR3 33 | ||
| 68 | #define DAVINCI_LPSC_SCR4 34 | ||
| 69 | #define DAVINCI_LPSC_CROSSBAR 35 | ||
| 70 | #define DAVINCI_LPSC_CFG27 36 | ||
| 71 | #define DAVINCI_LPSC_CFG3 37 | ||
| 72 | #define DAVINCI_LPSC_CFG5 38 | ||
| 73 | #define DAVINCI_LPSC_GEM 39 | ||
| 74 | #define DAVINCI_LPSC_IMCOP 40 | ||
| 75 | |||
| 76 | #endif /* __ASM_ARCH_PSC_H */ | ||
diff --git a/include/asm-arm/arch-davinci/serial.h b/include/asm-arm/arch-davinci/serial.h new file mode 100644 index 000000000000..ed418ef76805 --- /dev/null +++ b/include/asm-arm/arch-davinci/serial.h | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci serial device definitions | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #ifndef __ASM_ARCH_SERIAL_H | ||
| 12 | #define __ASM_ARCH_SERIAL_H | ||
| 13 | |||
| 14 | #include <asm/arch/io.h> | ||
| 15 | |||
| 16 | #define DAVINCI_UART0_BASE (IO_PHYS + 0x20000) | ||
| 17 | #define DAVINCI_UART1_BASE (IO_PHYS + 0x20400) | ||
| 18 | #define DAVINCI_UART2_BASE (IO_PHYS + 0x20800) | ||
| 19 | |||
| 20 | #endif /* __ASM_ARCH_SERIAL_H */ | ||
diff --git a/include/asm-arm/arch-davinci/system.h b/include/asm-arm/arch-davinci/system.h new file mode 100644 index 000000000000..440ac515804b --- /dev/null +++ b/include/asm-arm/arch-davinci/system.h | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci system defines | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #ifndef __ASM_ARCH_SYSTEM_H | ||
| 12 | #define __ASM_ARCH_SYSTEM_H | ||
| 13 | |||
| 14 | #include <asm/io.h> | ||
| 15 | #include <asm/hardware.h> | ||
| 16 | |||
| 17 | extern void davinci_watchdog_reset(void); | ||
| 18 | |||
| 19 | static void arch_idle(void) | ||
| 20 | { | ||
| 21 | cpu_do_idle(); | ||
| 22 | } | ||
| 23 | |||
| 24 | static void arch_reset(char mode) | ||
| 25 | { | ||
| 26 | davinci_watchdog_reset(); | ||
| 27 | } | ||
| 28 | |||
| 29 | #endif /* __ASM_ARCH_SYSTEM_H */ | ||
diff --git a/include/asm-arm/arch-davinci/timex.h b/include/asm-arm/arch-davinci/timex.h new file mode 100644 index 000000000000..52827567841d --- /dev/null +++ b/include/asm-arm/arch-davinci/timex.h | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci timer defines | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #ifndef __ASM_ARCH_TIMEX_H | ||
| 12 | #define __ASM_ARCH_TIMEX_H | ||
| 13 | |||
| 14 | /* The source frequency for the timers is the 27MHz clock */ | ||
| 15 | #define CLOCK_TICK_RATE 27000000 | ||
| 16 | |||
| 17 | #endif /* __ASM_ARCH_TIMEX_H__ */ | ||
diff --git a/include/asm-arm/arch-davinci/uncompress.h b/include/asm-arm/arch-davinci/uncompress.h new file mode 100644 index 000000000000..f6d1570f7206 --- /dev/null +++ b/include/asm-arm/arch-davinci/uncompress.h | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | /* | ||
| 2 | * Serial port stubs for kernel decompress status messages | ||
| 3 | * | ||
| 4 | * Author: Anant Gole | ||
| 5 | * (C) Copyright (C) 2006, Texas Instruments, Inc | ||
| 6 | * | ||
| 7 | * This file is licensed under the terms of the GNU General Public License | ||
| 8 | * version 2. This program is licensed "as is" without any warranty of any | ||
| 9 | * kind, whether express or implied. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include <linux/types.h> | ||
| 13 | #include <linux/serial_reg.h> | ||
| 14 | #include <asm/arch/serial.h> | ||
| 15 | |||
| 16 | /* PORT_16C550A, in polled non-fifo mode */ | ||
| 17 | |||
| 18 | static void putc(char c) | ||
| 19 | { | ||
| 20 | volatile u32 *uart = (volatile void *) DAVINCI_UART0_BASE; | ||
| 21 | |||
| 22 | while (!(uart[UART_LSR] & UART_LSR_THRE)) | ||
| 23 | barrier(); | ||
| 24 | uart[UART_TX] = c; | ||
| 25 | } | ||
| 26 | |||
| 27 | static inline void flush(void) | ||
| 28 | { | ||
| 29 | volatile u32 *uart = (volatile void *) DAVINCI_UART0_BASE; | ||
| 30 | while (!(uart[UART_LSR] & UART_LSR_THRE)) | ||
| 31 | barrier(); | ||
| 32 | } | ||
| 33 | |||
| 34 | #define arch_decomp_setup() | ||
| 35 | #define arch_decomp_wdog() | ||
diff --git a/include/asm-arm/arch-davinci/vmalloc.h b/include/asm-arm/arch-davinci/vmalloc.h new file mode 100644 index 000000000000..9b47fa89b333 --- /dev/null +++ b/include/asm-arm/arch-davinci/vmalloc.h | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | /* | ||
| 2 | * DaVinci vmalloc definitions | ||
| 3 | * | ||
| 4 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
| 5 | * | ||
| 6 | * 2007 (c) MontaVista Software, Inc. This file is licensed under | ||
| 7 | * the terms of the GNU General Public License version 2. This program | ||
| 8 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 9 | * or implied. | ||
| 10 | */ | ||
| 11 | #include <asm/memory.h> | ||
| 12 | #include <asm/arch/io.h> | ||
| 13 | |||
| 14 | /* Allow vmalloc range until the IO virtual range minus a 2M "hole" */ | ||
| 15 | #define VMALLOC_END (IO_VIRT - (2<<20)) | ||
diff --git a/include/asm-arm/arch-ebsa110/entry-macro.S b/include/asm-arm/arch-ebsa110/entry-macro.S index aa23c5d6c69e..f242be5c49ba 100644 --- a/include/asm-arm/arch-ebsa110/entry-macro.S +++ b/include/asm-arm/arch-ebsa110/entry-macro.S | |||
| @@ -16,13 +16,13 @@ | |||
| 16 | .endm | 16 | .endm |
| 17 | 17 | ||
| 18 | .macro get_irqnr_preamble, base, tmp | 18 | .macro get_irqnr_preamble, base, tmp |
| 19 | mov \base, #IRQ_STAT | ||
| 19 | .endm | 20 | .endm |
| 20 | 21 | ||
| 21 | .macro arch_ret_to_user, tmp1, tmp2 | 22 | .macro arch_ret_to_user, tmp1, tmp2 |
| 22 | .endm | 23 | .endm |
| 23 | 24 | ||
| 24 | .macro get_irqnr_and_base, irqnr, stat, base, tmp | 25 | .macro get_irqnr_and_base, irqnr, stat, base, tmp |
| 25 | mov \base, #IRQ_STAT | ||
| 26 | ldrb \stat, [\base] @ get interrupts | 26 | ldrb \stat, [\base] @ get interrupts |
| 27 | mov \irqnr, #0 | 27 | mov \irqnr, #0 |
| 28 | tst \stat, #15 | 28 | tst \stat, #15 |
diff --git a/include/asm-arm/arch-ebsa285/entry-macro.S b/include/asm-arm/arch-ebsa285/entry-macro.S index 4203dbf10662..e63064edb734 100644 --- a/include/asm-arm/arch-ebsa285/entry-macro.S +++ b/include/asm-arm/arch-ebsa285/entry-macro.S | |||
| @@ -11,24 +11,24 @@ | |||
| 11 | #include <asm/arch/irqs.h> | 11 | #include <asm/arch/irqs.h> |
| 12 | #include <asm/hardware/dec21285.h> | 12 | #include <asm/hardware/dec21285.h> |
| 13 | 13 | ||
| 14 | .equ dc21285_high, ARMCSR_BASE & 0xff000000 | ||
| 15 | .equ dc21285_low, ARMCSR_BASE & 0x00ffffff | ||
| 16 | |||
| 14 | .macro disable_fiq | 17 | .macro disable_fiq |
| 15 | .endm | 18 | .endm |
| 16 | 19 | ||
| 17 | .macro get_irqnr_preamble, base, tmp | 20 | .macro get_irqnr_preamble, base, tmp |
| 21 | mov \base, #dc21285_high | ||
| 22 | .if dc21285_low | ||
| 23 | orr \base, \base, #dc21285_low | ||
| 24 | .endif | ||
| 18 | .endm | 25 | .endm |
| 19 | 26 | ||
| 20 | .macro arch_ret_to_user, tmp1, tmp2 | 27 | .macro arch_ret_to_user, tmp1, tmp2 |
| 21 | .endm | 28 | .endm |
| 22 | 29 | ||
| 23 | .equ dc21285_high, ARMCSR_BASE & 0xff000000 | ||
| 24 | .equ dc21285_low, ARMCSR_BASE & 0x00ffffff | ||
| 25 | |||
| 26 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | 30 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
| 27 | mov r4, #dc21285_high | 31 | ldr \irqstat, [\base, #0x180] @ get interrupts |
| 28 | .if dc21285_low | ||
| 29 | orr r4, r4, #dc21285_low | ||
| 30 | .endif | ||
| 31 | ldr \irqstat, [r4, #0x180] @ get interrupts | ||
| 32 | 32 | ||
| 33 | mov \irqnr, #IRQ_SDRAMPARITY | 33 | mov \irqnr, #IRQ_SDRAMPARITY |
| 34 | tst \irqstat, #IRQ_MASK_SDRAMPARITY | 34 | tst \irqstat, #IRQ_MASK_SDRAMPARITY |
diff --git a/include/asm-arm/arch-iop13xx/io.h b/include/asm-arm/arch-iop13xx/io.h index 7dfff4ad82b3..a6e0f9e6ddcf 100644 --- a/include/asm-arm/arch-iop13xx/io.h +++ b/include/asm-arm/arch-iop13xx/io.h | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | 27 | ||
| 28 | extern void __iomem * __iop13xx_io(unsigned long io_addr); | 28 | extern void __iomem * __iop13xx_io(unsigned long io_addr); |
| 29 | extern void __iomem *__iop13xx_ioremap(unsigned long cookie, size_t size, | 29 | extern void __iomem *__iop13xx_ioremap(unsigned long cookie, size_t size, |
| 30 | unsigned long flags); | 30 | unsigned int mtype); |
| 31 | extern void __iop13xx_iounmap(void __iomem *addr); | 31 | extern void __iop13xx_iounmap(void __iomem *addr); |
| 32 | 32 | ||
| 33 | extern u32 iop13xx_atue_mem_base; | 33 | extern u32 iop13xx_atue_mem_base; |
diff --git a/include/asm-arm/arch-iop13xx/iop13xx.h b/include/asm-arm/arch-iop13xx/iop13xx.h index 85707e9c3325..e6736c3d1f7f 100644 --- a/include/asm-arm/arch-iop13xx/iop13xx.h +++ b/include/asm-arm/arch-iop13xx/iop13xx.h | |||
| @@ -181,6 +181,7 @@ static inline int iop13xx_cpu_id(void) | |||
| 181 | #define IOP13XX_ADMA1_PMMR_OFFSET 0x00000200 | 181 | #define IOP13XX_ADMA1_PMMR_OFFSET 0x00000200 |
| 182 | #define IOP13XX_ADMA2_PMMR_OFFSET 0x00000400 | 182 | #define IOP13XX_ADMA2_PMMR_OFFSET 0x00000400 |
| 183 | #define IOP13XX_PBI_PMMR_OFFSET 0x00001580 | 183 | #define IOP13XX_PBI_PMMR_OFFSET 0x00001580 |
| 184 | #define IOP13XX_MU_PMMR_OFFSET 0x00004000 | ||
| 184 | #define IOP13XX_ESSR0_PMMR_OFFSET 0x00002188 | 185 | #define IOP13XX_ESSR0_PMMR_OFFSET 0x00002188 |
| 185 | #define IOP13XX_ESSR0 IOP13XX_REG_ADDR32(0x00002188) | 186 | #define IOP13XX_ESSR0 IOP13XX_REG_ADDR32(0x00002188) |
| 186 | 187 | ||
| @@ -412,6 +413,34 @@ static inline int iop13xx_cpu_id(void) | |||
| 412 | #define IOP13XX_ATU_OUMBAR_FUNC_NUM_MASK (0x7) | 413 | #define IOP13XX_ATU_OUMBAR_FUNC_NUM_MASK (0x7) |
| 413 | /*=======================================================================*/ | 414 | /*=======================================================================*/ |
| 414 | 415 | ||
| 416 | /*============================MESSAGING UNIT=============================*/ | ||
| 417 | #define IOP13XX_MU_OFFSET(ofs) IOP13XX_REG_ADDR32(IOP13XX_MU_PMMR_OFFSET +\ | ||
| 418 | (ofs)) | ||
| 419 | |||
| 420 | #define IOP13XX_MU_IMR0 IOP13XX_MU_OFFSET(0x10) | ||
| 421 | #define IOP13XX_MU_IMR1 IOP13XX_MU_OFFSET(0x14) | ||
| 422 | #define IOP13XX_MU_OMR0 IOP13XX_MU_OFFSET(0x18) | ||
| 423 | #define IOP13XX_MU_OMR1 IOP13XX_MU_OFFSET(0x1C) | ||
| 424 | #define IOP13XX_MU_IDR IOP13XX_MU_OFFSET(0x20) | ||
| 425 | #define IOP13XX_MU_IISR IOP13XX_MU_OFFSET(0x24) | ||
| 426 | #define IOP13XX_MU_IIMR IOP13XX_MU_OFFSET(0x28) | ||
| 427 | #define IOP13XX_MU_ODR IOP13XX_MU_OFFSET(0x2C) | ||
| 428 | #define IOP13XX_MU_OISR IOP13XX_MU_OFFSET(0x30) | ||
| 429 | #define IOP13XX_MU_OIMR IOP13XX_MU_OFFSET(0x34) | ||
| 430 | #define IOP13XX_MU_IRCSR IOP13XX_MU_OFFSET(0x38) | ||
| 431 | #define IOP13XX_MU_ORCSR IOP13XX_MU_OFFSET(0x3C) | ||
| 432 | #define IOP13XX_MU_MIMR IOP13XX_MU_OFFSET(0x48) | ||
| 433 | #define IOP13XX_MU_MUCR IOP13XX_MU_OFFSET(0x50) | ||
| 434 | #define IOP13XX_MU_QBAR IOP13XX_MU_OFFSET(0x54) | ||
| 435 | #define IOP13XX_MU_MUBAR IOP13XX_MU_OFFSET(0x84) | ||
| 436 | |||
| 437 | #define IOP13XX_MU_WINDOW_SIZE (8 * 1024) | ||
| 438 | #define IOP13XX_MU_BASE_PHYS (0xff000000) | ||
| 439 | #define IOP13XX_MU_BASE_PCI (0xff000000) | ||
| 440 | #define IOP13XX_MU_MIMR_PCI (IOP13XX_MU_BASE_PCI + 0x48) | ||
| 441 | #define IOP13XX_MU_MIMR_CORE_SELECT (15) | ||
| 442 | /*=======================================================================*/ | ||
| 443 | |||
| 415 | /*==============================ADMA UNITS===============================*/ | 444 | /*==============================ADMA UNITS===============================*/ |
| 416 | #define IOP13XX_ADMA_PHYS_BASE(chan) IOP13XX_REG_ADDR32_PHYS((chan << 9)) | 445 | #define IOP13XX_ADMA_PHYS_BASE(chan) IOP13XX_REG_ADDR32_PHYS((chan << 9)) |
| 417 | #define IOP13XX_ADMA_UPPER_PA(chan) (IOP13XX_ADMA_PHYS_BASE(chan) + 0xc0) | 446 | #define IOP13XX_ADMA_UPPER_PA(chan) (IOP13XX_ADMA_PHYS_BASE(chan) + 0xc0) |
diff --git a/include/asm-arm/arch-iop13xx/irqs.h b/include/asm-arm/arch-iop13xx/irqs.h index 5c6fac2a4004..054e7acb5bfa 100644 --- a/include/asm-arm/arch-iop13xx/irqs.h +++ b/include/asm-arm/arch-iop13xx/irqs.h | |||
| @@ -168,7 +168,7 @@ static inline u32 read_intpnd_3(void) | |||
| 168 | #define IRQ_IOP13XX_ATUE_IMD (110) /* 14 */ | 168 | #define IRQ_IOP13XX_ATUE_IMD (110) /* 14 */ |
| 169 | #define IRQ_IOP13XX_MU_MSI_TB (111) /* 15 */ | 169 | #define IRQ_IOP13XX_MU_MSI_TB (111) /* 15 */ |
| 170 | #define IRQ_IOP13XX_RSVD_112 (112) /* 16 */ | 170 | #define IRQ_IOP13XX_RSVD_112 (112) /* 16 */ |
| 171 | #define IRQ_IOP13XX_RSVD_113 (113) /* 17 */ | 171 | #define IRQ_IOP13XX_INBD_MSI (113) /* 17 */ |
| 172 | #define IRQ_IOP13XX_RSVD_114 (114) /* 18 */ | 172 | #define IRQ_IOP13XX_RSVD_114 (114) /* 18 */ |
| 173 | #define IRQ_IOP13XX_RSVD_115 (115) /* 19 */ | 173 | #define IRQ_IOP13XX_RSVD_115 (115) /* 19 */ |
| 174 | #define IRQ_IOP13XX_RSVD_116 (116) /* 20 */ | 174 | #define IRQ_IOP13XX_RSVD_116 (116) /* 20 */ |
| @@ -184,7 +184,13 @@ static inline u32 read_intpnd_3(void) | |||
| 184 | #define IRQ_IOP13XX_RSVD_126 (126) /* 30 */ | 184 | #define IRQ_IOP13XX_RSVD_126 (126) /* 30 */ |
| 185 | #define IRQ_IOP13XX_HPI (127) /* 31 */ | 185 | #define IRQ_IOP13XX_HPI (127) /* 31 */ |
| 186 | 186 | ||
| 187 | #ifdef CONFIG_PCI_MSI | ||
| 188 | #define IRQ_IOP13XX_MSI_0 (IRQ_IOP13XX_HPI + 1) | ||
| 189 | #define NR_IOP13XX_IRQS (IRQ_IOP13XX_MSI_0 + 128) | ||
| 190 | #else | ||
| 187 | #define NR_IOP13XX_IRQS (IRQ_IOP13XX_HPI + 1) | 191 | #define NR_IOP13XX_IRQS (IRQ_IOP13XX_HPI + 1) |
| 192 | #endif | ||
| 193 | |||
| 188 | #define NR_IRQS NR_IOP13XX_IRQS | 194 | #define NR_IRQS NR_IOP13XX_IRQS |
| 189 | 195 | ||
| 190 | #endif /* _IOP13XX_IRQ_H_ */ | 196 | #endif /* _IOP13XX_IRQ_H_ */ |
diff --git a/include/asm-arm/arch-iop13xx/msi.h b/include/asm-arm/arch-iop13xx/msi.h new file mode 100644 index 000000000000..b80c5ae17e99 --- /dev/null +++ b/include/asm-arm/arch-iop13xx/msi.h | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | #ifndef _IOP13XX_MSI_H_ | ||
| 2 | #define _IOP13XX_MSI_H_ | ||
| 3 | #ifdef CONFIG_PCI_MSI | ||
| 4 | void iop13xx_msi_init(void); | ||
| 5 | #else | ||
| 6 | static inline void iop13xx_msi_init(void) | ||
| 7 | { | ||
| 8 | return; | ||
| 9 | } | ||
| 10 | #endif | ||
| 11 | #endif | ||
diff --git a/include/asm-arm/arch-iop32x/io.h b/include/asm-arm/arch-iop32x/io.h index 994f16af5057..958af751a484 100644 --- a/include/asm-arm/arch-iop32x/io.h +++ b/include/asm-arm/arch-iop32x/io.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | #include <asm/hardware.h> | 14 | #include <asm/hardware.h> |
| 15 | 15 | ||
| 16 | extern void __iomem *__iop3xx_ioremap(unsigned long cookie, size_t size, | 16 | extern void __iomem *__iop3xx_ioremap(unsigned long cookie, size_t size, |
| 17 | unsigned long flags); | 17 | unsigned int mtype); |
| 18 | extern void __iop3xx_iounmap(void __iomem *addr); | 18 | extern void __iop3xx_iounmap(void __iomem *addr); |
| 19 | 19 | ||
| 20 | #define IO_SPACE_LIMIT 0xffffffff | 20 | #define IO_SPACE_LIMIT 0xffffffff |
diff --git a/include/asm-arm/arch-iop33x/io.h b/include/asm-arm/arch-iop33x/io.h index 993f7589b29f..fec9c53e2b10 100644 --- a/include/asm-arm/arch-iop33x/io.h +++ b/include/asm-arm/arch-iop33x/io.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | #include <asm/hardware.h> | 14 | #include <asm/hardware.h> |
| 15 | 15 | ||
| 16 | extern void __iomem *__iop3xx_ioremap(unsigned long cookie, size_t size, | 16 | extern void __iomem *__iop3xx_ioremap(unsigned long cookie, size_t size, |
| 17 | unsigned long flags); | 17 | unsigned int mtype); |
| 18 | extern void __iop3xx_iounmap(void __iomem *addr); | 18 | extern void __iop3xx_iounmap(void __iomem *addr); |
| 19 | 19 | ||
| 20 | #define IO_SPACE_LIMIT 0xffffffff | 20 | #define IO_SPACE_LIMIT 0xffffffff |
diff --git a/include/asm-arm/arch-ks8695/debug-macro.S b/include/asm-arm/arch-ks8695/debug-macro.S new file mode 100644 index 000000000000..cd5f2fb1f06e --- /dev/null +++ b/include/asm-arm/arch-ks8695/debug-macro.S | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/debug-macro.S | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 6 | * | ||
| 7 | * KS8695 - Debug macros | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License version 2 as | ||
| 11 | * published by the Free Software Foundation. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <asm/hardware.h> | ||
| 15 | #include <asm/arch/regs-uart.h> | ||
| 16 | |||
| 17 | .macro addruart, rx | ||
| 18 | mrc p15, 0, \rx, c1, c0 | ||
| 19 | tst \rx, #1 @ MMU enabled? | ||
| 20 | ldreq \rx, =KS8695_UART_PA @ physical base address | ||
| 21 | ldrne \rx, =KS8695_UART_VA @ virtual base address | ||
| 22 | .endm | ||
| 23 | |||
| 24 | .macro senduart, rd, rx | ||
| 25 | str \rd, [\rx, #KS8695_URTH] @ Write to Transmit Holding Register | ||
| 26 | .endm | ||
| 27 | |||
| 28 | .macro busyuart, rd, rx | ||
| 29 | 1001: ldr \rd, [\rx, #KS8695_URLS] @ Read Line Status Register | ||
| 30 | tst \rd, #URLS_URTE @ Holding & Shift registers empty? | ||
| 31 | beq 1001b | ||
| 32 | .endm | ||
| 33 | |||
| 34 | .macro waituart, rd, rx | ||
| 35 | 1001: ldr \rd, [\rx, #KS8695_URLS] @ Read Line Status Register | ||
| 36 | tst \rd, #URLS_URTHRE @ Holding Register empty? | ||
| 37 | beq 1001b | ||
| 38 | .endm | ||
diff --git a/include/asm-arm/arch-ks8695/devices.h b/include/asm-arm/arch-ks8695/devices.h new file mode 100644 index 000000000000..b0364dce463f --- /dev/null +++ b/include/asm-arm/arch-ks8695/devices.h | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/devices.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Andrew Victor | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef __ASM_ARCH_DEVICES_H | ||
| 12 | #define __ASM_ARCH_DEVICES_H | ||
| 13 | |||
| 14 | #include <linux/pci.h> | ||
| 15 | |||
| 16 | /* Ethernet */ | ||
| 17 | extern void __init ks8695_add_device_wan(void); | ||
| 18 | extern void __init ks8695_add_device_lan(void); | ||
| 19 | extern void __init ks8695_add_device_hpna(void); | ||
| 20 | |||
| 21 | /* PCI */ | ||
| 22 | #define KS8695_MODE_PCI 0 | ||
| 23 | #define KS8695_MODE_MINIPCI 1 | ||
| 24 | #define KS8695_MODE_CARDBUS 2 | ||
| 25 | |||
| 26 | struct ks8695_pci_cfg { | ||
| 27 | short mode; | ||
| 28 | int (*map_irq)(struct pci_dev *, u8, u8); | ||
| 29 | }; | ||
| 30 | extern __init void ks8695_init_pci(struct ks8695_pci_cfg *); | ||
| 31 | |||
| 32 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/dma.h b/include/asm-arm/arch-ks8695/dma.h new file mode 100644 index 000000000000..e5159ed42a4b --- /dev/null +++ b/include/asm-arm/arch-ks8695/dma.h | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/dma.h | ||
| 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 | */ | ||
diff --git a/include/asm-arm/arch-ks8695/entry-macro.S b/include/asm-arm/arch-ks8695/entry-macro.S new file mode 100644 index 000000000000..e34bdf85920e --- /dev/null +++ b/include/asm-arm/arch-ks8695/entry-macro.S | |||
| @@ -0,0 +1,53 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/entry-macro.S | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 6 | * | ||
| 7 | * Low-level IRQ helper macros for KS8695 | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <asm/hardware.h> | ||
| 15 | #include <asm/arch/regs-irq.h> | ||
| 16 | |||
| 17 | .macro disable_fiq | ||
| 18 | .endm | ||
| 19 | |||
| 20 | .macro get_irqnr_preamble, base, tmp | ||
| 21 | ldr \base, =KS8695_IRQ_VA @ Base address of interrupt controller | ||
| 22 | .endm | ||
| 23 | |||
| 24 | .macro arch_ret_to_user, tmp1, tmp2 | ||
| 25 | .endm | ||
| 26 | |||
| 27 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
| 28 | ldr \irqstat, [\base, #KS8695_INTMS] @ Mask Status register | ||
| 29 | |||
| 30 | teq \irqstat, #0 | ||
| 31 | beq 1001f | ||
| 32 | |||
| 33 | mov \irqnr, #0 | ||
| 34 | |||
| 35 | tst \irqstat, #0xff | ||
| 36 | moveq \irqstat, \irqstat, lsr #8 | ||
| 37 | addeq \irqnr, \irqnr, #8 | ||
| 38 | tsteq \irqstat, #0xff | ||
| 39 | moveq \irqstat, \irqstat, lsr #8 | ||
| 40 | addeq \irqnr, \irqnr, #8 | ||
| 41 | tsteq \irqstat, #0xff | ||
| 42 | moveq \irqstat, \irqstat, lsr #8 | ||
| 43 | addeq \irqnr, \irqnr, #8 | ||
| 44 | tst \irqstat, #0x0f | ||
| 45 | moveq \irqstat, \irqstat, lsr #4 | ||
| 46 | addeq \irqnr, \irqnr, #4 | ||
| 47 | tst \irqstat, #0x03 | ||
| 48 | moveq \irqstat, \irqstat, lsr #2 | ||
| 49 | addeq \irqnr, \irqnr, #2 | ||
| 50 | tst \irqstat, #0x01 | ||
| 51 | addeqs \irqnr, \irqnr, #1 | ||
| 52 | 1001: | ||
| 53 | .endm | ||
diff --git a/include/asm-arm/arch-ks8695/hardware.h b/include/asm-arm/arch-ks8695/hardware.h new file mode 100644 index 000000000000..cb732bff3288 --- /dev/null +++ b/include/asm-arm/arch-ks8695/hardware.h | |||
| @@ -0,0 +1,49 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/hardware.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 6 | * | ||
| 7 | * KS8695 - Memory Map definitions | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License version 2 as | ||
| 11 | * published by the Free Software Foundation. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __ASM_ARCH_HARDWARE_H | ||
| 15 | #define __ASM_ARCH_HARDWARE_H | ||
| 16 | |||
| 17 | #include <asm/sizes.h> | ||
| 18 | |||
| 19 | /* | ||
| 20 | * Physical RAM address. | ||
| 21 | */ | ||
| 22 | #define KS8695_SDRAM_PA 0x00000000 | ||
| 23 | |||
| 24 | |||
| 25 | /* | ||
| 26 | * We map an entire MiB with the System Configuration Registers in even | ||
| 27 | * though only 64KiB is needed. This makes it easier for use with the | ||
| 28 | * head debug code as the initial MMU setup only deals in L1 sections. | ||
| 29 | */ | ||
| 30 | #define KS8695_IO_PA 0x03F00000 | ||
| 31 | #define KS8695_IO_VA 0xF0000000 | ||
| 32 | #define KS8695_IO_SIZE SZ_1M | ||
| 33 | |||
| 34 | #define KS8695_PCIMEM_PA 0x60000000 | ||
| 35 | #define KS8695_PCIMEM_SIZE SZ_512M | ||
| 36 | |||
| 37 | #define KS8695_PCIIO_PA 0x80000000 | ||
| 38 | #define KS8695_PCIIO_SIZE SZ_64K | ||
| 39 | |||
| 40 | |||
| 41 | /* | ||
| 42 | * PCI support | ||
| 43 | */ | ||
| 44 | #define pcibios_assign_all_busses() 1 | ||
| 45 | |||
| 46 | #define PCIBIOS_MIN_IO 0 | ||
| 47 | #define PCIBIOS_MIN_MEM 0 | ||
| 48 | |||
| 49 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/io.h b/include/asm-arm/arch-ks8695/io.h new file mode 100644 index 000000000000..8edc4bd6aadf --- /dev/null +++ b/include/asm-arm/arch-ks8695/io.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/io.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Andrew Victor | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef __ASM_ARCH_IO_H | ||
| 12 | #define __ASM_ARCH_IO_H | ||
| 13 | |||
| 14 | #define IO_SPACE_LIMIT 0xffffffff | ||
| 15 | |||
| 16 | #define __io(a) ((void __iomem *)(a)) | ||
| 17 | #define __mem_pci(a) (a) | ||
| 18 | |||
| 19 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/irqs.h b/include/asm-arm/arch-ks8695/irqs.h new file mode 100644 index 000000000000..8b1c4fe96a81 --- /dev/null +++ b/include/asm-arm/arch-ks8695/irqs.h | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-ks8695/irqs.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Simtec Electronics | ||
| 5 | * Ben Dooks <ben@simtec.co.uk> | ||
| 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 | |||
| 12 | #ifndef __ASM_ARCH_IRQS_H | ||
| 13 | #define __ASM_ARCH_IRQS_H | ||
| 14 | |||
| 15 | |||
| 16 | #define NR_IRQS 32 | ||
| 17 | |||
| 18 | /* | ||
| 19 | * IRQ definitions | ||
| 20 | */ | ||
| 21 | #define KS8695_IRQ_COMM_RX 0 | ||
| 22 | #define KS8695_IRQ_COMM_TX 1 | ||
| 23 | #define KS8695_IRQ_EXTERN0 2 | ||
| 24 | #define KS8695_IRQ_EXTERN1 3 | ||
| 25 | #define KS8695_IRQ_EXTERN2 4 | ||
| 26 | #define KS8695_IRQ_EXTERN3 5 | ||
| 27 | #define KS8695_IRQ_TIMER0 6 | ||
| 28 | #define KS8695_IRQ_TIMER1 7 | ||
| 29 | #define KS8695_IRQ_UART_TX 8 | ||
| 30 | #define KS8695_IRQ_UART_RX 9 | ||
| 31 | #define KS8695_IRQ_UART_LINE_STATUS 10 | ||
| 32 | #define KS8695_IRQ_UART_MODEM_STATUS 11 | ||
| 33 | #define KS8695_IRQ_LAN_RX_STOP 12 | ||
| 34 | #define KS8695_IRQ_LAN_TX_STOP 13 | ||
| 35 | #define KS8695_IRQ_LAN_RX_BUF 14 | ||
| 36 | #define KS8695_IRQ_LAN_TX_BUF 15 | ||
| 37 | #define KS8695_IRQ_LAN_RX_STATUS 16 | ||
| 38 | #define KS8695_IRQ_LAN_TX_STATUS 17 | ||
| 39 | #define KS8695_IRQ_HPNA_RX_STOP 18 | ||
| 40 | #define KS8695_IRQ_HPNA_TX_STOP 19 | ||
| 41 | #define KS8695_IRQ_HPNA_RX_BUF 20 | ||
| 42 | #define KS8695_IRQ_HPNA_TX_BUF 21 | ||
| 43 | #define KS8695_IRQ_HPNA_RX_STATUS 22 | ||
| 44 | #define KS8695_IRQ_HPNA_TX_STATUS 23 | ||
| 45 | #define KS8695_IRQ_BUS_ERROR 24 | ||
| 46 | #define KS8695_IRQ_WAN_RX_STOP 25 | ||
| 47 | #define KS8695_IRQ_WAN_TX_STOP 26 | ||
| 48 | #define KS8695_IRQ_WAN_RX_BUF 27 | ||
| 49 | #define KS8695_IRQ_WAN_TX_BUF 28 | ||
| 50 | #define KS8695_IRQ_WAN_RX_STATUS 29 | ||
| 51 | #define KS8695_IRQ_WAN_TX_STATUS 30 | ||
| 52 | #define KS8695_IRQ_WAN_LINK 31 | ||
| 53 | |||
| 54 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/memory.h b/include/asm-arm/arch-ks8695/memory.h new file mode 100644 index 000000000000..24f6a6e4a302 --- /dev/null +++ b/include/asm-arm/arch-ks8695/memory.h | |||
| @@ -0,0 +1,49 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/memory.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Andrew Victor | ||
| 5 | * | ||
| 6 | * KS8695 Memory definitions | ||
| 7 | * | ||
| 8 | * This file is licensed under the terms of the GNU General Public | ||
| 9 | * License version 2. This program is licensed "as is" without any | ||
| 10 | * warranty of any kind, whether express or implied. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef __ASM_ARCH_MEMORY_H | ||
| 14 | #define __ASM_ARCH_MEMORY_H | ||
| 15 | |||
| 16 | #include <asm/hardware.h> | ||
| 17 | |||
| 18 | /* | ||
| 19 | * Physical SRAM offset. | ||
| 20 | */ | ||
| 21 | #define PHYS_OFFSET KS8695_SDRAM_PA | ||
| 22 | |||
| 23 | #ifndef __ASSEMBLY__ | ||
| 24 | |||
| 25 | #ifdef CONFIG_PCI | ||
| 26 | |||
| 27 | /* PCI mappings */ | ||
| 28 | #define __virt_to_bus(x) ((x) - PAGE_OFFSET + KS8695_PCIMEM_PA) | ||
| 29 | #define __bus_to_virt(x) ((x) - KS8695_PCIMEM_PA + PAGE_OFFSET) | ||
| 30 | |||
| 31 | /* Platform-bus mapping */ | ||
| 32 | extern struct bus_type platform_bus_type; | ||
| 33 | #define is_lbus_device(dev) (dev && dev->bus == &platform_bus_type) | ||
| 34 | #define __arch_dma_to_virt(dev, x) ({ is_lbus_device(dev) ? \ | ||
| 35 | __phys_to_virt(x) : __bus_to_virt(x); }) | ||
| 36 | #define __arch_virt_to_dma(dev, x) ({ is_lbus_device(dev) ? \ | ||
| 37 | (dma_addr_t)__virt_to_phys(x) : (dma_addr_t)__virt_to_bus(x); }) | ||
| 38 | #define __arch_page_to_dma(dev, x) __arch_virt_to_dma(dev, page_address(x)) | ||
| 39 | |||
| 40 | #else | ||
| 41 | |||
| 42 | #define __virt_to_bus(x) __virt_to_phys(x) | ||
| 43 | #define __bus_to_virt(x) __phys_to_virt(x) | ||
| 44 | |||
| 45 | #endif | ||
| 46 | |||
| 47 | #endif | ||
| 48 | |||
| 49 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-gpio.h b/include/asm-arm/arch-ks8695/regs-gpio.h new file mode 100644 index 000000000000..57fcf9fc82e4 --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-gpio.h | |||
| @@ -0,0 +1,53 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-gpio.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2007 Andrew Victor | ||
| 5 | * | ||
| 6 | * KS8695 - GPIO control registers and bit definitions. | ||
| 7 | * | ||
| 8 | * This file is licensed under the terms of the GNU General Public | ||
| 9 | * License version 2. This program is licensed "as is" without any | ||
| 10 | * warranty of any kind, whether express or implied. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef KS8695_GPIO_H | ||
| 14 | #define KS8695_GPIO_H | ||
| 15 | |||
| 16 | #define KS8695_GPIO_OFFSET (0xF0000 + 0xE600) | ||
| 17 | #define KS8695_GPIO_VA (KS8695_IO_VA + KS8695_GPIO_OFFSET) | ||
| 18 | #define KS8695_GPIO_PA (KS8695_IO_PA + KS8695_GPIO_OFFSET) | ||
| 19 | |||
| 20 | |||
| 21 | #define KS8695_IOPM (0x00) /* I/O Port Mode Register */ | ||
| 22 | #define KS8695_IOPC (0x04) /* I/O Port Control Register */ | ||
| 23 | #define KS8695_IOPD (0x08) /* I/O Port Data Register */ | ||
| 24 | |||
| 25 | |||
| 26 | /* Port Mode Register */ | ||
| 27 | #define IOPM_(x) (1 << (x)) /* Mode for GPIO Pin x */ | ||
| 28 | |||
| 29 | /* Port Control Register */ | ||
| 30 | #define IOPC_IOTIM1EN (1 << 17) /* GPIO Pin for Timer1 Enable */ | ||
| 31 | #define IOPC_IOTIM0EN (1 << 16) /* GPIO Pin for Timer0 Enable */ | ||
| 32 | #define IOPC_IOEINT3EN (1 << 15) /* GPIO Pin for External/Soft Interrupt 3 Enable */ | ||
| 33 | #define IOPC_IOEINT3TM (7 << 12) /* GPIO Pin for External/Soft Interrupt 3 Trigger Mode */ | ||
| 34 | #define IOPC_IOEINT3_MODE(x) ((x) << 12) | ||
| 35 | #define IOPC_IOEINT2EN (1 << 11) /* GPIO Pin for External/Soft Interrupt 2 Enable */ | ||
| 36 | #define IOPC_IOEINT2TM (7 << 8) /* GPIO Pin for External/Soft Interrupt 2 Trigger Mode */ | ||
| 37 | #define IOPC_IOEINT2_MODE(x) ((x) << 8) | ||
| 38 | #define IOPC_IOEINT1EN (1 << 7) /* GPIO Pin for External/Soft Interrupt 1 Enable */ | ||
| 39 | #define IOPC_IOEINT1TM (7 << 4) /* GPIO Pin for External/Soft Interrupt 1 Trigger Mode */ | ||
| 40 | #define IOPC_IOEINT1_MODE(x) ((x) << 4) | ||
| 41 | #define IOPC_IOEINT0EN (1 << 3) /* GPIO Pin for External/Soft Interrupt 0 Enable */ | ||
| 42 | #define IOPC_IOEINT0TM (7 << 0) /* GPIO Pin for External/Soft Interrupt 0 Trigger Mode */ | ||
| 43 | #define IOPC_IOEINT0_MODE(x) ((x) << 0) | ||
| 44 | |||
| 45 | /* Trigger Modes */ | ||
| 46 | #define IOPC_TM_LOW (0) /* Level Detection (Active Low) */ | ||
| 47 | #define IOPC_TM_HIGH (1) /* Level Detection (Active High) */ | ||
| 48 | #define IOPC_TM_RISING (2) /* Rising Edge Detection */ | ||
| 49 | #define IOPC_TM_FALLING (4) /* Falling Edge Detection */ | ||
| 50 | #define IOPC_TM_EDGE (6) /* Both Edge Detection */ | ||
| 51 | |||
| 52 | |||
| 53 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-hpna.h b/include/asm-arm/arch-ks8695/regs-hpna.h new file mode 100644 index 000000000000..14091cdec103 --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-hpna.h | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-wan.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Andrew Victor | ||
| 5 | * | ||
| 6 | * KS8695 - HPNA Registers and bit definitions. | ||
| 7 | * | ||
| 8 | * This file is licensed under the terms of the GNU General Public | ||
| 9 | * License version 2. This program is licensed "as is" without any | ||
| 10 | * warranty of any kind, whether express or implied. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef KS8695_HPNA_H | ||
| 14 | #define KS8695_HPNA_H | ||
| 15 | |||
| 16 | #define KS8695_HPNA_OFFSET (0xF0000 + 0xA000) | ||
| 17 | #define KS8695_HPNA_VA (KS8695_IO_VA + KS8695_HPNA_OFFSET) | ||
| 18 | #define KS8695_HPNA_PA (KS8695_IO_PA + KS8695_HPNA_OFFSET) | ||
| 19 | |||
| 20 | |||
| 21 | /* | ||
| 22 | * HPNA registers | ||
| 23 | */ | ||
| 24 | |||
| 25 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-irq.h b/include/asm-arm/arch-ks8695/regs-irq.h new file mode 100644 index 000000000000..70b193f6b756 --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-irq.h | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-irq.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 6 | * | ||
| 7 | * KS8695 - IRQ registers and bit definitions | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef KS8695_IRQ_H | ||
| 15 | #define KS8695_IRQ_H | ||
| 16 | |||
| 17 | #define KS8695_IRQ_OFFSET (0xF0000 + 0xE200) | ||
| 18 | #define KS8695_IRQ_VA (KS8695_IO_VA + KS8695_IRQ_OFFSET) | ||
| 19 | #define KS8695_IRQ_PA (KS8695_IO_PA + KS8695_IRQ_OFFSET) | ||
| 20 | |||
| 21 | |||
| 22 | /* | ||
| 23 | * Interrupt Controller registers | ||
| 24 | */ | ||
| 25 | #define KS8695_INTMC (0x00) /* Mode Control Register */ | ||
| 26 | #define KS8695_INTEN (0x04) /* Interrupt Enable Register */ | ||
| 27 | #define KS8695_INTST (0x08) /* Interrupt Status Register */ | ||
| 28 | #define KS8695_INTPW (0x0c) /* Interrupt Priority (WAN MAC) */ | ||
| 29 | #define KS8695_INTPH (0x10) /* Interrupt Priority (HPNA) [KS8695 only] */ | ||
| 30 | #define KS8695_INTPL (0x14) /* Interrupt Priority (LAN MAC) */ | ||
| 31 | #define KS8695_INTPT (0x18) /* Interrupt Priority (Timer) */ | ||
| 32 | #define KS8695_INTPU (0x1c) /* Interrupt Priority (UART) */ | ||
| 33 | #define KS8695_INTPE (0x20) /* Interrupt Priority (External Interrupt) */ | ||
| 34 | #define KS8695_INTPC (0x24) /* Interrupt Priority (Communications Channel) */ | ||
| 35 | #define KS8695_INTPBE (0x28) /* Interrupt Priority (Bus Error Response) */ | ||
| 36 | #define KS8695_INTMS (0x2c) /* Interrupt Mask Status Register */ | ||
| 37 | #define KS8695_INTHPF (0x30) /* Interrupt Pending Highest Priority (FIQ) */ | ||
| 38 | #define KS8695_INTHPI (0x34) /* Interrupt Pending Highest Priority (IRQ) */ | ||
| 39 | |||
| 40 | |||
| 41 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-lan.h b/include/asm-arm/arch-ks8695/regs-lan.h new file mode 100644 index 000000000000..a63bd61c64ed --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-lan.h | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-lan.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Andrew Victor | ||
| 5 | * | ||
| 6 | * KS8695 - LAN Registers and bit definitions. | ||
| 7 | * | ||
| 8 | * This file is licensed under the terms of the GNU General Public | ||
| 9 | * License version 2. This program is licensed "as is" without any | ||
| 10 | * warranty of any kind, whether express or implied. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef KS8695_LAN_H | ||
| 14 | #define KS8695_LAN_H | ||
| 15 | |||
| 16 | #define KS8695_LAN_OFFSET (0xF0000 + 0x8000) | ||
| 17 | #define KS8695_LAN_VA (KS8695_IO_VA + KS8695_LAN_OFFSET) | ||
| 18 | #define KS8695_LAN_PA (KS8695_IO_PA + KS8695_LAN_OFFSET) | ||
| 19 | |||
| 20 | |||
| 21 | /* | ||
| 22 | * LAN registers | ||
| 23 | */ | ||
| 24 | #define KS8695_LMDTXC (0x00) /* DMA Transmit Control */ | ||
| 25 | #define KS8695_LMDRXC (0x04) /* DMA Receive Control */ | ||
| 26 | #define KS8695_LMDTSC (0x08) /* DMA Transmit Start Command */ | ||
| 27 | #define KS8695_LMDRSC (0x0c) /* DMA Receive Start Command */ | ||
| 28 | #define KS8695_LTDLB (0x10) /* Transmit Descriptor List Base Address */ | ||
| 29 | #define KS8695_LRDLB (0x14) /* Receive Descriptor List Base Address */ | ||
| 30 | #define KS8695_LMAL (0x18) /* MAC Station Address Low */ | ||
| 31 | #define KS8695_LMAH (0x1c) /* MAC Station Address High */ | ||
| 32 | #define KS8695_LMAAL_(n) (0x80 + ((n)*8)) /* MAC Additional Station Address (0..15) Low */ | ||
| 33 | #define KS8695_LMAAH_(n) (0x84 + ((n)*8)) /* MAC Additional Station Address (0..15) High */ | ||
| 34 | |||
| 35 | |||
| 36 | /* DMA Transmit Control Register */ | ||
| 37 | #define LMDTXC_LMTRST (1 << 31) /* Soft Reset */ | ||
| 38 | #define LMDTXC_LMTBS (0x3f << 24) /* Transmit Burst Size */ | ||
| 39 | #define LMDTXC_LMTUCG (1 << 18) /* Transmit UDP Checksum Generate */ | ||
| 40 | #define LMDTXC_LMTTCG (1 << 17) /* Transmit TCP Checksum Generate */ | ||
| 41 | #define LMDTXC_LMTICG (1 << 16) /* Transmit IP Checksum Generate */ | ||
| 42 | #define LMDTXC_LMTFCE (1 << 9) /* Transmit Flow Control Enable */ | ||
| 43 | #define LMDTXC_LMTLB (1 << 8) /* Loopback mode */ | ||
| 44 | #define LMDTXC_LMTEP (1 << 2) /* Transmit Enable Padding */ | ||
| 45 | #define LMDTXC_LMTAC (1 << 1) /* Transmit Add CRC */ | ||
| 46 | #define LMDTXC_LMTE (1 << 0) /* TX Enable */ | ||
| 47 | |||
| 48 | /* DMA Receive Control Register */ | ||
| 49 | #define LMDRXC_LMRBS (0x3f << 24) /* Receive Burst Size */ | ||
| 50 | #define LMDRXC_LMRUCC (1 << 18) /* Receive UDP Checksum check */ | ||
| 51 | #define LMDRXC_LMRTCG (1 << 17) /* Receive TCP Checksum check */ | ||
| 52 | #define LMDRXC_LMRICG (1 << 16) /* Receive IP Checksum check */ | ||
| 53 | #define LMDRXC_LMRFCE (1 << 9) /* Receive Flow Control Enable */ | ||
| 54 | #define LMDRXC_LMRB (1 << 6) /* Receive Broadcast */ | ||
| 55 | #define LMDRXC_LMRM (1 << 5) /* Receive Multicast */ | ||
| 56 | #define LMDRXC_LMRU (1 << 4) /* Receive Unicast */ | ||
| 57 | #define LMDRXC_LMRERR (1 << 3) /* Receive Error Frame */ | ||
| 58 | #define LMDRXC_LMRA (1 << 2) /* Receive All */ | ||
| 59 | #define LMDRXC_LMRE (1 << 1) /* RX Enable */ | ||
| 60 | |||
| 61 | /* Additional Station Address High */ | ||
| 62 | #define LMAAH_E (1 << 31) /* Address Enabled */ | ||
| 63 | |||
| 64 | |||
| 65 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-mem.h b/include/asm-arm/arch-ks8695/regs-mem.h new file mode 100644 index 000000000000..76b38e0862e6 --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-mem.h | |||
| @@ -0,0 +1,89 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-mem.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Andrew Victor | ||
| 5 | * | ||
| 6 | * KS8695 - Memory Controller registers and bit definitions | ||
| 7 | * | ||
| 8 | * This file is licensed under the terms of the GNU General Public | ||
| 9 | * License version 2. This program is licensed "as is" without any | ||
| 10 | * warranty of any kind, whether express or implied. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef KS8695_MEM_H | ||
| 14 | #define KS8695_MEM_H | ||
| 15 | |||
| 16 | #define KS8695_MEM_OFFSET (0xF0000 + 0x4000) | ||
| 17 | #define KS8695_MEM_VA (KS8695_IO_VA + KS8695_MEM_OFFSET) | ||
| 18 | #define KS8695_MEM_PA (KS8695_IO_PA + KS8695_MEM_OFFSET) | ||
| 19 | |||
| 20 | |||
| 21 | /* | ||
| 22 | * Memory Controller Registers | ||
| 23 | */ | ||
| 24 | #define KS8695_EXTACON0 (0x00) /* External I/O 0 Access Control */ | ||
| 25 | #define KS8695_EXTACON1 (0x04) /* External I/O 1 Access Control */ | ||
| 26 | #define KS8695_EXTACON2 (0x08) /* External I/O 2 Access Control */ | ||
| 27 | #define KS8695_ROMCON0 (0x10) /* ROM/SRAM/Flash 1 Control Register */ | ||
| 28 | #define KS8695_ROMCON1 (0x14) /* ROM/SRAM/Flash 2 Control Register */ | ||
| 29 | #define KS8695_ERGCON (0x20) /* External I/O and ROM/SRAM/Flash General Register */ | ||
| 30 | #define KS8695_SDCON0 (0x30) /* SDRAM Control Register 0 */ | ||
| 31 | #define KS8695_SDCON1 (0x34) /* SDRAM Control Register 1 */ | ||
| 32 | #define KS8695_SDGCON (0x38) /* SDRAM General Control */ | ||
| 33 | #define KS8695_SDBCON (0x3c) /* SDRAM Buffer Control */ | ||
| 34 | #define KS8695_REFTIM (0x40) /* SDRAM Refresh Timer */ | ||
| 35 | |||
| 36 | |||
| 37 | /* External I/O Access Control Registers */ | ||
| 38 | #define EXTACON_EBNPTR (0x3ff << 22) /* Last Address Pointer */ | ||
| 39 | #define EXTACON_EBBPTR (0x3ff << 12) /* Base Pointer */ | ||
| 40 | #define EXTACON_EBTACT (7 << 9) /* Write Enable/Output Enable Active Time */ | ||
| 41 | #define EXTACON_EBTCOH (7 << 6) /* Chip Select Hold Time */ | ||
| 42 | #define EXTACON_EBTACS (7 << 3) /* Address Setup Time before ECSN */ | ||
| 43 | #define EXTACON_EBTCOS (7 << 0) /* Chip Select Time before OEN */ | ||
| 44 | |||
| 45 | /* ROM/SRAM/Flash Control Register */ | ||
| 46 | #define ROMCON_RBNPTR (0x3ff << 22) /* Next Pointer */ | ||
| 47 | #define ROMCON_RBBPTR (0x3ff << 12) /* Base Pointer */ | ||
| 48 | #define ROMCON_RBTACC (7 << 4) /* Access Cycle Time */ | ||
| 49 | #define ROMCON_RBTPA (3 << 2) /* Page Address Access Time */ | ||
| 50 | #define ROMCON_PMC (3 << 0) /* Page Mode Configuration */ | ||
| 51 | #define PMC_NORMAL (0 << 0) | ||
| 52 | #define PMC_4WORD (1 << 0) | ||
| 53 | #define PMC_8WORD (2 << 0) | ||
| 54 | #define PMC_16WORD (3 << 0) | ||
| 55 | |||
| 56 | /* External I/O and ROM/SRAM/Flash General Register */ | ||
| 57 | #define ERGCON_TMULT (3 << 28) /* Time Multiplier */ | ||
| 58 | #define ERGCON_DSX2 (3 << 20) /* Data Width (External I/O Bank 2) */ | ||
| 59 | #define ERGCON_DSX1 (3 << 18) /* Data Width (External I/O Bank 1) */ | ||
| 60 | #define ERGCON_DSX0 (3 << 16) /* Data Width (External I/O Bank 0) */ | ||
| 61 | #define ERGCON_DSR1 (3 << 2) /* Data Width (ROM/SRAM/Flash Bank 1) */ | ||
| 62 | #define ERGCON_DSR0 (3 << 0) /* Data Width (ROM/SRAM/Flash Bank 0) */ | ||
| 63 | |||
| 64 | /* SDRAM Control Register */ | ||
| 65 | #define SDCON_DBNPTR (0x3ff << 22) /* Last Address Pointer */ | ||
| 66 | #define SDCON_DBBPTR (0x3ff << 12) /* Base Pointer */ | ||
| 67 | #define SDCON_DBCAB (3 << 8) /* Column Address Bits */ | ||
| 68 | #define SDCON_DBBNUM (1 << 3) /* Number of Banks */ | ||
| 69 | #define SDCON_DBDBW (3 << 1) /* Data Bus Width */ | ||
| 70 | |||
| 71 | /* SDRAM General Control Register */ | ||
| 72 | #define SDGCON_SDTRC (3 << 2) /* RAS to CAS latency */ | ||
| 73 | #define SDGCON_SDCAS (3 << 0) /* CAS latency */ | ||
| 74 | |||
| 75 | /* SDRAM Buffer Control Register */ | ||
| 76 | #define SDBCON_SDESTA (1 << 31) /* SDRAM Engine Status */ | ||
| 77 | #define SDBCON_RBUFBDIS (1 << 24) /* Read Buffer Burst Enable */ | ||
| 78 | #define SDBCON_WFIFOEN (1 << 23) /* Write FIFO Enable */ | ||
| 79 | #define SDBCON_RBUFEN (1 << 22) /* Read Buffer Enable */ | ||
| 80 | #define SDBCON_FLUSHWFIFO (1 << 21) /* Flush Write FIFO */ | ||
| 81 | #define SDBCON_RBUFINV (1 << 20) /* Read Buffer Invalidate */ | ||
| 82 | #define SDBCON_SDINI (3 << 16) /* SDRAM Initialization Control */ | ||
| 83 | #define SDBCON_SDMODE (0x3fff << 0) /* SDRAM Mode Register Value Program */ | ||
| 84 | |||
| 85 | /* SDRAM Refresh Timer Register */ | ||
| 86 | #define REFTIM_REFTIM (0xffff << 0) /* Refresh Timer Value */ | ||
| 87 | |||
| 88 | |||
| 89 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-misc.h b/include/asm-arm/arch-ks8695/regs-misc.h new file mode 100644 index 000000000000..632ca6601a94 --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-misc.h | |||
| @@ -0,0 +1,97 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-misc.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Andrew Victor | ||
| 5 | * | ||
| 6 | * KS8695 - Miscellaneous Registers | ||
| 7 | * | ||
| 8 | * This file is licensed under the terms of the GNU General Public | ||
| 9 | * License version 2. This program is licensed "as is" without any | ||
| 10 | * warranty of any kind, whether express or implied. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef KS8695_MISC_H | ||
| 14 | #define KS8695_MISC_H | ||
| 15 | |||
| 16 | #define KS8695_MISC_OFFSET (0xF0000 + 0xEA00) | ||
| 17 | #define KS8695_MISC_VA (KS8695_IO_VA + KS8695_MISC_OFFSET) | ||
| 18 | #define KS8695_MISC_PA (KS8695_IO_PA + KS8695_MISC_OFFSET) | ||
| 19 | |||
| 20 | |||
| 21 | /* | ||
| 22 | * Miscellaneous registers | ||
| 23 | */ | ||
| 24 | #define KS8695_DID (0x00) /* Device ID */ | ||
| 25 | #define KS8695_RID (0x04) /* Revision ID */ | ||
| 26 | #define KS8695_HMC (0x08) /* HPNA Miscellaneous Control [KS8695 only] */ | ||
| 27 | #define KS8695_WMC (0x0c) /* WAN Miscellaneous Control */ | ||
| 28 | #define KS8695_WPPM (0x10) /* WAN PHY Power Management */ | ||
| 29 | #define KS8695_PPS (0x1c) /* PHY PowerSave */ | ||
| 30 | |||
| 31 | /* Device ID Register */ | ||
| 32 | #define DID_ID (0xffff << 0) /* Device ID */ | ||
| 33 | |||
| 34 | /* Revision ID Register */ | ||
| 35 | #define RID_SUBID (0xf << 4) /* Sub-Device ID */ | ||
| 36 | #define RID_REVISION (0xf << 0) /* Revision ID */ | ||
| 37 | |||
| 38 | /* HPNA Miscellaneous Control Register */ | ||
| 39 | #define HMC_HSS (1 << 1) /* Speed */ | ||
| 40 | #define HMC_HDS (1 << 0) /* Duplex */ | ||
| 41 | |||
| 42 | /* WAN Miscellaneous Control Register */ | ||
| 43 | #define WMC_WANC (1 << 30) /* Auto-negotiation complete */ | ||
| 44 | #define WMC_WANR (1 << 29) /* Auto-negotiation restart */ | ||
| 45 | #define WMC_WANAP (1 << 28) /* Advertise Pause */ | ||
| 46 | #define WMC_WANA100F (1 << 27) /* Advertise 100 FDX */ | ||
| 47 | #define WMC_WANA100H (1 << 26) /* Advertise 100 HDX */ | ||
| 48 | #define WMC_WANA10F (1 << 25) /* Advertise 10 FDX */ | ||
| 49 | #define WMC_WANA10H (1 << 24) /* Advertise 10 HDX */ | ||
| 50 | #define WMC_WLS (1 << 23) /* Link status */ | ||
| 51 | #define WMC_WDS (1 << 22) /* Duplex status */ | ||
| 52 | #define WMC_WSS (1 << 21) /* Speed status */ | ||
| 53 | #define WMC_WLPP (1 << 20) /* Link Partner Pause */ | ||
| 54 | #define WMC_WLP100F (1 << 19) /* Link Partner 100 FDX */ | ||
| 55 | #define WMC_WLP100H (1 << 18) /* Link Partner 100 HDX */ | ||
| 56 | #define WMC_WLP10F (1 << 17) /* Link Partner 10 FDX */ | ||
| 57 | #define WMC_WLP10H (1 << 16) /* Link Partner 10 HDX */ | ||
| 58 | #define WMC_WAND (1 << 15) /* Auto-negotiation disable */ | ||
| 59 | #define WMC_WANF100 (1 << 14) /* Force 100 */ | ||
| 60 | #define WMC_WANFF (1 << 13) /* Force FDX */ | ||
| 61 | #define WMC_WLED1S (7 << 4) /* LED1 Select */ | ||
| 62 | #define WLED1S_SPEED (0 << 4) | ||
| 63 | #define WLED1S_LINK (1 << 4) | ||
| 64 | #define WLED1S_DUPLEX (2 << 4) | ||
| 65 | #define WLED1S_COLLISION (3 << 4) | ||
| 66 | #define WLED1S_ACTIVITY (4 << 4) | ||
| 67 | #define WLED1S_FDX_COLLISION (5 << 4) | ||
| 68 | #define WLED1S_LINK_ACTIVITY (6 << 4) | ||
| 69 | #define WMC_WLED0S (7 << 0) /* LED0 Select */ | ||
| 70 | #define WLED0S_SPEED (0 << 0) | ||
| 71 | #define WLED0S_LINK (1 << 0) | ||
| 72 | #define WLED0S_DUPLEX (2 << 0) | ||
| 73 | #define WLED0S_COLLISION (3 << 0) | ||
| 74 | #define WLED0S_ACTIVITY (4 << 0) | ||
| 75 | #define WLED0S_FDX_COLLISION (5 << 0) | ||
| 76 | #define WLED0S_LINK_ACTIVITY (6 << 0) | ||
| 77 | |||
| 78 | /* WAN PHY Power Management Register */ | ||
| 79 | #define WPPM_WLPBK (1 << 14) /* Local Loopback */ | ||
| 80 | #define WPPM_WRLPKB (1 << 13) /* Remove Loopback */ | ||
| 81 | #define WPPM_WPI (1 << 12) /* PHY isolate */ | ||
| 82 | #define WPPM_WFL (1 << 10) /* Force link */ | ||
| 83 | #define WPPM_MDIXS (1 << 9) /* MDIX Status */ | ||
| 84 | #define WPPM_FEF (1 << 8) /* Far End Fault */ | ||
| 85 | #define WPPM_AMDIXP (1 << 7) /* Auto MDIX Parameter */ | ||
| 86 | #define WPPM_TXDIS (1 << 6) /* Disable transmitter */ | ||
| 87 | #define WPPM_DFEF (1 << 5) /* Disable Far End Fault */ | ||
| 88 | #define WPPM_PD (1 << 4) /* Power Down */ | ||
| 89 | #define WPPM_DMDX (1 << 3) /* Disable Auto MDI/MDIX */ | ||
| 90 | #define WPPM_FMDX (1 << 2) /* Force MDIX */ | ||
| 91 | #define WPPM_LPBK (1 << 1) /* MAX Loopback */ | ||
| 92 | |||
| 93 | /* PHY Power Save Register */ | ||
| 94 | #define PPS_PPSM (1 << 0) /* PHY Power Save Mode */ | ||
| 95 | |||
| 96 | |||
| 97 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-pci.h b/include/asm-arm/arch-ks8695/regs-pci.h new file mode 100644 index 000000000000..286d6d488df8 --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-pci.h | |||
| @@ -0,0 +1,53 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-pci.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 6 | * | ||
| 7 | * KS8695 - PCI bridge registers and bit definitions. | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #define KS8695_PCI_OFFSET (0xF0000 + 0x2000) | ||
| 15 | #define KS8695_PCI_VA (KS8695_IO_VA + KS8695_PCI_OFFSET) | ||
| 16 | #define KS8695_PCI_PA (KS8695_IO_PA + KS8695_PCI_OFFSET) | ||
| 17 | |||
| 18 | |||
| 19 | #define KS8695_CRCFID (0x000) /* Configuration: Identification */ | ||
| 20 | #define KS8695_CRCFCS (0x004) /* Configuration: Command and Status */ | ||
| 21 | #define KS8695_CRCFRV (0x008) /* Configuration: Revision */ | ||
| 22 | #define KS8695_CRCFLT (0x00C) /* Configuration: Latency Timer */ | ||
| 23 | #define KS8695_CRCBMA (0x010) /* Configuration: Base Memory Address */ | ||
| 24 | #define KS8695_CRCSID (0x02C) /* Configuration: Subsystem ID */ | ||
| 25 | #define KS8695_CRCFIT (0x03C) /* Configuration: Interrupt */ | ||
| 26 | #define KS8695_PBCA (0x100) /* Bridge Configuration Address */ | ||
| 27 | #define KS8695_PBCD (0x104) /* Bridge Configuration Data */ | ||
| 28 | #define KS8695_PBM (0x200) /* Bridge Mode */ | ||
| 29 | #define KS8695_PBCS (0x204) /* Bridge Control and Status */ | ||
| 30 | #define KS8695_PMBA (0x208) /* Bridge Memory Base Address */ | ||
| 31 | #define KS8695_PMBAC (0x20C) /* Bridge Memory Base Address Control */ | ||
| 32 | #define KS8695_PMBAM (0x210) /* Bridge Memory Base Address Mask */ | ||
| 33 | #define KS8695_PMBAT (0x214) /* Bridge Memory Base Address Translation */ | ||
| 34 | #define KS8695_PIOBA (0x218) /* Bridge I/O Base Address */ | ||
| 35 | #define KS8695_PIOBAC (0x21C) /* Bridge I/O Base Address Control */ | ||
| 36 | #define KS8695_PIOBAM (0x220) /* Bridge I/O Base Address Mask */ | ||
| 37 | #define KS8695_PIOBAT (0x224) /* Bridge I/O Base Address Translation */ | ||
| 38 | |||
| 39 | |||
| 40 | /* Configuration: Identification */ | ||
| 41 | |||
| 42 | /* Configuration: Command and Status */ | ||
| 43 | |||
| 44 | /* Configuration: Revision */ | ||
| 45 | |||
| 46 | |||
| 47 | |||
| 48 | #define CFRV_GUEST (1 << 23) | ||
| 49 | |||
| 50 | #define PBCA_TYPE1 (1) | ||
| 51 | #define PBCA_ENABLE (1 << 31) | ||
| 52 | |||
| 53 | |||
diff --git a/include/asm-arm/arch-ks8695/regs-switch.h b/include/asm-arm/arch-ks8695/regs-switch.h new file mode 100644 index 000000000000..5f37be3f2f60 --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-switch.h | |||
| @@ -0,0 +1,66 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-switch.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Andrew Victor | ||
| 5 | * | ||
| 6 | * KS8695 - Switch Registers and bit definitions. | ||
| 7 | * | ||
| 8 | * This file is licensed under the terms of the GNU General Public | ||
| 9 | * License version 2. This program is licensed "as is" without any | ||
| 10 | * warranty of any kind, whether express or implied. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef KS8695_SWITCH_H | ||
| 14 | #define KS8695_SWITCH_H | ||
| 15 | |||
| 16 | #define KS8695_SWITCH_OFFSET (0xF0000 + 0xe800) | ||
| 17 | #define KS8695_SWITCH_VA (KS8695_IO_VA + KS8695_SWITCH_OFFSET) | ||
| 18 | #define KS8695_SWITCH_PA (KS8695_IO_PA + KS8695_SWITCH_OFFSET) | ||
| 19 | |||
| 20 | |||
| 21 | /* | ||
| 22 | * Switch registers | ||
| 23 | */ | ||
| 24 | #define KS8695_SEC0 (0x00) /* Switch Engine Control 0 */ | ||
| 25 | #define KS8695_SEC1 (0x04) /* Switch Engine Control 1 */ | ||
| 26 | #define KS8695_SEC2 (0x08) /* Switch Engine Control 2 */ | ||
| 27 | |||
| 28 | #define KS8695_P(x)_C(z) (0xc0 + (((x)-1)*3 + ((z)-1))*4) /* Port Configuration Registers */ | ||
| 29 | |||
| 30 | #define KS8695_SEP12AN (0x48) /* Port 1 & 2 Auto-Negotiation */ | ||
| 31 | #define KS8695_SEP34AN (0x4c) /* Port 3 & 4 Auto-Negotiation */ | ||
| 32 | #define KS8695_SEIAC (0x50) /* Indirect Access Control */ | ||
| 33 | #define KS8695_SEIADH2 (0x54) /* Indirect Access Data High 2 */ | ||
| 34 | #define KS8695_SEIADH1 (0x58) /* Indirect Access Data High 1 */ | ||
| 35 | #define KS8695_SEIADL (0x5c) /* Indirect Access Data Low */ | ||
| 36 | #define KS8695_SEAFC (0x60) /* Advance Feature Control */ | ||
| 37 | #define KS8695_SEDSCPH (0x64) /* TOS Priority High */ | ||
| 38 | #define KS8695_SEDSCPL (0x68) /* TOS Priority Low */ | ||
| 39 | #define KS8695_SEMAH (0x6c) /* Switch Engine MAC Address High */ | ||
| 40 | #define KS8695_SEMAL (0x70) /* Switch Engine MAC Address Low */ | ||
| 41 | #define KS8695_LPPM12 (0x74) /* Port 1 & 2 PHY Power Management */ | ||
| 42 | #define KS8695_LPPM34 (0x78) /* Port 3 & 4 PHY Power Management */ | ||
| 43 | |||
| 44 | |||
| 45 | /* Switch Engine Control 0 */ | ||
| 46 | #define SEC0_LLED1S (7 << 25) /* LED1 Select */ | ||
| 47 | #define LLED1S_SPEED (0 << 25) | ||
| 48 | #define LLED1S_LINK (1 << 25) | ||
| 49 | #define LLED1S_DUPLEX (2 << 25) | ||
| 50 | #define LLED1S_COLLISION (3 << 25) | ||
| 51 | #define LLED1S_ACTIVITY (4 << 25) | ||
| 52 | #define LLED1S_FDX_COLLISION (5 << 25) | ||
| 53 | #define LLED1S_LINK_ACTIVITY (6 << 25) | ||
| 54 | #define SEC0_LLED0S (7 << 22) /* LED0 Select */ | ||
| 55 | #define LLED0S_SPEED (0 << 22) | ||
| 56 | #define LLED0S_LINK (1 << 22) | ||
| 57 | #define LLED0S_DUPLEX (2 << 22) | ||
| 58 | #define LLED0S_COLLISION (3 << 22) | ||
| 59 | #define LLED0S_ACTIVITY (4 << 22) | ||
| 60 | #define LLED0S_FDX_COLLISION (5 << 22) | ||
| 61 | #define LLED0S_LINK_ACTIVITY (6 << 22) | ||
| 62 | #define SEC0_ENABLE (1 << 0) /* Enable Switch */ | ||
| 63 | |||
| 64 | |||
| 65 | |||
| 66 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-sys.h b/include/asm-arm/arch-ks8695/regs-sys.h new file mode 100644 index 000000000000..f3179815b8ee --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-sys.h | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-sys.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 6 | * | ||
| 7 | * KS8695 - System control registers and bit definitions | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef KS8695_SYS_H | ||
| 15 | #define KS8695_SYS_H | ||
| 16 | |||
| 17 | #define KS8695_SYS_OFFSET (0xF0000 + 0x0000) | ||
| 18 | #define KS8695_SYS_VA (KS8695_IO_VA + KS8695_SYS_OFFSET) | ||
| 19 | #define KS8695_SYS_PA (KS8695_IO_PA + KS8695_SYS_OFFSET) | ||
| 20 | |||
| 21 | |||
| 22 | #define KS8695_SYSCFG (0x00) /* System Configuration Register */ | ||
| 23 | #define KS8695_CLKCON (0x04) /* System Clock and Bus Control Register */ | ||
| 24 | |||
| 25 | |||
| 26 | /* System Configuration Register */ | ||
| 27 | #define SYSCFG_SPRBP (0x3ff << 16) /* Register Bank Base Pointer */ | ||
| 28 | |||
| 29 | /* System Clock and Bus Control Register */ | ||
| 30 | #define CLKCON_SFMODE (1 << 8) /* System Fast Mode for Simulation */ | ||
| 31 | #define CLKCON_SCDC (7 << 0) /* System Clock Divider Select */ | ||
| 32 | |||
| 33 | |||
| 34 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-timer.h b/include/asm-arm/arch-ks8695/regs-timer.h new file mode 100644 index 000000000000..0a9f7f99ec52 --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-timer.h | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-timer.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 6 | * | ||
| 7 | * KS8695 - Timer registers and bit definitions. | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef KS8695_TIMER_H | ||
| 15 | #define KS8695_TIMER_H | ||
| 16 | |||
| 17 | #define KS8695_TMR_OFFSET (0xF0000 + 0xE400) | ||
| 18 | #define KS8695_TMR_VA (KS8695_IO_VA + KS8695_TMR_OFFSET) | ||
| 19 | #define KS8695_TMR_PA (KS8695_IO_PA + KS8695_TMR_OFFSET) | ||
| 20 | |||
| 21 | |||
| 22 | /* | ||
| 23 | * Timer registers | ||
| 24 | */ | ||
| 25 | #define KS8695_TMCON (0x00) /* Timer Control Register */ | ||
| 26 | #define KS8695_T1TC (0x04) /* Timer 1 Timeout Count Register */ | ||
| 27 | #define KS8695_T0TC (0x08) /* Timer 0 Timeout Count Register */ | ||
| 28 | #define KS8695_T1PD (0x0C) /* Timer 1 Pulse Count Register */ | ||
| 29 | #define KS8695_T0PD (0x10) /* Timer 0 Pulse Count Register */ | ||
| 30 | |||
| 31 | |||
| 32 | /* Timer Control Register */ | ||
| 33 | #define TMCON_T1EN (1 << 1) /* Timer 1 Enable */ | ||
| 34 | #define TMCON_T0EN (1 << 0) /* Timer 0 Enable */ | ||
| 35 | |||
| 36 | /* Timer0 Timeout Counter Register */ | ||
| 37 | #define T0TC_WATCHDOG (0xff) /* Enable watchdog mode */ | ||
| 38 | |||
| 39 | |||
| 40 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-uart.h b/include/asm-arm/arch-ks8695/regs-uart.h new file mode 100644 index 000000000000..a27cb20502a3 --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-uart.h | |||
| @@ -0,0 +1,92 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-ks8695/regs-uart.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 6 | * | ||
| 7 | * KS8695 - UART register and bit definitions. | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License version 2 as | ||
| 11 | * published by the Free Software Foundation. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef KS8695_UART_H | ||
| 15 | #define KS8695_UART_H | ||
| 16 | |||
| 17 | #define KS8695_UART_OFFSET (0xF0000 + 0xE000) | ||
| 18 | #define KS8695_UART_VA (KS8695_IO_VA + KS8695_UART_OFFSET) | ||
| 19 | #define KS8695_UART_PA (KS8695_IO_PA + KS8695_UART_OFFSET) | ||
| 20 | |||
| 21 | |||
| 22 | /* | ||
| 23 | * UART registers | ||
| 24 | */ | ||
| 25 | #define KS8695_URRB (0x00) /* Receive Buffer Register */ | ||
| 26 | #define KS8695_URTH (0x04) /* Transmit Holding Register */ | ||
| 27 | #define KS8695_URFC (0x08) /* FIFO Control Register */ | ||
| 28 | #define KS8695_URLC (0x0C) /* Line Control Register */ | ||
| 29 | #define KS8695_URMC (0x10) /* Modem Control Register */ | ||
| 30 | #define KS8695_URLS (0x14) /* Line Status Register */ | ||
| 31 | #define KS8695_URMS (0x18) /* Modem Status Register */ | ||
| 32 | #define KS8695_URBD (0x1C) /* Baud Rate Divisor Register */ | ||
| 33 | #define KS8695_USR (0x20) /* Status Register */ | ||
| 34 | |||
| 35 | |||
| 36 | /* FIFO Control Register */ | ||
| 37 | #define URFC_URFRT (3 << 6) /* Receive FIFO Trigger Level */ | ||
| 38 | #define URFC_URFRT_1 (0 << 6) | ||
| 39 | #define URFC_URFRT_4 (1 << 6) | ||
| 40 | #define URFC_URFRT_8 (2 << 6) | ||
| 41 | #define URFC_URFRT_14 (3 << 6) | ||
| 42 | #define URFC_URTFR (1 << 2) /* Transmit FIFO Reset */ | ||
| 43 | #define URFC_URRFR (1 << 1) /* Receive FIFO Reset */ | ||
| 44 | #define URFC_URFE (1 << 0) /* FIFO Enable */ | ||
| 45 | |||
| 46 | /* Line Control Register */ | ||
| 47 | #define URLC_URSBC (1 << 6) /* Set Break Condition */ | ||
| 48 | #define URLC_PARITY (7 << 3) /* Parity */ | ||
| 49 | #define URPE_NONE (0 << 3) | ||
| 50 | #define URPE_ODD (1 << 3) | ||
| 51 | #define URPE_EVEN (3 << 3) | ||
| 52 | #define URPE_MARK (5 << 3) | ||
| 53 | #define URPE_SPACE (7 << 3) | ||
| 54 | #define URLC_URSB (1 << 2) /* Stop Bits */ | ||
| 55 | #define URLC_URCL (3 << 0) /* Character Length */ | ||
| 56 | #define URCL_5 (0 << 0) | ||
| 57 | #define URCL_6 (1 << 0) | ||
| 58 | #define URCL_7 (2 << 0) | ||
| 59 | #define URCL_8 (3 << 0) | ||
| 60 | |||
| 61 | /* Modem Control Register */ | ||
| 62 | #define URMC_URLB (1 << 4) /* Loop-back mode */ | ||
| 63 | #define URMC_UROUT2 (1 << 3) /* OUT2 signal */ | ||
| 64 | #define URMC_UROUT1 (1 << 2) /* OUT1 signal */ | ||
| 65 | #define URMC_URRTS (1 << 1) /* Request to Send */ | ||
| 66 | #define URMC_URDTR (1 << 0) /* Data Terminal Ready */ | ||
| 67 | |||
| 68 | /* Line Status Register */ | ||
| 69 | #define URLS_URRFE (1 << 7) /* Receive FIFO Error */ | ||
| 70 | #define URLS_URTE (1 << 6) /* Transmit Empty */ | ||
| 71 | #define URLS_URTHRE (1 << 5) /* Transmit Holding Register Empty */ | ||
| 72 | #define URLS_URBI (1 << 4) /* Break Interrupt */ | ||
| 73 | #define URLS_URFE (1 << 3) /* Framing Error */ | ||
| 74 | #define URLS_URPE (1 << 2) /* Parity Error */ | ||
| 75 | #define URLS_URROE (1 << 1) /* Receive Overrun Error */ | ||
| 76 | #define URLS_URDR (1 << 0) /* Receive Data Ready */ | ||
| 77 | |||
| 78 | /* Modem Status Register */ | ||
| 79 | #define URMS_URDCD (1 << 7) /* Data Carrier Detect */ | ||
| 80 | #define URMS_URRI (1 << 6) /* Ring Indicator */ | ||
| 81 | #define URMS_URDSR (1 << 5) /* Data Set Ready */ | ||
| 82 | #define URMS_URCTS (1 << 4) /* Clear to Send */ | ||
| 83 | #define URMS_URDDCD (1 << 3) /* Delta Data Carrier Detect */ | ||
| 84 | #define URMS_URTERI (1 << 2) /* Trailing Edge Ring Indicator */ | ||
| 85 | #define URMS_URDDST (1 << 1) /* Delta Data Set Ready */ | ||
| 86 | #define URMS_URDCTS (1 << 0) /* Delta Clear to Send */ | ||
| 87 | |||
| 88 | /* Status Register */ | ||
| 89 | #define USR_UTI (1 << 0) /* Timeout Indication */ | ||
| 90 | |||
| 91 | |||
| 92 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/regs-wan.h b/include/asm-arm/arch-ks8695/regs-wan.h new file mode 100644 index 000000000000..52e35b0d65e4 --- /dev/null +++ b/include/asm-arm/arch-ks8695/regs-wan.h | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/regs-wan.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Andrew Victor | ||
| 5 | * | ||
| 6 | * KS8695 - WAN Registers and bit definitions. | ||
| 7 | * | ||
| 8 | * This file is licensed under the terms of the GNU General Public | ||
| 9 | * License version 2. This program is licensed "as is" without any | ||
| 10 | * warranty of any kind, whether express or implied. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef KS8695_WAN_H | ||
| 14 | #define KS8695_WAN_H | ||
| 15 | |||
| 16 | #define KS8695_WAN_OFFSET (0xF0000 + 0x6000) | ||
| 17 | #define KS8695_WAN_VA (KS8695_IO_VA + KS8695_WAN_OFFSET) | ||
| 18 | #define KS8695_WAN_PA (KS8695_IO_PA + KS8695_WAN_OFFSET) | ||
| 19 | |||
| 20 | |||
| 21 | /* | ||
| 22 | * WAN registers | ||
| 23 | */ | ||
| 24 | #define KS8695_WMDTXC (0x00) /* DMA Transmit Control */ | ||
| 25 | #define KS8695_WMDRXC (0x04) /* DMA Receive Control */ | ||
| 26 | #define KS8695_WMDTSC (0x08) /* DMA Transmit Start Command */ | ||
| 27 | #define KS8695_WMDRSC (0x0c) /* DMA Receive Start Command */ | ||
| 28 | #define KS8695_WTDLB (0x10) /* Transmit Descriptor List Base Address */ | ||
| 29 | #define KS8695_WRDLB (0x14) /* Receive Descriptor List Base Address */ | ||
| 30 | #define KS8695_WMAL (0x18) /* MAC Station Address Low */ | ||
| 31 | #define KS8695_WMAH (0x1c) /* MAC Station Address High */ | ||
| 32 | #define KS8695_WMAAL_(n) (0x80 + ((n)*8)) /* MAC Additional Station Address (0..15) Low */ | ||
| 33 | #define KS8695_WMAAH_(n) (0x84 + ((n)*8)) /* MAC Additional Station Address (0..15) High */ | ||
| 34 | |||
| 35 | |||
| 36 | /* DMA Transmit Control Register */ | ||
| 37 | #define WMDTXC_WMTRST (1 << 31) /* Soft Reset */ | ||
| 38 | #define WMDTXC_WMTBS (0x3f << 24) /* Transmit Burst Size */ | ||
| 39 | #define WMDTXC_WMTUCG (1 << 18) /* Transmit UDP Checksum Generate */ | ||
| 40 | #define WMDTXC_WMTTCG (1 << 17) /* Transmit TCP Checksum Generate */ | ||
| 41 | #define WMDTXC_WMTICG (1 << 16) /* Transmit IP Checksum Generate */ | ||
| 42 | #define WMDTXC_WMTFCE (1 << 9) /* Transmit Flow Control Enable */ | ||
| 43 | #define WMDTXC_WMTLB (1 << 8) /* Loopback mode */ | ||
| 44 | #define WMDTXC_WMTEP (1 << 2) /* Transmit Enable Padding */ | ||
| 45 | #define WMDTXC_WMTAC (1 << 1) /* Transmit Add CRC */ | ||
| 46 | #define WMDTXC_WMTE (1 << 0) /* TX Enable */ | ||
| 47 | |||
| 48 | /* DMA Receive Control Register */ | ||
| 49 | #define WMDRXC_WMRBS (0x3f << 24) /* Receive Burst Size */ | ||
| 50 | #define WMDRXC_WMRUCC (1 << 18) /* Receive UDP Checksum check */ | ||
| 51 | #define WMDRXC_WMRTCG (1 << 17) /* Receive TCP Checksum check */ | ||
| 52 | #define WMDRXC_WMRICG (1 << 16) /* Receive IP Checksum check */ | ||
| 53 | #define WMDRXC_WMRFCE (1 << 9) /* Receive Flow Control Enable */ | ||
| 54 | #define WMDRXC_WMRB (1 << 6) /* Receive Broadcast */ | ||
| 55 | #define WMDRXC_WMRM (1 << 5) /* Receive Multicast */ | ||
| 56 | #define WMDRXC_WMRU (1 << 4) /* Receive Unicast */ | ||
| 57 | #define WMDRXC_WMRERR (1 << 3) /* Receive Error Frame */ | ||
| 58 | #define WMDRXC_WMRA (1 << 2) /* Receive All */ | ||
| 59 | #define WMDRXC_WMRE (1 << 0) /* RX Enable */ | ||
| 60 | |||
| 61 | /* Additional Station Address High */ | ||
| 62 | #define WMAAH_E (1 << 31) /* Address Enabled */ | ||
| 63 | |||
| 64 | |||
| 65 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/system.h b/include/asm-arm/arch-ks8695/system.h new file mode 100644 index 000000000000..3bc28106d937 --- /dev/null +++ b/include/asm-arm/arch-ks8695/system.h | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-s3c2410/system.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Simtec Electronics | ||
| 5 | * Ben Dooks <ben@simtec.co.uk> | ||
| 6 | * | ||
| 7 | * KS8695 - System function defines and includes | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License version 2 as | ||
| 11 | * published by the Free Software Foundation. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __ASM_ARCH_SYSTEM_H | ||
| 15 | #define __ASM_ARCH_SYSTEM_H | ||
| 16 | |||
| 17 | #include <asm/io.h> | ||
| 18 | #include <asm/arch/regs-timer.h> | ||
| 19 | |||
| 20 | static void arch_idle(void) | ||
| 21 | { | ||
| 22 | /* | ||
| 23 | * This should do all the clock switching | ||
| 24 | * and wait for interrupt tricks, | ||
| 25 | */ | ||
| 26 | cpu_do_idle(); | ||
| 27 | |||
| 28 | } | ||
| 29 | |||
| 30 | static void arch_reset(char mode) | ||
| 31 | { | ||
| 32 | unsigned int reg; | ||
| 33 | |||
| 34 | if (mode == 's') | ||
| 35 | cpu_reset(0); | ||
| 36 | |||
| 37 | /* disable timer0 */ | ||
| 38 | reg = __raw_readl(KS8695_TMR_VA + KS8695_TMCON); | ||
| 39 | __raw_writel(reg & ~TMCON_T0EN, KS8695_TMR_VA + KS8695_TMCON); | ||
| 40 | |||
| 41 | /* enable watchdog mode */ | ||
| 42 | __raw_writel((10 << 8) | T0TC_WATCHDOG, KS8695_TMR_VA + KS8695_T0TC); | ||
| 43 | |||
| 44 | /* re-enable timer0 */ | ||
| 45 | __raw_writel(reg | TMCON_T0EN, KS8695_TMR_VA + KS8695_TMCON); | ||
| 46 | } | ||
| 47 | |||
| 48 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/timex.h b/include/asm-arm/arch-ks8695/timex.h new file mode 100644 index 000000000000..8320d528b903 --- /dev/null +++ b/include/asm-arm/arch-ks8695/timex.h | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/timex.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Simtec Electronics | ||
| 5 | * Ben Dooks <ben@simtec.co.uk> | ||
| 6 | * | ||
| 7 | * KS8695 - Time Parameters | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License version 2 as | ||
| 11 | * published by the Free Software Foundation. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __ASM_ARCH_TIMEX_H | ||
| 15 | #define __ASM_ARCH_TIMEX_H | ||
| 16 | |||
| 17 | /* timers are derived from MCLK, which is 25MHz */ | ||
| 18 | #define CLOCK_TICK_RATE 25000000 | ||
| 19 | |||
| 20 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/uncompress.h b/include/asm-arm/arch-ks8695/uncompress.h new file mode 100644 index 000000000000..733a50855b5d --- /dev/null +++ b/include/asm-arm/arch-ks8695/uncompress.h | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/uncompress.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | ||
| 5 | * Copyright (C) 2006 Simtec Electronics | ||
| 6 | * | ||
| 7 | * KS8695 - Kernel uncompressor | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License version 2 as | ||
| 11 | * published by the Free Software Foundation. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __ASM_ARCH_UNCOMPRESS_H | ||
| 15 | #define __ASM_ARCH_UNCOMPRESS_H | ||
| 16 | |||
| 17 | #include <asm/io.h> | ||
| 18 | #include <asm/arch/regs-uart.h> | ||
| 19 | |||
| 20 | static void putc(char c) | ||
| 21 | { | ||
| 22 | while (!(__raw_readl(KS8695_UART_PA + KS8695_URLS) & URLS_URTHRE)) | ||
| 23 | barrier(); | ||
| 24 | |||
| 25 | __raw_writel(c, KS8695_UART_PA + KS8695_URTH); | ||
| 26 | } | ||
| 27 | |||
| 28 | static inline void flush(void) | ||
| 29 | { | ||
| 30 | while (!(__raw_readl(KS8695_UART_PA + KS8695_URLS) & URLS_URTE)) | ||
| 31 | barrier(); | ||
| 32 | } | ||
| 33 | |||
| 34 | #define arch_decomp_setup() | ||
| 35 | #define arch_decomp_wdog() | ||
| 36 | |||
| 37 | #endif | ||
diff --git a/include/asm-arm/arch-ks8695/vmalloc.h b/include/asm-arm/arch-ks8695/vmalloc.h new file mode 100644 index 000000000000..d1d88e58117d --- /dev/null +++ b/include/asm-arm/arch-ks8695/vmalloc.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-arm/arch-ks8695/vmalloc.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Ben Dooks | ||
| 5 | * Copyright (C) 2006 Simtec Electronics <linux@simtec.co.uk> | ||
| 6 | * | ||
| 7 | * KS8695 vmalloc definition | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License version 2 as | ||
| 11 | * published by the Free Software Foundation. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __ASM_ARCH_VMALLOC_H | ||
| 15 | #define __ASM_ARCH_VMALLOC_H | ||
| 16 | |||
| 17 | #define VMALLOC_END (KS8695_IO_VA & PGDIR_MASK) | ||
| 18 | |||
| 19 | #endif | ||
diff --git a/include/asm-arm/arch-omap/mux.h b/include/asm-arm/arch-omap/mux.h index 828cc5c114e1..f1ec2edd4040 100644 --- a/include/asm-arm/arch-omap/mux.h +++ b/include/asm-arm/arch-omap/mux.h | |||
| @@ -421,7 +421,9 @@ enum omap24xx_index { | |||
| 421 | /* 24xx clock */ | 421 | /* 24xx clock */ |
| 422 | W14_24XX_SYS_CLKOUT, | 422 | W14_24XX_SYS_CLKOUT, |
| 423 | 423 | ||
| 424 | /* 24xx GPMC wait pin monitoring */ | 424 | /* 24xx GPMC chipselects, wait pin monitoring */ |
| 425 | E2_GPMC_NCS2, | ||
| 426 | L2_GPMC_NCS7, | ||
| 425 | L3_GPMC_WAIT0, | 427 | L3_GPMC_WAIT0, |
| 426 | N7_GPMC_WAIT1, | 428 | N7_GPMC_WAIT1, |
| 427 | M1_GPMC_WAIT2, | 429 | M1_GPMC_WAIT2, |
| @@ -435,6 +437,7 @@ enum omap24xx_index { | |||
| 435 | 437 | ||
| 436 | /* 24xx GPIO */ | 438 | /* 24xx GPIO */ |
| 437 | M21_242X_GPIO11, | 439 | M21_242X_GPIO11, |
| 440 | P21_242X_GPIO12, | ||
| 438 | AA10_242X_GPIO13, | 441 | AA10_242X_GPIO13, |
| 439 | AA6_242X_GPIO14, | 442 | AA6_242X_GPIO14, |
| 440 | AA4_242X_GPIO15, | 443 | AA4_242X_GPIO15, |
| @@ -444,7 +447,9 @@ enum omap24xx_index { | |||
| 444 | Y20_24XX_GPIO60, | 447 | Y20_24XX_GPIO60, |
| 445 | W4__24XX_GPIO74, | 448 | W4__24XX_GPIO74, |
| 446 | M15_24XX_GPIO92, | 449 | M15_24XX_GPIO92, |
| 450 | J15_24XX_GPIO99, | ||
| 447 | V14_24XX_GPIO117, | 451 | V14_24XX_GPIO117, |
| 452 | P14_24XX_GPIO125, | ||
| 448 | 453 | ||
| 449 | /* 242x DBG GPIO */ | 454 | /* 242x DBG GPIO */ |
| 450 | V4_242X_GPIO49, | 455 | V4_242X_GPIO49, |
| @@ -486,6 +491,30 @@ enum omap24xx_index { | |||
| 486 | G18_24XX_MMC_CMD_DIR, | 491 | G18_24XX_MMC_CMD_DIR, |
| 487 | H15_24XX_MMC_CLKI, | 492 | H15_24XX_MMC_CLKI, |
| 488 | 493 | ||
| 494 | /* Full speed USB */ | ||
| 495 | J20_24XX_USB0_PUEN, | ||
| 496 | J19_24XX_USB0_VP, | ||
| 497 | K20_24XX_USB0_VM, | ||
| 498 | J18_24XX_USB0_RCV, | ||
| 499 | K19_24XX_USB0_TXEN, | ||
| 500 | J14_24XX_USB0_SE0, | ||
| 501 | K18_24XX_USB0_DAT, | ||
| 502 | |||
| 503 | N14_24XX_USB1_SE0, | ||
| 504 | W12_24XX_USB1_SE0, | ||
| 505 | P15_24XX_USB1_DAT, | ||
| 506 | R13_24XX_USB1_DAT, | ||
| 507 | W20_24XX_USB1_TXEN, | ||
| 508 | P13_24XX_USB1_TXEN, | ||
| 509 | V19_24XX_USB1_RCV, | ||
| 510 | V12_24XX_USB1_RCV, | ||
| 511 | |||
| 512 | AA10_24XX_USB2_SE0, | ||
| 513 | Y11_24XX_USB2_DAT, | ||
| 514 | AA12_24XX_USB2_TXEN, | ||
| 515 | AA6_24XX_USB2_RCV, | ||
| 516 | AA4_24XX_USB2_TLLSE0, | ||
| 517 | |||
| 489 | /* Keypad GPIO*/ | 518 | /* Keypad GPIO*/ |
| 490 | T19_24XX_KBR0, | 519 | T19_24XX_KBR0, |
| 491 | R19_24XX_KBR1, | 520 | R19_24XX_KBR1, |
diff --git a/include/asm-arm/arch-realview/entry-macro.S b/include/asm-arm/arch-realview/entry-macro.S index 138838d4ad75..3b4e2076603a 100644 --- a/include/asm-arm/arch-realview/entry-macro.S +++ b/include/asm-arm/arch-realview/entry-macro.S | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | .endm | 14 | .endm |
| 15 | 15 | ||
| 16 | .macro get_irqnr_preamble, base, tmp | 16 | .macro get_irqnr_preamble, base, tmp |
| 17 | ldr \base, =IO_ADDRESS(REALVIEW_GIC_CPU_BASE) | ||
| 17 | .endm | 18 | .endm |
| 18 | 19 | ||
| 19 | .macro arch_ret_to_user, tmp1, tmp2 | 20 | .macro arch_ret_to_user, tmp1, tmp2 |
| @@ -40,7 +41,6 @@ | |||
| 40 | 41 | ||
| 41 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | 42 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
| 42 | 43 | ||
| 43 | ldr \base, =IO_ADDRESS(REALVIEW_GIC_CPU_BASE) | ||
| 44 | ldr \irqstat, [\base, #GIC_CPU_INTACK] /* bits 12-10 = src CPU, 9-0 = int # */ | 44 | ldr \irqstat, [\base, #GIC_CPU_INTACK] /* bits 12-10 = src CPU, 9-0 = int # */ |
| 45 | 45 | ||
| 46 | ldr \tmp, =1021 | 46 | ldr \tmp, =1021 |
diff --git a/include/asm-arm/arch-rpc/entry-macro.S b/include/asm-arm/arch-rpc/entry-macro.S index 0cfb89b229d1..038b761fdadc 100644 --- a/include/asm-arm/arch-rpc/entry-macro.S +++ b/include/asm-arm/arch-rpc/entry-macro.S | |||
| @@ -1,6 +1,14 @@ | |||
| 1 | #include <asm/hardware.h> | 1 | #include <asm/hardware.h> |
| 2 | #include <asm/hardware/entry-macro-iomd.S> | 2 | #include <asm/hardware/entry-macro-iomd.S> |
| 3 | |||
| 4 | .equ ioc_base_high, IOC_BASE & 0xff000000 | ||
| 5 | .equ ioc_base_low, IOC_BASE & 0x00ff0000 | ||
| 6 | |||
| 3 | .macro get_irqnr_preamble, base, tmp | 7 | .macro get_irqnr_preamble, base, tmp |
| 8 | mov \base, #ioc_base_high @ point at IOC | ||
| 9 | .if ioc_base_low | ||
| 10 | orr \base, \base, #ioc_base_low | ||
| 11 | .endif | ||
| 4 | .endm | 12 | .endm |
| 5 | 13 | ||
| 6 | .macro arch_ret_to_user, tmp1, tmp2 | 14 | .macro arch_ret_to_user, tmp1, tmp2 |
diff --git a/include/asm-arm/arch-s3c2410/regs-s3c2443-clock.h b/include/asm-arm/arch-s3c2410/regs-s3c2443-clock.h index cd9e26568f85..c1414658d1c5 100644 --- a/include/asm-arm/arch-s3c2410/regs-s3c2443-clock.h +++ b/include/asm-arm/arch-s3c2410/regs-s3c2443-clock.h | |||
| @@ -129,6 +129,7 @@ | |||
| 129 | #define S3C2443_PCLKCON_IIC (1<<4) | 129 | #define S3C2443_PCLKCON_IIC (1<<4) |
| 130 | #define S3C2443_PCLKCON_SDI (1<<5) | 130 | #define S3C2443_PCLKCON_SDI (1<<5) |
| 131 | #define S3C2443_PCLKCON_ADC (1<<7) | 131 | #define S3C2443_PCLKCON_ADC (1<<7) |
| 132 | #define S3C2443_PCLKCON_AC97 (1<<8) | ||
| 132 | #define S3C2443_PCLKCON_IIS (1<<9) | 133 | #define S3C2443_PCLKCON_IIS (1<<9) |
| 133 | #define S3C2443_PCLKCON_PWMT (1<<10) | 134 | #define S3C2443_PCLKCON_PWMT (1<<10) |
| 134 | #define S3C2443_PCLKCON_WDT (1<<11) | 135 | #define S3C2443_PCLKCON_WDT (1<<11) |
diff --git a/include/asm-arm/arch-sa1100/entry-macro.S b/include/asm-arm/arch-sa1100/entry-macro.S index 028967629340..127db4aaf4f2 100644 --- a/include/asm-arm/arch-sa1100/entry-macro.S +++ b/include/asm-arm/arch-sa1100/entry-macro.S | |||
| @@ -12,16 +12,16 @@ | |||
| 12 | .endm | 12 | .endm |
| 13 | 13 | ||
| 14 | .macro get_irqnr_preamble, base, tmp | 14 | .macro get_irqnr_preamble, base, tmp |
| 15 | mov \base, #0xfa000000 @ ICIP = 0xfa050000 | ||
| 16 | add \base, \base, #0x00050000 | ||
| 15 | .endm | 17 | .endm |
| 16 | 18 | ||
| 17 | .macro arch_ret_to_user, tmp1, tmp2 | 19 | .macro arch_ret_to_user, tmp1, tmp2 |
| 18 | .endm | 20 | .endm |
| 19 | 21 | ||
| 20 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | 22 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
| 21 | mov r4, #0xfa000000 @ ICIP = 0xfa050000 | 23 | ldr \irqstat, [\base] @ get irqs |
| 22 | add r4, r4, #0x00050000 | 24 | ldr \irqnr, [\base, #4] @ ICMR = 0xfa050004 |
| 23 | ldr \irqstat, [r4] @ get irqs | ||
| 24 | ldr \irqnr, [r4, #4] @ ICMR = 0xfa050004 | ||
| 25 | ands \irqstat, \irqstat, \irqnr | 25 | ands \irqstat, \irqstat, \irqnr |
| 26 | mov \irqnr, #0 | 26 | mov \irqnr, #0 |
| 27 | beq 1001f | 27 | beq 1001f |
diff --git a/include/asm-arm/arch-versatile/entry-macro.S b/include/asm-arm/arch-versatile/entry-macro.S index 0fae002637a0..924d1a8fe360 100644 --- a/include/asm-arm/arch-versatile/entry-macro.S +++ b/include/asm-arm/arch-versatile/entry-macro.S | |||
| @@ -14,13 +14,13 @@ | |||
| 14 | .endm | 14 | .endm |
| 15 | 15 | ||
| 16 | .macro get_irqnr_preamble, base, tmp | 16 | .macro get_irqnr_preamble, base, tmp |
| 17 | ldr \base, =IO_ADDRESS(VERSATILE_VIC_BASE) | ||
| 17 | .endm | 18 | .endm |
| 18 | 19 | ||
| 19 | .macro arch_ret_to_user, tmp1, tmp2 | 20 | .macro arch_ret_to_user, tmp1, tmp2 |
| 20 | .endm | 21 | .endm |
| 21 | 22 | ||
| 22 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | 23 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
| 23 | ldr \base, =IO_ADDRESS(VERSATILE_VIC_BASE) | ||
| 24 | ldr \irqstat, [\base, #VIC_IRQ_STATUS] @ get masked status | 24 | ldr \irqstat, [\base, #VIC_IRQ_STATUS] @ get masked status |
| 25 | mov \irqnr, #0 | 25 | mov \irqnr, #0 |
| 26 | teq \irqstat, #0 | 26 | teq \irqstat, #0 |
diff --git a/include/asm-arm/ecard.h b/include/asm-arm/ecard.h index 3a6d3eb27622..684fe0645239 100644 --- a/include/asm-arm/ecard.h +++ b/include/asm-arm/ecard.h | |||
| @@ -121,7 +121,7 @@ struct in_ecid { /* Packed card ID information */ | |||
| 121 | typedef struct expansion_card ecard_t; | 121 | typedef struct expansion_card ecard_t; |
| 122 | typedef unsigned long *loader_t; | 122 | typedef unsigned long *loader_t; |
| 123 | 123 | ||
| 124 | typedef struct { /* Card handler routines */ | 124 | typedef struct expansion_card_ops { /* Card handler routines */ |
| 125 | void (*irqenable)(ecard_t *ec, int irqnr); | 125 | void (*irqenable)(ecard_t *ec, int irqnr); |
| 126 | void (*irqdisable)(ecard_t *ec, int irqnr); | 126 | void (*irqdisable)(ecard_t *ec, int irqnr); |
| 127 | int (*irqpending)(ecard_t *ec); | 127 | int (*irqpending)(ecard_t *ec); |
| @@ -179,6 +179,8 @@ struct expansion_card { | |||
| 179 | u64 dma_mask; | 179 | u64 dma_mask; |
| 180 | }; | 180 | }; |
| 181 | 181 | ||
| 182 | void ecard_setirq(struct expansion_card *ec, const struct expansion_card_ops *ops, void *irq_data); | ||
| 183 | |||
| 182 | struct in_chunk_dir { | 184 | struct in_chunk_dir { |
| 183 | unsigned int start_offset; | 185 | unsigned int start_offset; |
| 184 | union { | 186 | union { |
| @@ -224,6 +226,10 @@ ecard_address(struct expansion_card *ec, card_type_t type, card_speed_t speed) | |||
| 224 | extern int ecard_request_resources(struct expansion_card *ec); | 226 | extern int ecard_request_resources(struct expansion_card *ec); |
| 225 | extern void ecard_release_resources(struct expansion_card *ec); | 227 | extern void ecard_release_resources(struct expansion_card *ec); |
| 226 | 228 | ||
| 229 | void __iomem *ecardm_iomap(struct expansion_card *ec, unsigned int res, | ||
| 230 | unsigned long offset, unsigned long maxsize); | ||
| 231 | #define ecardm_iounmap(__ec, __addr) devm_iounmap(&(__ec)->dev, __addr) | ||
| 232 | |||
| 227 | extern struct bus_type ecard_bus_type; | 233 | extern struct bus_type ecard_bus_type; |
| 228 | 234 | ||
| 229 | #define ECARD_DEV(_d) container_of((_d), struct expansion_card, dev) | 235 | #define ECARD_DEV(_d) container_of((_d), struct expansion_card, dev) |
diff --git a/include/asm-arm/hardware/entry-macro-iomd.S b/include/asm-arm/hardware/entry-macro-iomd.S index fbed08f298d0..9bb580a5b15e 100644 --- a/include/asm-arm/hardware/entry-macro-iomd.S +++ b/include/asm-arm/hardware/entry-macro-iomd.S | |||
| @@ -11,8 +11,6 @@ | |||
| 11 | /* IOC / IOMD based hardware */ | 11 | /* IOC / IOMD based hardware */ |
| 12 | #include <asm/hardware/iomd.h> | 12 | #include <asm/hardware/iomd.h> |
| 13 | 13 | ||
| 14 | .equ ioc_base_high, IOC_BASE & 0xff000000 | ||
| 15 | .equ ioc_base_low, IOC_BASE & 0x00ff0000 | ||
| 16 | .macro disable_fiq | 14 | .macro disable_fiq |
| 17 | mov r12, #ioc_base_high | 15 | mov r12, #ioc_base_high |
| 18 | .if ioc_base_low | 16 | .if ioc_base_low |
| @@ -22,33 +20,29 @@ | |||
| 22 | .endm | 20 | .endm |
| 23 | 21 | ||
| 24 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | 22 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
| 25 | mov r4, #ioc_base_high @ point at IOC | 23 | ldrb \irqstat, [\base, #IOMD_IRQREQB] @ get high priority first |
| 26 | .if ioc_base_low | 24 | ldr \tmp, =irq_prio_h |
| 27 | orr r4, r4, #ioc_base_low | ||
| 28 | .endif | ||
| 29 | ldrb \irqstat, [r4, #IOMD_IRQREQB] @ get high priority first | ||
| 30 | ldr \base, =irq_prio_h | ||
| 31 | teq \irqstat, #0 | 25 | teq \irqstat, #0 |
| 32 | #ifdef IOMD_BASE | 26 | #ifdef IOMD_BASE |
| 33 | ldreqb \irqstat, [r4, #IOMD_DMAREQ] @ get dma | 27 | ldreqb \irqstat, [\base, #IOMD_DMAREQ] @ get dma |
| 34 | addeq \base, \base, #256 @ irq_prio_h table size | 28 | addeq \tmp, \tmp, #256 @ irq_prio_h table size |
| 35 | teqeq \irqstat, #0 | 29 | teqeq \irqstat, #0 |
| 36 | bne 2406f | 30 | bne 2406f |
| 37 | #endif | 31 | #endif |
| 38 | ldreqb \irqstat, [r4, #IOMD_IRQREQA] @ get low priority | 32 | ldreqb \irqstat, [\base, #IOMD_IRQREQA] @ get low priority |
| 39 | addeq \base, \base, #256 @ irq_prio_d table size | 33 | addeq \tmp, \tmp, #256 @ irq_prio_d table size |
| 40 | teqeq \irqstat, #0 | 34 | teqeq \irqstat, #0 |
| 41 | #ifdef IOMD_IRQREQC | 35 | #ifdef IOMD_IRQREQC |
| 42 | ldreqb \irqstat, [r4, #IOMD_IRQREQC] | 36 | ldreqb \irqstat, [\base, #IOMD_IRQREQC] |
| 43 | addeq \base, \base, #256 @ irq_prio_l table size | 37 | addeq \tmp, \tmp, #256 @ irq_prio_l table size |
| 44 | teqeq \irqstat, #0 | 38 | teqeq \irqstat, #0 |
| 45 | #endif | 39 | #endif |
| 46 | #ifdef IOMD_IRQREQD | 40 | #ifdef IOMD_IRQREQD |
| 47 | ldreqb \irqstat, [r4, #IOMD_IRQREQD] | 41 | ldreqb \irqstat, [\base, #IOMD_IRQREQD] |
| 48 | addeq \base, \base, #256 @ irq_prio_lc table size | 42 | addeq \tmp, \tmp, #256 @ irq_prio_lc table size |
| 49 | teqeq \irqstat, #0 | 43 | teqeq \irqstat, #0 |
| 50 | #endif | 44 | #endif |
| 51 | 2406: ldrneb \irqnr, [\base, \irqstat] @ get IRQ number | 45 | 2406: ldrneb \irqnr, [\tmp, \irqstat] @ get IRQ number |
| 52 | .endm | 46 | .endm |
| 53 | 47 | ||
| 54 | /* | 48 | /* |
diff --git a/include/asm-arm/sizes.h b/include/asm-arm/sizes.h index 7f50ae0edf1b..503843db1565 100644 --- a/include/asm-arm/sizes.h +++ b/include/asm-arm/sizes.h | |||
| @@ -24,6 +24,10 @@ | |||
| 24 | #define __sizes_h 1 | 24 | #define __sizes_h 1 |
| 25 | 25 | ||
| 26 | /* handy sizes */ | 26 | /* handy sizes */ |
| 27 | #define SZ_16 0x00000010 | ||
| 28 | #define SZ_256 0x00000100 | ||
| 29 | #define SZ_512 0x00000200 | ||
| 30 | |||
| 27 | #define SZ_1K 0x00000400 | 31 | #define SZ_1K 0x00000400 |
| 28 | #define SZ_4K 0x00001000 | 32 | #define SZ_4K 0x00001000 |
| 29 | #define SZ_8K 0x00002000 | 33 | #define SZ_8K 0x00002000 |
diff --git a/include/asm-avr32/arch-at32ap/cpu.h b/include/asm-avr32/arch-at32ap/cpu.h index 2bdc5bd6f793..a762f42cbb71 100644 --- a/include/asm-avr32/arch-at32ap/cpu.h +++ b/include/asm-avr32/arch-at32ap/cpu.h | |||
| @@ -29,5 +29,6 @@ | |||
| 29 | #define cpu_is_at91sam9260() (0) | 29 | #define cpu_is_at91sam9260() (0) |
| 30 | #define cpu_is_at91sam9261() (0) | 30 | #define cpu_is_at91sam9261() (0) |
| 31 | #define cpu_is_at91sam9263() (0) | 31 | #define cpu_is_at91sam9263() (0) |
| 32 | #define cpu_is_at91sam9rl() (0) | ||
| 32 | 33 | ||
| 33 | #endif /* __ASM_ARCH_CPU_H */ | 34 | #endif /* __ASM_ARCH_CPU_H */ |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index aa2653a159f4..a3ac4c896831 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
| @@ -139,6 +139,10 @@ | |||
| 139 | /* Blackfin bf5xx */ | 139 | /* Blackfin bf5xx */ |
| 140 | #define PORT_BFIN 75 | 140 | #define PORT_BFIN 75 |
| 141 | 141 | ||
| 142 | /* Micrel KS8695 */ | ||
| 143 | #define PORT_KS8695 76 | ||
| 144 | |||
| 145 | |||
| 142 | #ifdef __KERNEL__ | 146 | #ifdef __KERNEL__ |
| 143 | 147 | ||
| 144 | #include <linux/compiler.h> | 148 | #include <linux/compiler.h> |
