diff options
Diffstat (limited to 'arch/arm')
66 files changed, 5457 insertions, 158 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 1c4119c60040..1ae18d879e12 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -702,6 +702,16 @@ config ARCH_BCMRING | |||
702 | help | 702 | help |
703 | Support for Broadcom's BCMRing platform. | 703 | Support for Broadcom's BCMRing platform. |
704 | 704 | ||
705 | config ARCH_U8500 | ||
706 | bool "ST-Ericsson U8500 Series" | ||
707 | select CPU_V7 | ||
708 | select ARM_AMBA | ||
709 | select GENERIC_TIME | ||
710 | select GENERIC_CLOCKEVENTS | ||
711 | select COMMON_CLKDEV | ||
712 | help | ||
713 | Support for ST-Ericsson's Ux500 architecture | ||
714 | |||
705 | endchoice | 715 | endchoice |
706 | 716 | ||
707 | source "arch/arm/mach-clps711x/Kconfig" | 717 | source "arch/arm/mach-clps711x/Kconfig" |
@@ -787,6 +797,7 @@ source "arch/arm/mach-at91/Kconfig" | |||
787 | source "arch/arm/plat-mxc/Kconfig" | 797 | source "arch/arm/plat-mxc/Kconfig" |
788 | 798 | ||
789 | source "arch/arm/mach-nomadik/Kconfig" | 799 | source "arch/arm/mach-nomadik/Kconfig" |
800 | source "arch/arm/plat-nomadik/Kconfig" | ||
790 | 801 | ||
791 | source "arch/arm/mach-netx/Kconfig" | 802 | source "arch/arm/mach-netx/Kconfig" |
792 | 803 | ||
@@ -804,6 +815,8 @@ source "arch/arm/mach-w90x900/Kconfig" | |||
804 | 815 | ||
805 | source "arch/arm/mach-bcmring/Kconfig" | 816 | source "arch/arm/mach-bcmring/Kconfig" |
806 | 817 | ||
818 | source "arch/arm/mach-ux500/Kconfig" | ||
819 | |||
807 | # Definitions to make life easier | 820 | # Definitions to make life easier |
808 | config ARCH_ACORN | 821 | config ARCH_ACORN |
809 | bool | 822 | bool |
@@ -955,10 +968,10 @@ source "kernel/time/Kconfig" | |||
955 | config SMP | 968 | config SMP |
956 | bool "Symmetric Multi-Processing (EXPERIMENTAL)" | 969 | bool "Symmetric Multi-Processing (EXPERIMENTAL)" |
957 | depends on EXPERIMENTAL && (REALVIEW_EB_ARM11MP || REALVIEW_EB_A9MP ||\ | 970 | depends on EXPERIMENTAL && (REALVIEW_EB_ARM11MP || REALVIEW_EB_A9MP ||\ |
958 | MACH_REALVIEW_PB11MP || MACH_REALVIEW_PBX || ARCH_OMAP4) | 971 | MACH_REALVIEW_PB11MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || ARCH_U8500) |
959 | depends on GENERIC_CLOCKEVENTS | 972 | depends on GENERIC_CLOCKEVENTS |
960 | select USE_GENERIC_SMP_HELPERS | 973 | select USE_GENERIC_SMP_HELPERS |
961 | select HAVE_ARM_SCU if (ARCH_REALVIEW || ARCH_OMAP4) | 974 | select HAVE_ARM_SCU if (ARCH_REALVIEW || ARCH_OMAP4 || ARCH_U8500) |
962 | help | 975 | help |
963 | This enables support for systems with more than one CPU. If you have | 976 | This enables support for systems with more than one CPU. If you have |
964 | a system with only one CPU, like most personal computers, say N. If | 977 | a system with only one CPU, like most personal computers, say N. If |
@@ -1027,9 +1040,9 @@ config HOTPLUG_CPU | |||
1027 | config LOCAL_TIMERS | 1040 | config LOCAL_TIMERS |
1028 | bool "Use local timer interrupts" | 1041 | bool "Use local timer interrupts" |
1029 | depends on SMP && (REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || \ | 1042 | depends on SMP && (REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || \ |
1030 | REALVIEW_EB_A9MP || MACH_REALVIEW_PBX || ARCH_OMAP4) | 1043 | REALVIEW_EB_A9MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || ARCH_U8500) |
1031 | default y | 1044 | default y |
1032 | select HAVE_ARM_TWD if (ARCH_REALVIEW || ARCH_OMAP4) | 1045 | select HAVE_ARM_TWD if (ARCH_REALVIEW || ARCH_OMAP4 || ARCH_U8500) |
1033 | help | 1046 | help |
1034 | Enable support for local timers on SMP platforms, rather then the | 1047 | Enable support for local timers on SMP platforms, rather then the |
1035 | legacy IPI broadcast method. Local timers allows the system | 1048 | legacy IPI broadcast method. Local timers allows the system |
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index 1a6f70e52921..ff54c23d085e 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug | |||
@@ -83,6 +83,14 @@ config DEBUG_ICEDCC | |||
83 | It does include a timeout to ensure that the system does not | 83 | It does include a timeout to ensure that the system does not |
84 | totally freeze when there is nothing connected to read. | 84 | totally freeze when there is nothing connected to read. |
85 | 85 | ||
86 | config OC_ETM | ||
87 | bool "On-chip ETM and ETB" | ||
88 | select ARM_AMBA | ||
89 | help | ||
90 | Enables the on-chip embedded trace macrocell and embedded trace | ||
91 | buffer driver that will allow you to collect traces of the | ||
92 | kernel code. | ||
93 | |||
86 | config DEBUG_DC21285_PORT | 94 | config DEBUG_DC21285_PORT |
87 | bool "Kernel low-level debugging messages via footbridge serial port" | 95 | bool "Kernel low-level debugging messages via footbridge serial port" |
88 | depends on DEBUG_LL && FOOTBRIDGE | 96 | depends on DEBUG_LL && FOOTBRIDGE |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index a73caaf66763..7603eba7c0cd 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -166,6 +166,7 @@ machine-$(CONFIG_ARCH_SHARK) := shark | |||
166 | machine-$(CONFIG_ARCH_STMP378X) := stmp378x | 166 | machine-$(CONFIG_ARCH_STMP378X) := stmp378x |
167 | machine-$(CONFIG_ARCH_STMP37XX) := stmp37xx | 167 | machine-$(CONFIG_ARCH_STMP37XX) := stmp37xx |
168 | machine-$(CONFIG_ARCH_U300) := u300 | 168 | machine-$(CONFIG_ARCH_U300) := u300 |
169 | machine-$(CONFIG_ARCH_U8500) := ux500 | ||
169 | machine-$(CONFIG_ARCH_VERSATILE) := versatile | 170 | machine-$(CONFIG_ARCH_VERSATILE) := versatile |
170 | machine-$(CONFIG_ARCH_W90X900) := w90x900 | 171 | machine-$(CONFIG_ARCH_W90X900) := w90x900 |
171 | machine-$(CONFIG_FOOTBRIDGE) := footbridge | 172 | machine-$(CONFIG_FOOTBRIDGE) := footbridge |
@@ -176,6 +177,7 @@ machine-$(CONFIG_ARCH_MXC91231) := mxc91231 | |||
176 | plat-$(CONFIG_ARCH_MXC) := mxc | 177 | plat-$(CONFIG_ARCH_MXC) := mxc |
177 | plat-$(CONFIG_ARCH_OMAP) := omap | 178 | plat-$(CONFIG_ARCH_OMAP) := omap |
178 | plat-$(CONFIG_PLAT_IOP) := iop | 179 | plat-$(CONFIG_PLAT_IOP) := iop |
180 | plat-$(CONFIG_PLAT_NOMADIK) := nomadik | ||
179 | plat-$(CONFIG_PLAT_ORION) := orion | 181 | plat-$(CONFIG_PLAT_ORION) := orion |
180 | plat-$(CONFIG_PLAT_PXA) := pxa | 182 | plat-$(CONFIG_PLAT_PXA) := pxa |
181 | plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx s3c | 183 | plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx s3c |
diff --git a/arch/arm/configs/at91rm9200dk_defconfig b/arch/arm/configs/at91rm9200dk_defconfig index 238b218394e3..c97e1022ada1 100644 --- a/arch/arm/configs/at91rm9200dk_defconfig +++ b/arch/arm/configs/at91rm9200dk_defconfig | |||
@@ -120,6 +120,7 @@ CONFIG_ARCH_AT91RM9200DK=y | |||
120 | # CONFIG_MACH_CARMEVA is not set | 120 | # CONFIG_MACH_CARMEVA is not set |
121 | # CONFIG_MACH_KB9200 is not set | 121 | # CONFIG_MACH_KB9200 is not set |
122 | # CONFIG_MACH_ATEB9200 is not set | 122 | # CONFIG_MACH_ATEB9200 is not set |
123 | CONFIG_MACH_ECO920=y | ||
123 | 124 | ||
124 | # | 125 | # |
125 | # AT91RM9200 Feature Selections | 126 | # AT91RM9200 Feature Selections |
diff --git a/arch/arm/configs/w90p910_defconfig b/arch/arm/configs/nuc910_defconfig index 5245655a0ad3..5245655a0ad3 100644 --- a/arch/arm/configs/w90p910_defconfig +++ b/arch/arm/configs/nuc910_defconfig | |||
diff --git a/arch/arm/configs/nuc950_defconfig b/arch/arm/configs/nuc950_defconfig new file mode 100644 index 000000000000..df1de9b45ca4 --- /dev/null +++ b/arch/arm/configs/nuc950_defconfig | |||
@@ -0,0 +1,922 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.32-rc7 | ||
4 | # Tue Nov 17 12:31:33 2009 | ||
5 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
8 | CONFIG_GENERIC_GPIO=y | ||
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_STACKTRACE_SUPPORT=y | ||
13 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
14 | CONFIG_LOCKDEP_SUPPORT=y | ||
15 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
16 | CONFIG_HARDIRQS_SW_RESEND=y | ||
17 | CONFIG_GENERIC_IRQ_PROBE=y | ||
18 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
19 | CONFIG_GENERIC_HWEIGHT=y | ||
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
21 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
22 | CONFIG_VECTORS_BASE=0xffff0000 | ||
23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
24 | CONFIG_CONSTRUCTORS=y | ||
25 | |||
26 | # | ||
27 | # General setup | ||
28 | # | ||
29 | CONFIG_EXPERIMENTAL=y | ||
30 | CONFIG_BROKEN_ON_SMP=y | ||
31 | CONFIG_LOCK_KERNEL=y | ||
32 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
33 | CONFIG_LOCALVERSION="" | ||
34 | # CONFIG_LOCALVERSION_AUTO is not set | ||
35 | CONFIG_SWAP=y | ||
36 | CONFIG_SYSVIPC=y | ||
37 | CONFIG_SYSVIPC_SYSCTL=y | ||
38 | CONFIG_BSD_PROCESS_ACCT=y | ||
39 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
40 | |||
41 | # | ||
42 | # RCU Subsystem | ||
43 | # | ||
44 | CONFIG_TREE_RCU=y | ||
45 | # CONFIG_TREE_PREEMPT_RCU is not set | ||
46 | # CONFIG_RCU_TRACE is not set | ||
47 | CONFIG_RCU_FANOUT=32 | ||
48 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
49 | # CONFIG_TREE_RCU_TRACE is not set | ||
50 | # CONFIG_IKCONFIG is not set | ||
51 | CONFIG_LOG_BUF_SHIFT=17 | ||
52 | # CONFIG_GROUP_SCHED is not set | ||
53 | # CONFIG_CGROUPS is not set | ||
54 | CONFIG_SYSFS_DEPRECATED=y | ||
55 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
56 | CONFIG_RELAY=y | ||
57 | CONFIG_NAMESPACES=y | ||
58 | # CONFIG_UTS_NS is not set | ||
59 | # CONFIG_IPC_NS is not set | ||
60 | CONFIG_USER_NS=y | ||
61 | # CONFIG_PID_NS is not set | ||
62 | CONFIG_BLK_DEV_INITRD=y | ||
63 | CONFIG_INITRAMFS_SOURCE="" | ||
64 | CONFIG_RD_GZIP=y | ||
65 | CONFIG_RD_BZIP2=y | ||
66 | CONFIG_RD_LZMA=y | ||
67 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
68 | CONFIG_SYSCTL=y | ||
69 | CONFIG_ANON_INODES=y | ||
70 | # CONFIG_EMBEDDED is not set | ||
71 | CONFIG_UID16=y | ||
72 | CONFIG_SYSCTL_SYSCALL=y | ||
73 | CONFIG_KALLSYMS=y | ||
74 | CONFIG_KALLSYMS_EXTRA_PASS=y | ||
75 | CONFIG_HOTPLUG=y | ||
76 | CONFIG_PRINTK=y | ||
77 | CONFIG_BUG=y | ||
78 | CONFIG_ELF_CORE=y | ||
79 | CONFIG_BASE_FULL=y | ||
80 | CONFIG_FUTEX=y | ||
81 | CONFIG_EPOLL=y | ||
82 | CONFIG_SIGNALFD=y | ||
83 | CONFIG_TIMERFD=y | ||
84 | CONFIG_EVENTFD=y | ||
85 | CONFIG_SHMEM=y | ||
86 | CONFIG_AIO=y | ||
87 | |||
88 | # | ||
89 | # Kernel Performance Events And Counters | ||
90 | # | ||
91 | CONFIG_VM_EVENT_COUNTERS=y | ||
92 | CONFIG_COMPAT_BRK=y | ||
93 | CONFIG_SLAB=y | ||
94 | # CONFIG_SLUB is not set | ||
95 | # CONFIG_SLOB is not set | ||
96 | # CONFIG_PROFILING is not set | ||
97 | CONFIG_HAVE_OPROFILE=y | ||
98 | CONFIG_HAVE_KPROBES=y | ||
99 | CONFIG_HAVE_KRETPROBES=y | ||
100 | CONFIG_HAVE_CLK=y | ||
101 | |||
102 | # | ||
103 | # GCOV-based kernel profiling | ||
104 | # | ||
105 | # CONFIG_GCOV_KERNEL is not set | ||
106 | # CONFIG_SLOW_WORK is not set | ||
107 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
108 | CONFIG_SLABINFO=y | ||
109 | CONFIG_RT_MUTEXES=y | ||
110 | CONFIG_BASE_SMALL=0 | ||
111 | # CONFIG_MODULES is not set | ||
112 | CONFIG_BLOCK=y | ||
113 | CONFIG_LBDAF=y | ||
114 | CONFIG_BLK_DEV_BSG=y | ||
115 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
116 | |||
117 | # | ||
118 | # IO Schedulers | ||
119 | # | ||
120 | CONFIG_IOSCHED_NOOP=y | ||
121 | CONFIG_IOSCHED_AS=y | ||
122 | CONFIG_IOSCHED_DEADLINE=y | ||
123 | CONFIG_IOSCHED_CFQ=y | ||
124 | # CONFIG_DEFAULT_AS is not set | ||
125 | # CONFIG_DEFAULT_DEADLINE is not set | ||
126 | CONFIG_DEFAULT_CFQ=y | ||
127 | # CONFIG_DEFAULT_NOOP is not set | ||
128 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
129 | # CONFIG_FREEZER is not set | ||
130 | |||
131 | # | ||
132 | # System Type | ||
133 | # | ||
134 | CONFIG_MMU=y | ||
135 | # CONFIG_ARCH_AAEC2000 is not set | ||
136 | # CONFIG_ARCH_INTEGRATOR is not set | ||
137 | # CONFIG_ARCH_REALVIEW is not set | ||
138 | # CONFIG_ARCH_VERSATILE is not set | ||
139 | # CONFIG_ARCH_AT91 is not set | ||
140 | # CONFIG_ARCH_CLPS711X is not set | ||
141 | # CONFIG_ARCH_GEMINI is not set | ||
142 | # CONFIG_ARCH_EBSA110 is not set | ||
143 | # CONFIG_ARCH_EP93XX is not set | ||
144 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
145 | # CONFIG_ARCH_MXC is not set | ||
146 | # CONFIG_ARCH_STMP3XXX is not set | ||
147 | # CONFIG_ARCH_NETX is not set | ||
148 | # CONFIG_ARCH_H720X is not set | ||
149 | # CONFIG_ARCH_NOMADIK is not set | ||
150 | # CONFIG_ARCH_IOP13XX is not set | ||
151 | # CONFIG_ARCH_IOP32X is not set | ||
152 | # CONFIG_ARCH_IOP33X is not set | ||
153 | # CONFIG_ARCH_IXP23XX is not set | ||
154 | # CONFIG_ARCH_IXP2000 is not set | ||
155 | # CONFIG_ARCH_IXP4XX is not set | ||
156 | # CONFIG_ARCH_L7200 is not set | ||
157 | # CONFIG_ARCH_KIRKWOOD is not set | ||
158 | # CONFIG_ARCH_LOKI is not set | ||
159 | # CONFIG_ARCH_MV78XX0 is not set | ||
160 | # CONFIG_ARCH_ORION5X is not set | ||
161 | # CONFIG_ARCH_MMP is not set | ||
162 | # CONFIG_ARCH_KS8695 is not set | ||
163 | # CONFIG_ARCH_NS9XXX is not set | ||
164 | CONFIG_ARCH_W90X900=y | ||
165 | # CONFIG_ARCH_PNX4008 is not set | ||
166 | # CONFIG_ARCH_PXA is not set | ||
167 | # CONFIG_ARCH_MSM is not set | ||
168 | # CONFIG_ARCH_RPC is not set | ||
169 | # CONFIG_ARCH_SA1100 is not set | ||
170 | # CONFIG_ARCH_S3C2410 is not set | ||
171 | # CONFIG_ARCH_S3C64XX is not set | ||
172 | # CONFIG_ARCH_S5PC1XX is not set | ||
173 | # CONFIG_ARCH_SHARK is not set | ||
174 | # CONFIG_ARCH_LH7A40X is not set | ||
175 | # CONFIG_ARCH_U300 is not set | ||
176 | # CONFIG_ARCH_DAVINCI is not set | ||
177 | # CONFIG_ARCH_OMAP is not set | ||
178 | # CONFIG_ARCH_BCMRING is not set | ||
179 | CONFIG_CPU_NUC950=y | ||
180 | |||
181 | # | ||
182 | # W90P910 Machines | ||
183 | # | ||
184 | # CONFIG_MACH_W90P910EVB is not set | ||
185 | |||
186 | # | ||
187 | # NUC950 Machines | ||
188 | # | ||
189 | CONFIG_MACH_W90P950EVB=y | ||
190 | |||
191 | # | ||
192 | # NUC960 Machines | ||
193 | # | ||
194 | # CONFIG_MACH_W90N960EVB is not set | ||
195 | |||
196 | # | ||
197 | # NUC932 Machines | ||
198 | # | ||
199 | # CONFIG_MACH_NUC932EVB is not set | ||
200 | |||
201 | # | ||
202 | # Processor Type | ||
203 | # | ||
204 | CONFIG_CPU_32=y | ||
205 | CONFIG_CPU_ARM926T=y | ||
206 | CONFIG_CPU_32v5=y | ||
207 | CONFIG_CPU_ABRT_EV5TJ=y | ||
208 | CONFIG_CPU_PABRT_LEGACY=y | ||
209 | CONFIG_CPU_CACHE_VIVT=y | ||
210 | CONFIG_CPU_COPY_V4WB=y | ||
211 | CONFIG_CPU_TLB_V4WBI=y | ||
212 | CONFIG_CPU_CP15=y | ||
213 | CONFIG_CPU_CP15_MMU=y | ||
214 | |||
215 | # | ||
216 | # Processor Features | ||
217 | # | ||
218 | CONFIG_ARM_THUMB=y | ||
219 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
220 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
221 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | ||
222 | # CONFIG_CPU_CACHE_ROUND_ROBIN is not set | ||
223 | CONFIG_ARM_L1_CACHE_SHIFT=5 | ||
224 | CONFIG_COMMON_CLKDEV=y | ||
225 | |||
226 | # | ||
227 | # Bus support | ||
228 | # | ||
229 | # CONFIG_PCI_SYSCALL is not set | ||
230 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
231 | # CONFIG_PCCARD is not set | ||
232 | |||
233 | # | ||
234 | # Kernel Features | ||
235 | # | ||
236 | CONFIG_TICK_ONESHOT=y | ||
237 | CONFIG_NO_HZ=y | ||
238 | CONFIG_HIGH_RES_TIMERS=y | ||
239 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
240 | CONFIG_VMSPLIT_3G=y | ||
241 | # CONFIG_VMSPLIT_2G is not set | ||
242 | # CONFIG_VMSPLIT_1G is not set | ||
243 | CONFIG_PAGE_OFFSET=0xC0000000 | ||
244 | # CONFIG_PREEMPT_NONE is not set | ||
245 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
246 | CONFIG_PREEMPT=y | ||
247 | CONFIG_HZ=100 | ||
248 | CONFIG_AEABI=y | ||
249 | CONFIG_OABI_COMPAT=y | ||
250 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | ||
251 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | ||
252 | # CONFIG_HIGHMEM is not set | ||
253 | CONFIG_SELECT_MEMORY_MODEL=y | ||
254 | CONFIG_FLATMEM_MANUAL=y | ||
255 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
256 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
257 | CONFIG_FLATMEM=y | ||
258 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
259 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
260 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
261 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
262 | CONFIG_ZONE_DMA_FLAG=0 | ||
263 | CONFIG_VIRT_TO_BUS=y | ||
264 | CONFIG_HAVE_MLOCK=y | ||
265 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
266 | # CONFIG_KSM is not set | ||
267 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
268 | CONFIG_ALIGNMENT_TRAP=y | ||
269 | # CONFIG_UACCESS_WITH_MEMCPY is not set | ||
270 | |||
271 | # | ||
272 | # Boot options | ||
273 | # | ||
274 | CONFIG_ZBOOT_ROM_TEXT=0 | ||
275 | CONFIG_ZBOOT_ROM_BSS=0 | ||
276 | CONFIG_CMDLINE="root=/dev/ram0 console=ttyS0,115200n8 rdinit=/sbin/init mem=64M" | ||
277 | # CONFIG_XIP_KERNEL is not set | ||
278 | CONFIG_KEXEC=y | ||
279 | CONFIG_ATAGS_PROC=y | ||
280 | |||
281 | # | ||
282 | # CPU Power Management | ||
283 | # | ||
284 | # CONFIG_CPU_IDLE is not set | ||
285 | |||
286 | # | ||
287 | # Floating point emulation | ||
288 | # | ||
289 | |||
290 | # | ||
291 | # At least one emulation must be selected | ||
292 | # | ||
293 | CONFIG_FPE_NWFPE=y | ||
294 | # CONFIG_FPE_NWFPE_XP is not set | ||
295 | # CONFIG_FPE_FASTFPE is not set | ||
296 | # CONFIG_VFP is not set | ||
297 | |||
298 | # | ||
299 | # Userspace binary formats | ||
300 | # | ||
301 | CONFIG_BINFMT_ELF=y | ||
302 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
303 | CONFIG_HAVE_AOUT=y | ||
304 | CONFIG_BINFMT_AOUT=y | ||
305 | CONFIG_BINFMT_MISC=y | ||
306 | |||
307 | # | ||
308 | # Power management options | ||
309 | # | ||
310 | # CONFIG_PM is not set | ||
311 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
312 | # CONFIG_NET is not set | ||
313 | |||
314 | # | ||
315 | # Device Drivers | ||
316 | # | ||
317 | |||
318 | # | ||
319 | # Generic Driver Options | ||
320 | # | ||
321 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
322 | # CONFIG_DEVTMPFS is not set | ||
323 | CONFIG_STANDALONE=y | ||
324 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
325 | CONFIG_FW_LOADER=y | ||
326 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
327 | CONFIG_EXTRA_FIRMWARE="" | ||
328 | # CONFIG_SYS_HYPERVISOR is not set | ||
329 | CONFIG_MTD=y | ||
330 | # CONFIG_MTD_DEBUG is not set | ||
331 | CONFIG_MTD_CONCAT=y | ||
332 | CONFIG_MTD_PARTITIONS=y | ||
333 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
334 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
335 | # CONFIG_MTD_AFS_PARTS is not set | ||
336 | # CONFIG_MTD_AR7_PARTS is not set | ||
337 | |||
338 | # | ||
339 | # User Modules And Translation Layers | ||
340 | # | ||
341 | CONFIG_MTD_CHAR=y | ||
342 | CONFIG_MTD_BLKDEVS=y | ||
343 | CONFIG_MTD_BLOCK=y | ||
344 | # CONFIG_FTL is not set | ||
345 | # CONFIG_NFTL is not set | ||
346 | # CONFIG_INFTL is not set | ||
347 | # CONFIG_RFD_FTL is not set | ||
348 | # CONFIG_SSFDC is not set | ||
349 | # CONFIG_MTD_OOPS is not set | ||
350 | |||
351 | # | ||
352 | # RAM/ROM/Flash chip drivers | ||
353 | # | ||
354 | CONFIG_MTD_CFI=y | ||
355 | # CONFIG_MTD_JEDECPROBE is not set | ||
356 | CONFIG_MTD_GEN_PROBE=y | ||
357 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
358 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
359 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
360 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
361 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
362 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
363 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
364 | CONFIG_MTD_CFI_I1=y | ||
365 | CONFIG_MTD_CFI_I2=y | ||
366 | # CONFIG_MTD_CFI_I4 is not set | ||
367 | # CONFIG_MTD_CFI_I8 is not set | ||
368 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
369 | CONFIG_MTD_CFI_AMDSTD=y | ||
370 | # CONFIG_MTD_CFI_STAA is not set | ||
371 | CONFIG_MTD_CFI_UTIL=y | ||
372 | # CONFIG_MTD_RAM is not set | ||
373 | # CONFIG_MTD_ROM is not set | ||
374 | # CONFIG_MTD_ABSENT is not set | ||
375 | |||
376 | # | ||
377 | # Mapping drivers for chip access | ||
378 | # | ||
379 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
380 | CONFIG_MTD_PHYSMAP=y | ||
381 | # CONFIG_MTD_PHYSMAP_COMPAT is not set | ||
382 | # CONFIG_MTD_ARM_INTEGRATOR is not set | ||
383 | # CONFIG_MTD_PLATRAM is not set | ||
384 | |||
385 | # | ||
386 | # Self-contained MTD device drivers | ||
387 | # | ||
388 | # CONFIG_MTD_SLRAM is not set | ||
389 | # CONFIG_MTD_PHRAM is not set | ||
390 | # CONFIG_MTD_MTDRAM is not set | ||
391 | # CONFIG_MTD_BLOCK2MTD is not set | ||
392 | |||
393 | # | ||
394 | # Disk-On-Chip Device Drivers | ||
395 | # | ||
396 | # CONFIG_MTD_DOC2000 is not set | ||
397 | # CONFIG_MTD_DOC2001 is not set | ||
398 | # CONFIG_MTD_DOC2001PLUS is not set | ||
399 | # CONFIG_MTD_NAND is not set | ||
400 | # CONFIG_MTD_ONENAND is not set | ||
401 | |||
402 | # | ||
403 | # LPDDR flash memory drivers | ||
404 | # | ||
405 | # CONFIG_MTD_LPDDR is not set | ||
406 | |||
407 | # | ||
408 | # UBI - Unsorted block images | ||
409 | # | ||
410 | # CONFIG_MTD_UBI is not set | ||
411 | # CONFIG_PARPORT is not set | ||
412 | CONFIG_BLK_DEV=y | ||
413 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
414 | # CONFIG_BLK_DEV_LOOP is not set | ||
415 | # CONFIG_BLK_DEV_UB is not set | ||
416 | CONFIG_BLK_DEV_RAM=y | ||
417 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
418 | CONFIG_BLK_DEV_RAM_SIZE=16384 | ||
419 | # CONFIG_BLK_DEV_XIP is not set | ||
420 | # CONFIG_CDROM_PKTCDVD is not set | ||
421 | # CONFIG_MG_DISK is not set | ||
422 | # CONFIG_MISC_DEVICES is not set | ||
423 | CONFIG_HAVE_IDE=y | ||
424 | # CONFIG_IDE is not set | ||
425 | |||
426 | # | ||
427 | # SCSI device support | ||
428 | # | ||
429 | # CONFIG_RAID_ATTRS is not set | ||
430 | CONFIG_SCSI=y | ||
431 | CONFIG_SCSI_DMA=y | ||
432 | # CONFIG_SCSI_TGT is not set | ||
433 | # CONFIG_SCSI_NETLINK is not set | ||
434 | # CONFIG_SCSI_PROC_FS is not set | ||
435 | |||
436 | # | ||
437 | # SCSI support type (disk, tape, CD-ROM) | ||
438 | # | ||
439 | CONFIG_BLK_DEV_SD=y | ||
440 | # CONFIG_CHR_DEV_ST is not set | ||
441 | # CONFIG_CHR_DEV_OSST is not set | ||
442 | # CONFIG_BLK_DEV_SR is not set | ||
443 | # CONFIG_CHR_DEV_SG is not set | ||
444 | # CONFIG_CHR_DEV_SCH is not set | ||
445 | # CONFIG_SCSI_MULTI_LUN is not set | ||
446 | # CONFIG_SCSI_CONSTANTS is not set | ||
447 | # CONFIG_SCSI_LOGGING is not set | ||
448 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
449 | |||
450 | # | ||
451 | # SCSI Transports | ||
452 | # | ||
453 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
454 | # CONFIG_SCSI_FC_ATTRS is not set | ||
455 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
456 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
457 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
458 | # CONFIG_SCSI_LOWLEVEL is not set | ||
459 | # CONFIG_SCSI_DH is not set | ||
460 | # CONFIG_SCSI_OSD_INITIATOR is not set | ||
461 | # CONFIG_ATA is not set | ||
462 | # CONFIG_MD is not set | ||
463 | # CONFIG_PHONE is not set | ||
464 | |||
465 | # | ||
466 | # Input device support | ||
467 | # | ||
468 | CONFIG_INPUT=y | ||
469 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
470 | # CONFIG_INPUT_POLLDEV is not set | ||
471 | |||
472 | # | ||
473 | # Userland interfaces | ||
474 | # | ||
475 | CONFIG_INPUT_MOUSEDEV=y | ||
476 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
477 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
478 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
479 | # CONFIG_INPUT_JOYDEV is not set | ||
480 | # CONFIG_INPUT_EVDEV is not set | ||
481 | # CONFIG_INPUT_EVBUG is not set | ||
482 | |||
483 | # | ||
484 | # Input Device Drivers | ||
485 | # | ||
486 | # CONFIG_INPUT_KEYBOARD is not set | ||
487 | # CONFIG_INPUT_MOUSE is not set | ||
488 | # CONFIG_INPUT_JOYSTICK is not set | ||
489 | # CONFIG_INPUT_TABLET is not set | ||
490 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
491 | # CONFIG_INPUT_MISC is not set | ||
492 | |||
493 | # | ||
494 | # Hardware I/O ports | ||
495 | # | ||
496 | # CONFIG_SERIO is not set | ||
497 | # CONFIG_GAMEPORT is not set | ||
498 | |||
499 | # | ||
500 | # Character devices | ||
501 | # | ||
502 | CONFIG_VT=y | ||
503 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
504 | CONFIG_VT_CONSOLE=y | ||
505 | CONFIG_HW_CONSOLE=y | ||
506 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
507 | # CONFIG_DEVKMEM is not set | ||
508 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
509 | |||
510 | # | ||
511 | # Serial drivers | ||
512 | # | ||
513 | CONFIG_SERIAL_8250=y | ||
514 | CONFIG_SERIAL_8250_CONSOLE=y | ||
515 | CONFIG_SERIAL_8250_NR_UARTS=1 | ||
516 | CONFIG_SERIAL_8250_RUNTIME_UARTS=1 | ||
517 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
518 | |||
519 | # | ||
520 | # Non-8250 serial port support | ||
521 | # | ||
522 | CONFIG_SERIAL_CORE=y | ||
523 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
524 | CONFIG_UNIX98_PTYS=y | ||
525 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
526 | # CONFIG_LEGACY_PTYS is not set | ||
527 | # CONFIG_IPMI_HANDLER is not set | ||
528 | # CONFIG_HW_RANDOM is not set | ||
529 | # CONFIG_R3964 is not set | ||
530 | # CONFIG_RAW_DRIVER is not set | ||
531 | # CONFIG_TCG_TPM is not set | ||
532 | # CONFIG_I2C is not set | ||
533 | # CONFIG_SPI is not set | ||
534 | |||
535 | # | ||
536 | # PPS support | ||
537 | # | ||
538 | # CONFIG_PPS is not set | ||
539 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
540 | CONFIG_GPIOLIB=y | ||
541 | # CONFIG_GPIO_SYSFS is not set | ||
542 | |||
543 | # | ||
544 | # Memory mapped GPIO expanders: | ||
545 | # | ||
546 | |||
547 | # | ||
548 | # I2C GPIO expanders: | ||
549 | # | ||
550 | |||
551 | # | ||
552 | # PCI GPIO expanders: | ||
553 | # | ||
554 | |||
555 | # | ||
556 | # SPI GPIO expanders: | ||
557 | # | ||
558 | |||
559 | # | ||
560 | # AC97 GPIO expanders: | ||
561 | # | ||
562 | # CONFIG_W1 is not set | ||
563 | # CONFIG_POWER_SUPPLY is not set | ||
564 | # CONFIG_HWMON is not set | ||
565 | # CONFIG_THERMAL is not set | ||
566 | # CONFIG_WATCHDOG is not set | ||
567 | CONFIG_SSB_POSSIBLE=y | ||
568 | |||
569 | # | ||
570 | # Sonics Silicon Backplane | ||
571 | # | ||
572 | # CONFIG_SSB is not set | ||
573 | |||
574 | # | ||
575 | # Multifunction device drivers | ||
576 | # | ||
577 | # CONFIG_MFD_CORE is not set | ||
578 | # CONFIG_MFD_SM501 is not set | ||
579 | # CONFIG_MFD_ASIC3 is not set | ||
580 | # CONFIG_HTC_EGPIO is not set | ||
581 | # CONFIG_HTC_PASIC3 is not set | ||
582 | # CONFIG_MFD_TMIO is not set | ||
583 | # CONFIG_MFD_T7L66XB is not set | ||
584 | # CONFIG_MFD_TC6387XB is not set | ||
585 | # CONFIG_MFD_TC6393XB is not set | ||
586 | # CONFIG_REGULATOR is not set | ||
587 | # CONFIG_MEDIA_SUPPORT is not set | ||
588 | |||
589 | # | ||
590 | # Graphics support | ||
591 | # | ||
592 | # CONFIG_VGASTATE is not set | ||
593 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
594 | # CONFIG_FB is not set | ||
595 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
596 | |||
597 | # | ||
598 | # Display device support | ||
599 | # | ||
600 | # CONFIG_DISPLAY_SUPPORT is not set | ||
601 | |||
602 | # | ||
603 | # Console display driver support | ||
604 | # | ||
605 | # CONFIG_VGA_CONSOLE is not set | ||
606 | CONFIG_DUMMY_CONSOLE=y | ||
607 | # CONFIG_SOUND is not set | ||
608 | # CONFIG_HID_SUPPORT is not set | ||
609 | CONFIG_USB_SUPPORT=y | ||
610 | CONFIG_USB_ARCH_HAS_HCD=y | ||
611 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
612 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
613 | CONFIG_USB=y | ||
614 | # CONFIG_USB_DEBUG is not set | ||
615 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
616 | |||
617 | # | ||
618 | # Miscellaneous USB options | ||
619 | # | ||
620 | # CONFIG_USB_DEVICEFS is not set | ||
621 | CONFIG_USB_DEVICE_CLASS=y | ||
622 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
623 | # CONFIG_USB_OTG is not set | ||
624 | CONFIG_USB_MON=y | ||
625 | # CONFIG_USB_WUSB is not set | ||
626 | # CONFIG_USB_WUSB_CBAF is not set | ||
627 | |||
628 | # | ||
629 | # USB Host Controller Drivers | ||
630 | # | ||
631 | # CONFIG_USB_C67X00_HCD is not set | ||
632 | # CONFIG_USB_EHCI_HCD is not set | ||
633 | # CONFIG_USB_OXU210HP_HCD is not set | ||
634 | # CONFIG_USB_ISP116X_HCD is not set | ||
635 | # CONFIG_USB_ISP1760_HCD is not set | ||
636 | # CONFIG_USB_ISP1362_HCD is not set | ||
637 | # CONFIG_USB_OHCI_HCD is not set | ||
638 | # CONFIG_USB_SL811_HCD is not set | ||
639 | # CONFIG_USB_R8A66597_HCD is not set | ||
640 | # CONFIG_USB_HWA_HCD is not set | ||
641 | # CONFIG_USB_MUSB_HDRC is not set | ||
642 | |||
643 | # | ||
644 | # USB Device Class drivers | ||
645 | # | ||
646 | # CONFIG_USB_ACM is not set | ||
647 | # CONFIG_USB_PRINTER is not set | ||
648 | # CONFIG_USB_WDM is not set | ||
649 | # CONFIG_USB_TMC is not set | ||
650 | |||
651 | # | ||
652 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
653 | # | ||
654 | |||
655 | # | ||
656 | # also be needed; see USB_STORAGE Help for more info | ||
657 | # | ||
658 | CONFIG_USB_STORAGE=y | ||
659 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
660 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
661 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
662 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
663 | # CONFIG_USB_STORAGE_USBAT is not set | ||
664 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
665 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
666 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
667 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
668 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
669 | # CONFIG_USB_STORAGE_KARMA is not set | ||
670 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
671 | # CONFIG_USB_LIBUSUAL is not set | ||
672 | |||
673 | # | ||
674 | # USB Imaging devices | ||
675 | # | ||
676 | # CONFIG_USB_MDC800 is not set | ||
677 | # CONFIG_USB_MICROTEK is not set | ||
678 | |||
679 | # | ||
680 | # USB port drivers | ||
681 | # | ||
682 | # CONFIG_USB_SERIAL is not set | ||
683 | |||
684 | # | ||
685 | # USB Miscellaneous drivers | ||
686 | # | ||
687 | # CONFIG_USB_EMI62 is not set | ||
688 | # CONFIG_USB_EMI26 is not set | ||
689 | # CONFIG_USB_ADUTUX is not set | ||
690 | # CONFIG_USB_SEVSEG is not set | ||
691 | # CONFIG_USB_RIO500 is not set | ||
692 | # CONFIG_USB_LEGOTOWER is not set | ||
693 | # CONFIG_USB_LCD is not set | ||
694 | # CONFIG_USB_BERRY_CHARGE is not set | ||
695 | # CONFIG_USB_LED is not set | ||
696 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
697 | # CONFIG_USB_CYTHERM is not set | ||
698 | # CONFIG_USB_IDMOUSE is not set | ||
699 | # CONFIG_USB_FTDI_ELAN is not set | ||
700 | # CONFIG_USB_APPLEDISPLAY is not set | ||
701 | # CONFIG_USB_LD is not set | ||
702 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
703 | # CONFIG_USB_IOWARRIOR is not set | ||
704 | # CONFIG_USB_TEST is not set | ||
705 | # CONFIG_USB_ISIGHTFW is not set | ||
706 | # CONFIG_USB_VST is not set | ||
707 | # CONFIG_USB_GADGET is not set | ||
708 | |||
709 | # | ||
710 | # OTG and related infrastructure | ||
711 | # | ||
712 | # CONFIG_USB_GPIO_VBUS is not set | ||
713 | # CONFIG_NOP_USB_XCEIV is not set | ||
714 | # CONFIG_MMC is not set | ||
715 | # CONFIG_MEMSTICK is not set | ||
716 | # CONFIG_NEW_LEDS is not set | ||
717 | # CONFIG_ACCESSIBILITY is not set | ||
718 | CONFIG_RTC_LIB=y | ||
719 | # CONFIG_RTC_CLASS is not set | ||
720 | # CONFIG_DMADEVICES is not set | ||
721 | # CONFIG_AUXDISPLAY is not set | ||
722 | # CONFIG_UIO is not set | ||
723 | |||
724 | # | ||
725 | # TI VLYNQ | ||
726 | # | ||
727 | # CONFIG_STAGING is not set | ||
728 | |||
729 | # | ||
730 | # File systems | ||
731 | # | ||
732 | # CONFIG_EXT2_FS is not set | ||
733 | # CONFIG_EXT3_FS is not set | ||
734 | # CONFIG_EXT4_FS is not set | ||
735 | # CONFIG_REISERFS_FS is not set | ||
736 | # CONFIG_JFS_FS is not set | ||
737 | CONFIG_FS_POSIX_ACL=y | ||
738 | # CONFIG_XFS_FS is not set | ||
739 | # CONFIG_GFS2_FS is not set | ||
740 | # CONFIG_BTRFS_FS is not set | ||
741 | # CONFIG_NILFS2_FS is not set | ||
742 | CONFIG_FILE_LOCKING=y | ||
743 | CONFIG_FSNOTIFY=y | ||
744 | # CONFIG_DNOTIFY is not set | ||
745 | # CONFIG_INOTIFY is not set | ||
746 | CONFIG_INOTIFY_USER=y | ||
747 | # CONFIG_QUOTA is not set | ||
748 | # CONFIG_AUTOFS_FS is not set | ||
749 | # CONFIG_AUTOFS4_FS is not set | ||
750 | # CONFIG_FUSE_FS is not set | ||
751 | CONFIG_GENERIC_ACL=y | ||
752 | |||
753 | # | ||
754 | # Caches | ||
755 | # | ||
756 | # CONFIG_FSCACHE is not set | ||
757 | |||
758 | # | ||
759 | # CD-ROM/DVD Filesystems | ||
760 | # | ||
761 | # CONFIG_ISO9660_FS is not set | ||
762 | # CONFIG_UDF_FS is not set | ||
763 | |||
764 | # | ||
765 | # DOS/FAT/NT Filesystems | ||
766 | # | ||
767 | # CONFIG_MSDOS_FS is not set | ||
768 | # CONFIG_VFAT_FS is not set | ||
769 | # CONFIG_NTFS_FS is not set | ||
770 | |||
771 | # | ||
772 | # Pseudo filesystems | ||
773 | # | ||
774 | CONFIG_PROC_FS=y | ||
775 | CONFIG_PROC_SYSCTL=y | ||
776 | CONFIG_PROC_PAGE_MONITOR=y | ||
777 | CONFIG_SYSFS=y | ||
778 | CONFIG_TMPFS=y | ||
779 | CONFIG_TMPFS_POSIX_ACL=y | ||
780 | # CONFIG_HUGETLB_PAGE is not set | ||
781 | # CONFIG_CONFIGFS_FS is not set | ||
782 | CONFIG_MISC_FILESYSTEMS=y | ||
783 | # CONFIG_ADFS_FS is not set | ||
784 | # CONFIG_AFFS_FS is not set | ||
785 | # CONFIG_HFS_FS is not set | ||
786 | # CONFIG_HFSPLUS_FS is not set | ||
787 | # CONFIG_BEFS_FS is not set | ||
788 | # CONFIG_BFS_FS is not set | ||
789 | # CONFIG_EFS_FS is not set | ||
790 | # CONFIG_JFFS2_FS is not set | ||
791 | # CONFIG_CRAMFS is not set | ||
792 | # CONFIG_SQUASHFS is not set | ||
793 | # CONFIG_VXFS_FS is not set | ||
794 | # CONFIG_MINIX_FS is not set | ||
795 | # CONFIG_OMFS_FS is not set | ||
796 | # CONFIG_HPFS_FS is not set | ||
797 | # CONFIG_QNX4FS_FS is not set | ||
798 | CONFIG_ROMFS_FS=y | ||
799 | CONFIG_ROMFS_BACKED_BY_BLOCK=y | ||
800 | # CONFIG_ROMFS_BACKED_BY_MTD is not set | ||
801 | # CONFIG_ROMFS_BACKED_BY_BOTH is not set | ||
802 | CONFIG_ROMFS_ON_BLOCK=y | ||
803 | # CONFIG_SYSV_FS is not set | ||
804 | # CONFIG_UFS_FS is not set | ||
805 | |||
806 | # | ||
807 | # Partition Types | ||
808 | # | ||
809 | CONFIG_PARTITION_ADVANCED=y | ||
810 | # CONFIG_ACORN_PARTITION is not set | ||
811 | # CONFIG_OSF_PARTITION is not set | ||
812 | # CONFIG_AMIGA_PARTITION is not set | ||
813 | # CONFIG_ATARI_PARTITION is not set | ||
814 | # CONFIG_MAC_PARTITION is not set | ||
815 | CONFIG_MSDOS_PARTITION=y | ||
816 | # CONFIG_BSD_DISKLABEL is not set | ||
817 | # CONFIG_MINIX_SUBPARTITION is not set | ||
818 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
819 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
820 | # CONFIG_LDM_PARTITION is not set | ||
821 | # CONFIG_SGI_PARTITION is not set | ||
822 | # CONFIG_ULTRIX_PARTITION is not set | ||
823 | # CONFIG_SUN_PARTITION is not set | ||
824 | # CONFIG_KARMA_PARTITION is not set | ||
825 | # CONFIG_EFI_PARTITION is not set | ||
826 | # CONFIG_SYSV68_PARTITION is not set | ||
827 | CONFIG_NLS=y | ||
828 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
829 | CONFIG_NLS_CODEPAGE_437=y | ||
830 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
831 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
832 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
833 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
834 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
835 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
836 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
837 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
838 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
839 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
840 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
841 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
842 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
843 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
844 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
845 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
846 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
847 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
848 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
849 | # CONFIG_NLS_ISO8859_8 is not set | ||
850 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
851 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
852 | # CONFIG_NLS_ASCII is not set | ||
853 | CONFIG_NLS_ISO8859_1=y | ||
854 | # CONFIG_NLS_ISO8859_2 is not set | ||
855 | # CONFIG_NLS_ISO8859_3 is not set | ||
856 | # CONFIG_NLS_ISO8859_4 is not set | ||
857 | # CONFIG_NLS_ISO8859_5 is not set | ||
858 | # CONFIG_NLS_ISO8859_6 is not set | ||
859 | # CONFIG_NLS_ISO8859_7 is not set | ||
860 | # CONFIG_NLS_ISO8859_9 is not set | ||
861 | # CONFIG_NLS_ISO8859_13 is not set | ||
862 | # CONFIG_NLS_ISO8859_14 is not set | ||
863 | # CONFIG_NLS_ISO8859_15 is not set | ||
864 | # CONFIG_NLS_KOI8_R is not set | ||
865 | # CONFIG_NLS_KOI8_U is not set | ||
866 | # CONFIG_NLS_UTF8 is not set | ||
867 | |||
868 | # | ||
869 | # Kernel hacking | ||
870 | # | ||
871 | # CONFIG_PRINTK_TIME is not set | ||
872 | # CONFIG_ENABLE_WARN_DEPRECATED is not set | ||
873 | # CONFIG_ENABLE_MUST_CHECK is not set | ||
874 | CONFIG_FRAME_WARN=1024 | ||
875 | # CONFIG_MAGIC_SYSRQ is not set | ||
876 | # CONFIG_STRIP_ASM_SYMS is not set | ||
877 | # CONFIG_UNUSED_SYMBOLS is not set | ||
878 | CONFIG_DEBUG_FS=y | ||
879 | # CONFIG_HEADERS_CHECK is not set | ||
880 | # CONFIG_DEBUG_KERNEL is not set | ||
881 | CONFIG_DEBUG_BUGVERBOSE=y | ||
882 | CONFIG_DEBUG_MEMORY_INIT=y | ||
883 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
884 | # CONFIG_LATENCYTOP is not set | ||
885 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
886 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
887 | CONFIG_TRACING_SUPPORT=y | ||
888 | # CONFIG_FTRACE is not set | ||
889 | # CONFIG_DYNAMIC_DEBUG is not set | ||
890 | # CONFIG_SAMPLES is not set | ||
891 | CONFIG_HAVE_ARCH_KGDB=y | ||
892 | CONFIG_ARM_UNWIND=y | ||
893 | # CONFIG_DEBUG_USER is not set | ||
894 | |||
895 | # | ||
896 | # Security options | ||
897 | # | ||
898 | # CONFIG_KEYS is not set | ||
899 | # CONFIG_SECURITY is not set | ||
900 | # CONFIG_SECURITYFS is not set | ||
901 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
902 | # CONFIG_CRYPTO is not set | ||
903 | # CONFIG_BINARY_PRINTF is not set | ||
904 | |||
905 | # | ||
906 | # Library routines | ||
907 | # | ||
908 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
909 | # CONFIG_CRC_CCITT is not set | ||
910 | # CONFIG_CRC16 is not set | ||
911 | # CONFIG_CRC_T10DIF is not set | ||
912 | # CONFIG_CRC_ITU_T is not set | ||
913 | # CONFIG_CRC32 is not set | ||
914 | # CONFIG_CRC7 is not set | ||
915 | # CONFIG_LIBCRC32C is not set | ||
916 | CONFIG_ZLIB_INFLATE=y | ||
917 | CONFIG_DECOMPRESS_GZIP=y | ||
918 | CONFIG_DECOMPRESS_BZIP2=y | ||
919 | CONFIG_DECOMPRESS_LZMA=y | ||
920 | CONFIG_HAS_IOMEM=y | ||
921 | CONFIG_HAS_IOPORT=y | ||
922 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/arm/configs/nuc960_defconfig b/arch/arm/configs/nuc960_defconfig new file mode 100644 index 000000000000..4b2cd9eae9bc --- /dev/null +++ b/arch/arm/configs/nuc960_defconfig | |||
@@ -0,0 +1,922 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.32-rc7 | ||
4 | # Tue Nov 17 12:20:11 2009 | ||
5 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
8 | CONFIG_GENERIC_GPIO=y | ||
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_STACKTRACE_SUPPORT=y | ||
13 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
14 | CONFIG_LOCKDEP_SUPPORT=y | ||
15 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
16 | CONFIG_HARDIRQS_SW_RESEND=y | ||
17 | CONFIG_GENERIC_IRQ_PROBE=y | ||
18 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
19 | CONFIG_GENERIC_HWEIGHT=y | ||
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
21 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
22 | CONFIG_VECTORS_BASE=0xffff0000 | ||
23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
24 | CONFIG_CONSTRUCTORS=y | ||
25 | |||
26 | # | ||
27 | # General setup | ||
28 | # | ||
29 | CONFIG_EXPERIMENTAL=y | ||
30 | CONFIG_BROKEN_ON_SMP=y | ||
31 | CONFIG_LOCK_KERNEL=y | ||
32 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
33 | CONFIG_LOCALVERSION="" | ||
34 | # CONFIG_LOCALVERSION_AUTO is not set | ||
35 | CONFIG_SWAP=y | ||
36 | CONFIG_SYSVIPC=y | ||
37 | CONFIG_SYSVIPC_SYSCTL=y | ||
38 | CONFIG_BSD_PROCESS_ACCT=y | ||
39 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
40 | |||
41 | # | ||
42 | # RCU Subsystem | ||
43 | # | ||
44 | CONFIG_TREE_RCU=y | ||
45 | # CONFIG_TREE_PREEMPT_RCU is not set | ||
46 | # CONFIG_RCU_TRACE is not set | ||
47 | CONFIG_RCU_FANOUT=32 | ||
48 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
49 | # CONFIG_TREE_RCU_TRACE is not set | ||
50 | # CONFIG_IKCONFIG is not set | ||
51 | CONFIG_LOG_BUF_SHIFT=17 | ||
52 | # CONFIG_GROUP_SCHED is not set | ||
53 | # CONFIG_CGROUPS is not set | ||
54 | CONFIG_SYSFS_DEPRECATED=y | ||
55 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
56 | CONFIG_RELAY=y | ||
57 | CONFIG_NAMESPACES=y | ||
58 | # CONFIG_UTS_NS is not set | ||
59 | # CONFIG_IPC_NS is not set | ||
60 | CONFIG_USER_NS=y | ||
61 | # CONFIG_PID_NS is not set | ||
62 | CONFIG_BLK_DEV_INITRD=y | ||
63 | CONFIG_INITRAMFS_SOURCE="" | ||
64 | CONFIG_RD_GZIP=y | ||
65 | CONFIG_RD_BZIP2=y | ||
66 | CONFIG_RD_LZMA=y | ||
67 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
68 | CONFIG_SYSCTL=y | ||
69 | CONFIG_ANON_INODES=y | ||
70 | # CONFIG_EMBEDDED is not set | ||
71 | CONFIG_UID16=y | ||
72 | CONFIG_SYSCTL_SYSCALL=y | ||
73 | CONFIG_KALLSYMS=y | ||
74 | CONFIG_KALLSYMS_EXTRA_PASS=y | ||
75 | CONFIG_HOTPLUG=y | ||
76 | CONFIG_PRINTK=y | ||
77 | CONFIG_BUG=y | ||
78 | CONFIG_ELF_CORE=y | ||
79 | CONFIG_BASE_FULL=y | ||
80 | CONFIG_FUTEX=y | ||
81 | CONFIG_EPOLL=y | ||
82 | CONFIG_SIGNALFD=y | ||
83 | CONFIG_TIMERFD=y | ||
84 | CONFIG_EVENTFD=y | ||
85 | CONFIG_SHMEM=y | ||
86 | CONFIG_AIO=y | ||
87 | |||
88 | # | ||
89 | # Kernel Performance Events And Counters | ||
90 | # | ||
91 | CONFIG_VM_EVENT_COUNTERS=y | ||
92 | CONFIG_COMPAT_BRK=y | ||
93 | CONFIG_SLAB=y | ||
94 | # CONFIG_SLUB is not set | ||
95 | # CONFIG_SLOB is not set | ||
96 | # CONFIG_PROFILING is not set | ||
97 | CONFIG_HAVE_OPROFILE=y | ||
98 | CONFIG_HAVE_KPROBES=y | ||
99 | CONFIG_HAVE_KRETPROBES=y | ||
100 | CONFIG_HAVE_CLK=y | ||
101 | |||
102 | # | ||
103 | # GCOV-based kernel profiling | ||
104 | # | ||
105 | # CONFIG_GCOV_KERNEL is not set | ||
106 | # CONFIG_SLOW_WORK is not set | ||
107 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
108 | CONFIG_SLABINFO=y | ||
109 | CONFIG_RT_MUTEXES=y | ||
110 | CONFIG_BASE_SMALL=0 | ||
111 | # CONFIG_MODULES is not set | ||
112 | CONFIG_BLOCK=y | ||
113 | CONFIG_LBDAF=y | ||
114 | CONFIG_BLK_DEV_BSG=y | ||
115 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
116 | |||
117 | # | ||
118 | # IO Schedulers | ||
119 | # | ||
120 | CONFIG_IOSCHED_NOOP=y | ||
121 | CONFIG_IOSCHED_AS=y | ||
122 | CONFIG_IOSCHED_DEADLINE=y | ||
123 | CONFIG_IOSCHED_CFQ=y | ||
124 | # CONFIG_DEFAULT_AS is not set | ||
125 | # CONFIG_DEFAULT_DEADLINE is not set | ||
126 | CONFIG_DEFAULT_CFQ=y | ||
127 | # CONFIG_DEFAULT_NOOP is not set | ||
128 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
129 | # CONFIG_FREEZER is not set | ||
130 | |||
131 | # | ||
132 | # System Type | ||
133 | # | ||
134 | CONFIG_MMU=y | ||
135 | # CONFIG_ARCH_AAEC2000 is not set | ||
136 | # CONFIG_ARCH_INTEGRATOR is not set | ||
137 | # CONFIG_ARCH_REALVIEW is not set | ||
138 | # CONFIG_ARCH_VERSATILE is not set | ||
139 | # CONFIG_ARCH_AT91 is not set | ||
140 | # CONFIG_ARCH_CLPS711X is not set | ||
141 | # CONFIG_ARCH_GEMINI is not set | ||
142 | # CONFIG_ARCH_EBSA110 is not set | ||
143 | # CONFIG_ARCH_EP93XX is not set | ||
144 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
145 | # CONFIG_ARCH_MXC is not set | ||
146 | # CONFIG_ARCH_STMP3XXX is not set | ||
147 | # CONFIG_ARCH_NETX is not set | ||
148 | # CONFIG_ARCH_H720X is not set | ||
149 | # CONFIG_ARCH_NOMADIK is not set | ||
150 | # CONFIG_ARCH_IOP13XX is not set | ||
151 | # CONFIG_ARCH_IOP32X is not set | ||
152 | # CONFIG_ARCH_IOP33X is not set | ||
153 | # CONFIG_ARCH_IXP23XX is not set | ||
154 | # CONFIG_ARCH_IXP2000 is not set | ||
155 | # CONFIG_ARCH_IXP4XX is not set | ||
156 | # CONFIG_ARCH_L7200 is not set | ||
157 | # CONFIG_ARCH_KIRKWOOD is not set | ||
158 | # CONFIG_ARCH_LOKI is not set | ||
159 | # CONFIG_ARCH_MV78XX0 is not set | ||
160 | # CONFIG_ARCH_ORION5X is not set | ||
161 | # CONFIG_ARCH_MMP is not set | ||
162 | # CONFIG_ARCH_KS8695 is not set | ||
163 | # CONFIG_ARCH_NS9XXX is not set | ||
164 | CONFIG_ARCH_W90X900=y | ||
165 | # CONFIG_ARCH_PNX4008 is not set | ||
166 | # CONFIG_ARCH_PXA is not set | ||
167 | # CONFIG_ARCH_MSM is not set | ||
168 | # CONFIG_ARCH_RPC is not set | ||
169 | # CONFIG_ARCH_SA1100 is not set | ||
170 | # CONFIG_ARCH_S3C2410 is not set | ||
171 | # CONFIG_ARCH_S3C64XX is not set | ||
172 | # CONFIG_ARCH_S5PC1XX is not set | ||
173 | # CONFIG_ARCH_SHARK is not set | ||
174 | # CONFIG_ARCH_LH7A40X is not set | ||
175 | # CONFIG_ARCH_U300 is not set | ||
176 | # CONFIG_ARCH_DAVINCI is not set | ||
177 | # CONFIG_ARCH_OMAP is not set | ||
178 | # CONFIG_ARCH_BCMRING is not set | ||
179 | CONFIG_CPU_NUC960=y | ||
180 | |||
181 | # | ||
182 | # W90P910 Machines | ||
183 | # | ||
184 | # CONFIG_MACH_W90P910EVB is not set | ||
185 | |||
186 | # | ||
187 | # NUC950 Machines | ||
188 | # | ||
189 | # CONFIG_MACH_W90P950EVB is not set | ||
190 | |||
191 | # | ||
192 | # NUC960 Machines | ||
193 | # | ||
194 | CONFIG_MACH_W90N960EVB=y | ||
195 | |||
196 | # | ||
197 | # NUC932 Machines | ||
198 | # | ||
199 | # CONFIG_MACH_NUC932EVB is not set | ||
200 | |||
201 | # | ||
202 | # Processor Type | ||
203 | # | ||
204 | CONFIG_CPU_32=y | ||
205 | CONFIG_CPU_ARM926T=y | ||
206 | CONFIG_CPU_32v5=y | ||
207 | CONFIG_CPU_ABRT_EV5TJ=y | ||
208 | CONFIG_CPU_PABRT_LEGACY=y | ||
209 | CONFIG_CPU_CACHE_VIVT=y | ||
210 | CONFIG_CPU_COPY_V4WB=y | ||
211 | CONFIG_CPU_TLB_V4WBI=y | ||
212 | CONFIG_CPU_CP15=y | ||
213 | CONFIG_CPU_CP15_MMU=y | ||
214 | |||
215 | # | ||
216 | # Processor Features | ||
217 | # | ||
218 | CONFIG_ARM_THUMB=y | ||
219 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
220 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
221 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | ||
222 | # CONFIG_CPU_CACHE_ROUND_ROBIN is not set | ||
223 | CONFIG_ARM_L1_CACHE_SHIFT=5 | ||
224 | CONFIG_COMMON_CLKDEV=y | ||
225 | |||
226 | # | ||
227 | # Bus support | ||
228 | # | ||
229 | # CONFIG_PCI_SYSCALL is not set | ||
230 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
231 | # CONFIG_PCCARD is not set | ||
232 | |||
233 | # | ||
234 | # Kernel Features | ||
235 | # | ||
236 | CONFIG_TICK_ONESHOT=y | ||
237 | CONFIG_NO_HZ=y | ||
238 | CONFIG_HIGH_RES_TIMERS=y | ||
239 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
240 | CONFIG_VMSPLIT_3G=y | ||
241 | # CONFIG_VMSPLIT_2G is not set | ||
242 | # CONFIG_VMSPLIT_1G is not set | ||
243 | CONFIG_PAGE_OFFSET=0xC0000000 | ||
244 | # CONFIG_PREEMPT_NONE is not set | ||
245 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
246 | CONFIG_PREEMPT=y | ||
247 | CONFIG_HZ=100 | ||
248 | CONFIG_AEABI=y | ||
249 | CONFIG_OABI_COMPAT=y | ||
250 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | ||
251 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | ||
252 | # CONFIG_HIGHMEM is not set | ||
253 | CONFIG_SELECT_MEMORY_MODEL=y | ||
254 | CONFIG_FLATMEM_MANUAL=y | ||
255 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
256 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
257 | CONFIG_FLATMEM=y | ||
258 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
259 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
260 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
261 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
262 | CONFIG_ZONE_DMA_FLAG=0 | ||
263 | CONFIG_VIRT_TO_BUS=y | ||
264 | CONFIG_HAVE_MLOCK=y | ||
265 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
266 | # CONFIG_KSM is not set | ||
267 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
268 | CONFIG_ALIGNMENT_TRAP=y | ||
269 | # CONFIG_UACCESS_WITH_MEMCPY is not set | ||
270 | |||
271 | # | ||
272 | # Boot options | ||
273 | # | ||
274 | CONFIG_ZBOOT_ROM_TEXT=0 | ||
275 | CONFIG_ZBOOT_ROM_BSS=0 | ||
276 | CONFIG_CMDLINE="root=/dev/ram0 console=ttyS0,115200n8 rdinit=/sbin/init mem=64M" | ||
277 | # CONFIG_XIP_KERNEL is not set | ||
278 | CONFIG_KEXEC=y | ||
279 | CONFIG_ATAGS_PROC=y | ||
280 | |||
281 | # | ||
282 | # CPU Power Management | ||
283 | # | ||
284 | # CONFIG_CPU_IDLE is not set | ||
285 | |||
286 | # | ||
287 | # Floating point emulation | ||
288 | # | ||
289 | |||
290 | # | ||
291 | # At least one emulation must be selected | ||
292 | # | ||
293 | CONFIG_FPE_NWFPE=y | ||
294 | # CONFIG_FPE_NWFPE_XP is not set | ||
295 | # CONFIG_FPE_FASTFPE is not set | ||
296 | # CONFIG_VFP is not set | ||
297 | |||
298 | # | ||
299 | # Userspace binary formats | ||
300 | # | ||
301 | CONFIG_BINFMT_ELF=y | ||
302 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
303 | CONFIG_HAVE_AOUT=y | ||
304 | CONFIG_BINFMT_AOUT=y | ||
305 | CONFIG_BINFMT_MISC=y | ||
306 | |||
307 | # | ||
308 | # Power management options | ||
309 | # | ||
310 | # CONFIG_PM is not set | ||
311 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
312 | # CONFIG_NET is not set | ||
313 | |||
314 | # | ||
315 | # Device Drivers | ||
316 | # | ||
317 | |||
318 | # | ||
319 | # Generic Driver Options | ||
320 | # | ||
321 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
322 | # CONFIG_DEVTMPFS is not set | ||
323 | CONFIG_STANDALONE=y | ||
324 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
325 | CONFIG_FW_LOADER=y | ||
326 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
327 | CONFIG_EXTRA_FIRMWARE="" | ||
328 | # CONFIG_SYS_HYPERVISOR is not set | ||
329 | CONFIG_MTD=y | ||
330 | # CONFIG_MTD_DEBUG is not set | ||
331 | CONFIG_MTD_CONCAT=y | ||
332 | CONFIG_MTD_PARTITIONS=y | ||
333 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
334 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
335 | # CONFIG_MTD_AFS_PARTS is not set | ||
336 | # CONFIG_MTD_AR7_PARTS is not set | ||
337 | |||
338 | # | ||
339 | # User Modules And Translation Layers | ||
340 | # | ||
341 | CONFIG_MTD_CHAR=y | ||
342 | CONFIG_MTD_BLKDEVS=y | ||
343 | CONFIG_MTD_BLOCK=y | ||
344 | # CONFIG_FTL is not set | ||
345 | # CONFIG_NFTL is not set | ||
346 | # CONFIG_INFTL is not set | ||
347 | # CONFIG_RFD_FTL is not set | ||
348 | # CONFIG_SSFDC is not set | ||
349 | # CONFIG_MTD_OOPS is not set | ||
350 | |||
351 | # | ||
352 | # RAM/ROM/Flash chip drivers | ||
353 | # | ||
354 | CONFIG_MTD_CFI=y | ||
355 | # CONFIG_MTD_JEDECPROBE is not set | ||
356 | CONFIG_MTD_GEN_PROBE=y | ||
357 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
358 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
359 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
360 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
361 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
362 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
363 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
364 | CONFIG_MTD_CFI_I1=y | ||
365 | CONFIG_MTD_CFI_I2=y | ||
366 | # CONFIG_MTD_CFI_I4 is not set | ||
367 | # CONFIG_MTD_CFI_I8 is not set | ||
368 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
369 | CONFIG_MTD_CFI_AMDSTD=y | ||
370 | # CONFIG_MTD_CFI_STAA is not set | ||
371 | CONFIG_MTD_CFI_UTIL=y | ||
372 | # CONFIG_MTD_RAM is not set | ||
373 | # CONFIG_MTD_ROM is not set | ||
374 | # CONFIG_MTD_ABSENT is not set | ||
375 | |||
376 | # | ||
377 | # Mapping drivers for chip access | ||
378 | # | ||
379 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
380 | CONFIG_MTD_PHYSMAP=y | ||
381 | # CONFIG_MTD_PHYSMAP_COMPAT is not set | ||
382 | # CONFIG_MTD_ARM_INTEGRATOR is not set | ||
383 | # CONFIG_MTD_PLATRAM is not set | ||
384 | |||
385 | # | ||
386 | # Self-contained MTD device drivers | ||
387 | # | ||
388 | # CONFIG_MTD_SLRAM is not set | ||
389 | # CONFIG_MTD_PHRAM is not set | ||
390 | # CONFIG_MTD_MTDRAM is not set | ||
391 | # CONFIG_MTD_BLOCK2MTD is not set | ||
392 | |||
393 | # | ||
394 | # Disk-On-Chip Device Drivers | ||
395 | # | ||
396 | # CONFIG_MTD_DOC2000 is not set | ||
397 | # CONFIG_MTD_DOC2001 is not set | ||
398 | # CONFIG_MTD_DOC2001PLUS is not set | ||
399 | # CONFIG_MTD_NAND is not set | ||
400 | # CONFIG_MTD_ONENAND is not set | ||
401 | |||
402 | # | ||
403 | # LPDDR flash memory drivers | ||
404 | # | ||
405 | # CONFIG_MTD_LPDDR is not set | ||
406 | |||
407 | # | ||
408 | # UBI - Unsorted block images | ||
409 | # | ||
410 | # CONFIG_MTD_UBI is not set | ||
411 | # CONFIG_PARPORT is not set | ||
412 | CONFIG_BLK_DEV=y | ||
413 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
414 | # CONFIG_BLK_DEV_LOOP is not set | ||
415 | # CONFIG_BLK_DEV_UB is not set | ||
416 | CONFIG_BLK_DEV_RAM=y | ||
417 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
418 | CONFIG_BLK_DEV_RAM_SIZE=16384 | ||
419 | # CONFIG_BLK_DEV_XIP is not set | ||
420 | # CONFIG_CDROM_PKTCDVD is not set | ||
421 | # CONFIG_MG_DISK is not set | ||
422 | # CONFIG_MISC_DEVICES is not set | ||
423 | CONFIG_HAVE_IDE=y | ||
424 | # CONFIG_IDE is not set | ||
425 | |||
426 | # | ||
427 | # SCSI device support | ||
428 | # | ||
429 | # CONFIG_RAID_ATTRS is not set | ||
430 | CONFIG_SCSI=y | ||
431 | CONFIG_SCSI_DMA=y | ||
432 | # CONFIG_SCSI_TGT is not set | ||
433 | # CONFIG_SCSI_NETLINK is not set | ||
434 | # CONFIG_SCSI_PROC_FS is not set | ||
435 | |||
436 | # | ||
437 | # SCSI support type (disk, tape, CD-ROM) | ||
438 | # | ||
439 | CONFIG_BLK_DEV_SD=y | ||
440 | # CONFIG_CHR_DEV_ST is not set | ||
441 | # CONFIG_CHR_DEV_OSST is not set | ||
442 | # CONFIG_BLK_DEV_SR is not set | ||
443 | # CONFIG_CHR_DEV_SG is not set | ||
444 | # CONFIG_CHR_DEV_SCH is not set | ||
445 | # CONFIG_SCSI_MULTI_LUN is not set | ||
446 | # CONFIG_SCSI_CONSTANTS is not set | ||
447 | # CONFIG_SCSI_LOGGING is not set | ||
448 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
449 | |||
450 | # | ||
451 | # SCSI Transports | ||
452 | # | ||
453 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
454 | # CONFIG_SCSI_FC_ATTRS is not set | ||
455 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
456 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
457 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
458 | # CONFIG_SCSI_LOWLEVEL is not set | ||
459 | # CONFIG_SCSI_DH is not set | ||
460 | # CONFIG_SCSI_OSD_INITIATOR is not set | ||
461 | # CONFIG_ATA is not set | ||
462 | # CONFIG_MD is not set | ||
463 | # CONFIG_PHONE is not set | ||
464 | |||
465 | # | ||
466 | # Input device support | ||
467 | # | ||
468 | CONFIG_INPUT=y | ||
469 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
470 | # CONFIG_INPUT_POLLDEV is not set | ||
471 | |||
472 | # | ||
473 | # Userland interfaces | ||
474 | # | ||
475 | CONFIG_INPUT_MOUSEDEV=y | ||
476 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
477 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
478 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
479 | # CONFIG_INPUT_JOYDEV is not set | ||
480 | # CONFIG_INPUT_EVDEV is not set | ||
481 | # CONFIG_INPUT_EVBUG is not set | ||
482 | |||
483 | # | ||
484 | # Input Device Drivers | ||
485 | # | ||
486 | # CONFIG_INPUT_KEYBOARD is not set | ||
487 | # CONFIG_INPUT_MOUSE is not set | ||
488 | # CONFIG_INPUT_JOYSTICK is not set | ||
489 | # CONFIG_INPUT_TABLET is not set | ||
490 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
491 | # CONFIG_INPUT_MISC is not set | ||
492 | |||
493 | # | ||
494 | # Hardware I/O ports | ||
495 | # | ||
496 | # CONFIG_SERIO is not set | ||
497 | # CONFIG_GAMEPORT is not set | ||
498 | |||
499 | # | ||
500 | # Character devices | ||
501 | # | ||
502 | CONFIG_VT=y | ||
503 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
504 | CONFIG_VT_CONSOLE=y | ||
505 | CONFIG_HW_CONSOLE=y | ||
506 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
507 | # CONFIG_DEVKMEM is not set | ||
508 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
509 | |||
510 | # | ||
511 | # Serial drivers | ||
512 | # | ||
513 | CONFIG_SERIAL_8250=y | ||
514 | CONFIG_SERIAL_8250_CONSOLE=y | ||
515 | CONFIG_SERIAL_8250_NR_UARTS=1 | ||
516 | CONFIG_SERIAL_8250_RUNTIME_UARTS=1 | ||
517 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
518 | |||
519 | # | ||
520 | # Non-8250 serial port support | ||
521 | # | ||
522 | CONFIG_SERIAL_CORE=y | ||
523 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
524 | CONFIG_UNIX98_PTYS=y | ||
525 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
526 | # CONFIG_LEGACY_PTYS is not set | ||
527 | # CONFIG_IPMI_HANDLER is not set | ||
528 | # CONFIG_HW_RANDOM is not set | ||
529 | # CONFIG_R3964 is not set | ||
530 | # CONFIG_RAW_DRIVER is not set | ||
531 | # CONFIG_TCG_TPM is not set | ||
532 | # CONFIG_I2C is not set | ||
533 | # CONFIG_SPI is not set | ||
534 | |||
535 | # | ||
536 | # PPS support | ||
537 | # | ||
538 | # CONFIG_PPS is not set | ||
539 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
540 | CONFIG_GPIOLIB=y | ||
541 | # CONFIG_GPIO_SYSFS is not set | ||
542 | |||
543 | # | ||
544 | # Memory mapped GPIO expanders: | ||
545 | # | ||
546 | |||
547 | # | ||
548 | # I2C GPIO expanders: | ||
549 | # | ||
550 | |||
551 | # | ||
552 | # PCI GPIO expanders: | ||
553 | # | ||
554 | |||
555 | # | ||
556 | # SPI GPIO expanders: | ||
557 | # | ||
558 | |||
559 | # | ||
560 | # AC97 GPIO expanders: | ||
561 | # | ||
562 | # CONFIG_W1 is not set | ||
563 | # CONFIG_POWER_SUPPLY is not set | ||
564 | # CONFIG_HWMON is not set | ||
565 | # CONFIG_THERMAL is not set | ||
566 | # CONFIG_WATCHDOG is not set | ||
567 | CONFIG_SSB_POSSIBLE=y | ||
568 | |||
569 | # | ||
570 | # Sonics Silicon Backplane | ||
571 | # | ||
572 | # CONFIG_SSB is not set | ||
573 | |||
574 | # | ||
575 | # Multifunction device drivers | ||
576 | # | ||
577 | # CONFIG_MFD_CORE is not set | ||
578 | # CONFIG_MFD_SM501 is not set | ||
579 | # CONFIG_MFD_ASIC3 is not set | ||
580 | # CONFIG_HTC_EGPIO is not set | ||
581 | # CONFIG_HTC_PASIC3 is not set | ||
582 | # CONFIG_MFD_TMIO is not set | ||
583 | # CONFIG_MFD_T7L66XB is not set | ||
584 | # CONFIG_MFD_TC6387XB is not set | ||
585 | # CONFIG_MFD_TC6393XB is not set | ||
586 | # CONFIG_REGULATOR is not set | ||
587 | # CONFIG_MEDIA_SUPPORT is not set | ||
588 | |||
589 | # | ||
590 | # Graphics support | ||
591 | # | ||
592 | # CONFIG_VGASTATE is not set | ||
593 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
594 | # CONFIG_FB is not set | ||
595 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
596 | |||
597 | # | ||
598 | # Display device support | ||
599 | # | ||
600 | # CONFIG_DISPLAY_SUPPORT is not set | ||
601 | |||
602 | # | ||
603 | # Console display driver support | ||
604 | # | ||
605 | # CONFIG_VGA_CONSOLE is not set | ||
606 | CONFIG_DUMMY_CONSOLE=y | ||
607 | # CONFIG_SOUND is not set | ||
608 | # CONFIG_HID_SUPPORT is not set | ||
609 | CONFIG_USB_SUPPORT=y | ||
610 | CONFIG_USB_ARCH_HAS_HCD=y | ||
611 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
612 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
613 | CONFIG_USB=y | ||
614 | # CONFIG_USB_DEBUG is not set | ||
615 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
616 | |||
617 | # | ||
618 | # Miscellaneous USB options | ||
619 | # | ||
620 | # CONFIG_USB_DEVICEFS is not set | ||
621 | CONFIG_USB_DEVICE_CLASS=y | ||
622 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
623 | # CONFIG_USB_OTG is not set | ||
624 | CONFIG_USB_MON=y | ||
625 | # CONFIG_USB_WUSB is not set | ||
626 | # CONFIG_USB_WUSB_CBAF is not set | ||
627 | |||
628 | # | ||
629 | # USB Host Controller Drivers | ||
630 | # | ||
631 | # CONFIG_USB_C67X00_HCD is not set | ||
632 | # CONFIG_USB_EHCI_HCD is not set | ||
633 | # CONFIG_USB_OXU210HP_HCD is not set | ||
634 | # CONFIG_USB_ISP116X_HCD is not set | ||
635 | # CONFIG_USB_ISP1760_HCD is not set | ||
636 | # CONFIG_USB_ISP1362_HCD is not set | ||
637 | # CONFIG_USB_OHCI_HCD is not set | ||
638 | # CONFIG_USB_SL811_HCD is not set | ||
639 | # CONFIG_USB_R8A66597_HCD is not set | ||
640 | # CONFIG_USB_HWA_HCD is not set | ||
641 | # CONFIG_USB_MUSB_HDRC is not set | ||
642 | |||
643 | # | ||
644 | # USB Device Class drivers | ||
645 | # | ||
646 | # CONFIG_USB_ACM is not set | ||
647 | # CONFIG_USB_PRINTER is not set | ||
648 | # CONFIG_USB_WDM is not set | ||
649 | # CONFIG_USB_TMC is not set | ||
650 | |||
651 | # | ||
652 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
653 | # | ||
654 | |||
655 | # | ||
656 | # also be needed; see USB_STORAGE Help for more info | ||
657 | # | ||
658 | CONFIG_USB_STORAGE=y | ||
659 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
660 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
661 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
662 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
663 | # CONFIG_USB_STORAGE_USBAT is not set | ||
664 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
665 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
666 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
667 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
668 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
669 | # CONFIG_USB_STORAGE_KARMA is not set | ||
670 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
671 | # CONFIG_USB_LIBUSUAL is not set | ||
672 | |||
673 | # | ||
674 | # USB Imaging devices | ||
675 | # | ||
676 | # CONFIG_USB_MDC800 is not set | ||
677 | # CONFIG_USB_MICROTEK is not set | ||
678 | |||
679 | # | ||
680 | # USB port drivers | ||
681 | # | ||
682 | # CONFIG_USB_SERIAL is not set | ||
683 | |||
684 | # | ||
685 | # USB Miscellaneous drivers | ||
686 | # | ||
687 | # CONFIG_USB_EMI62 is not set | ||
688 | # CONFIG_USB_EMI26 is not set | ||
689 | # CONFIG_USB_ADUTUX is not set | ||
690 | # CONFIG_USB_SEVSEG is not set | ||
691 | # CONFIG_USB_RIO500 is not set | ||
692 | # CONFIG_USB_LEGOTOWER is not set | ||
693 | # CONFIG_USB_LCD is not set | ||
694 | # CONFIG_USB_BERRY_CHARGE is not set | ||
695 | # CONFIG_USB_LED is not set | ||
696 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
697 | # CONFIG_USB_CYTHERM is not set | ||
698 | # CONFIG_USB_IDMOUSE is not set | ||
699 | # CONFIG_USB_FTDI_ELAN is not set | ||
700 | # CONFIG_USB_APPLEDISPLAY is not set | ||
701 | # CONFIG_USB_LD is not set | ||
702 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
703 | # CONFIG_USB_IOWARRIOR is not set | ||
704 | # CONFIG_USB_TEST is not set | ||
705 | # CONFIG_USB_ISIGHTFW is not set | ||
706 | # CONFIG_USB_VST is not set | ||
707 | # CONFIG_USB_GADGET is not set | ||
708 | |||
709 | # | ||
710 | # OTG and related infrastructure | ||
711 | # | ||
712 | # CONFIG_USB_GPIO_VBUS is not set | ||
713 | # CONFIG_NOP_USB_XCEIV is not set | ||
714 | # CONFIG_MMC is not set | ||
715 | # CONFIG_MEMSTICK is not set | ||
716 | # CONFIG_NEW_LEDS is not set | ||
717 | # CONFIG_ACCESSIBILITY is not set | ||
718 | CONFIG_RTC_LIB=y | ||
719 | # CONFIG_RTC_CLASS is not set | ||
720 | # CONFIG_DMADEVICES is not set | ||
721 | # CONFIG_AUXDISPLAY is not set | ||
722 | # CONFIG_UIO is not set | ||
723 | |||
724 | # | ||
725 | # TI VLYNQ | ||
726 | # | ||
727 | # CONFIG_STAGING is not set | ||
728 | |||
729 | # | ||
730 | # File systems | ||
731 | # | ||
732 | # CONFIG_EXT2_FS is not set | ||
733 | # CONFIG_EXT3_FS is not set | ||
734 | # CONFIG_EXT4_FS is not set | ||
735 | # CONFIG_REISERFS_FS is not set | ||
736 | # CONFIG_JFS_FS is not set | ||
737 | CONFIG_FS_POSIX_ACL=y | ||
738 | # CONFIG_XFS_FS is not set | ||
739 | # CONFIG_GFS2_FS is not set | ||
740 | # CONFIG_BTRFS_FS is not set | ||
741 | # CONFIG_NILFS2_FS is not set | ||
742 | CONFIG_FILE_LOCKING=y | ||
743 | CONFIG_FSNOTIFY=y | ||
744 | # CONFIG_DNOTIFY is not set | ||
745 | # CONFIG_INOTIFY is not set | ||
746 | CONFIG_INOTIFY_USER=y | ||
747 | # CONFIG_QUOTA is not set | ||
748 | # CONFIG_AUTOFS_FS is not set | ||
749 | # CONFIG_AUTOFS4_FS is not set | ||
750 | # CONFIG_FUSE_FS is not set | ||
751 | CONFIG_GENERIC_ACL=y | ||
752 | |||
753 | # | ||
754 | # Caches | ||
755 | # | ||
756 | # CONFIG_FSCACHE is not set | ||
757 | |||
758 | # | ||
759 | # CD-ROM/DVD Filesystems | ||
760 | # | ||
761 | # CONFIG_ISO9660_FS is not set | ||
762 | # CONFIG_UDF_FS is not set | ||
763 | |||
764 | # | ||
765 | # DOS/FAT/NT Filesystems | ||
766 | # | ||
767 | # CONFIG_MSDOS_FS is not set | ||
768 | # CONFIG_VFAT_FS is not set | ||
769 | # CONFIG_NTFS_FS is not set | ||
770 | |||
771 | # | ||
772 | # Pseudo filesystems | ||
773 | # | ||
774 | CONFIG_PROC_FS=y | ||
775 | CONFIG_PROC_SYSCTL=y | ||
776 | CONFIG_PROC_PAGE_MONITOR=y | ||
777 | CONFIG_SYSFS=y | ||
778 | CONFIG_TMPFS=y | ||
779 | CONFIG_TMPFS_POSIX_ACL=y | ||
780 | # CONFIG_HUGETLB_PAGE is not set | ||
781 | # CONFIG_CONFIGFS_FS is not set | ||
782 | CONFIG_MISC_FILESYSTEMS=y | ||
783 | # CONFIG_ADFS_FS is not set | ||
784 | # CONFIG_AFFS_FS is not set | ||
785 | # CONFIG_HFS_FS is not set | ||
786 | # CONFIG_HFSPLUS_FS is not set | ||
787 | # CONFIG_BEFS_FS is not set | ||
788 | # CONFIG_BFS_FS is not set | ||
789 | # CONFIG_EFS_FS is not set | ||
790 | # CONFIG_JFFS2_FS is not set | ||
791 | # CONFIG_CRAMFS is not set | ||
792 | # CONFIG_SQUASHFS is not set | ||
793 | # CONFIG_VXFS_FS is not set | ||
794 | # CONFIG_MINIX_FS is not set | ||
795 | # CONFIG_OMFS_FS is not set | ||
796 | # CONFIG_HPFS_FS is not set | ||
797 | # CONFIG_QNX4FS_FS is not set | ||
798 | CONFIG_ROMFS_FS=y | ||
799 | CONFIG_ROMFS_BACKED_BY_BLOCK=y | ||
800 | # CONFIG_ROMFS_BACKED_BY_MTD is not set | ||
801 | # CONFIG_ROMFS_BACKED_BY_BOTH is not set | ||
802 | CONFIG_ROMFS_ON_BLOCK=y | ||
803 | # CONFIG_SYSV_FS is not set | ||
804 | # CONFIG_UFS_FS is not set | ||
805 | |||
806 | # | ||
807 | # Partition Types | ||
808 | # | ||
809 | CONFIG_PARTITION_ADVANCED=y | ||
810 | # CONFIG_ACORN_PARTITION is not set | ||
811 | # CONFIG_OSF_PARTITION is not set | ||
812 | # CONFIG_AMIGA_PARTITION is not set | ||
813 | # CONFIG_ATARI_PARTITION is not set | ||
814 | # CONFIG_MAC_PARTITION is not set | ||
815 | CONFIG_MSDOS_PARTITION=y | ||
816 | # CONFIG_BSD_DISKLABEL is not set | ||
817 | # CONFIG_MINIX_SUBPARTITION is not set | ||
818 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
819 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
820 | # CONFIG_LDM_PARTITION is not set | ||
821 | # CONFIG_SGI_PARTITION is not set | ||
822 | # CONFIG_ULTRIX_PARTITION is not set | ||
823 | # CONFIG_SUN_PARTITION is not set | ||
824 | # CONFIG_KARMA_PARTITION is not set | ||
825 | # CONFIG_EFI_PARTITION is not set | ||
826 | # CONFIG_SYSV68_PARTITION is not set | ||
827 | CONFIG_NLS=y | ||
828 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
829 | CONFIG_NLS_CODEPAGE_437=y | ||
830 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
831 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
832 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
833 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
834 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
835 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
836 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
837 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
838 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
839 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
840 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
841 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
842 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
843 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
844 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
845 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
846 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
847 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
848 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
849 | # CONFIG_NLS_ISO8859_8 is not set | ||
850 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
851 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
852 | # CONFIG_NLS_ASCII is not set | ||
853 | CONFIG_NLS_ISO8859_1=y | ||
854 | # CONFIG_NLS_ISO8859_2 is not set | ||
855 | # CONFIG_NLS_ISO8859_3 is not set | ||
856 | # CONFIG_NLS_ISO8859_4 is not set | ||
857 | # CONFIG_NLS_ISO8859_5 is not set | ||
858 | # CONFIG_NLS_ISO8859_6 is not set | ||
859 | # CONFIG_NLS_ISO8859_7 is not set | ||
860 | # CONFIG_NLS_ISO8859_9 is not set | ||
861 | # CONFIG_NLS_ISO8859_13 is not set | ||
862 | # CONFIG_NLS_ISO8859_14 is not set | ||
863 | # CONFIG_NLS_ISO8859_15 is not set | ||
864 | # CONFIG_NLS_KOI8_R is not set | ||
865 | # CONFIG_NLS_KOI8_U is not set | ||
866 | # CONFIG_NLS_UTF8 is not set | ||
867 | |||
868 | # | ||
869 | # Kernel hacking | ||
870 | # | ||
871 | # CONFIG_PRINTK_TIME is not set | ||
872 | # CONFIG_ENABLE_WARN_DEPRECATED is not set | ||
873 | # CONFIG_ENABLE_MUST_CHECK is not set | ||
874 | CONFIG_FRAME_WARN=1024 | ||
875 | # CONFIG_MAGIC_SYSRQ is not set | ||
876 | # CONFIG_STRIP_ASM_SYMS is not set | ||
877 | # CONFIG_UNUSED_SYMBOLS is not set | ||
878 | CONFIG_DEBUG_FS=y | ||
879 | # CONFIG_HEADERS_CHECK is not set | ||
880 | # CONFIG_DEBUG_KERNEL is not set | ||
881 | CONFIG_DEBUG_BUGVERBOSE=y | ||
882 | CONFIG_DEBUG_MEMORY_INIT=y | ||
883 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
884 | # CONFIG_LATENCYTOP is not set | ||
885 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
886 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
887 | CONFIG_TRACING_SUPPORT=y | ||
888 | # CONFIG_FTRACE is not set | ||
889 | # CONFIG_DYNAMIC_DEBUG is not set | ||
890 | # CONFIG_SAMPLES is not set | ||
891 | CONFIG_HAVE_ARCH_KGDB=y | ||
892 | CONFIG_ARM_UNWIND=y | ||
893 | # CONFIG_DEBUG_USER is not set | ||
894 | |||
895 | # | ||
896 | # Security options | ||
897 | # | ||
898 | # CONFIG_KEYS is not set | ||
899 | # CONFIG_SECURITY is not set | ||
900 | # CONFIG_SECURITYFS is not set | ||
901 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
902 | # CONFIG_CRYPTO is not set | ||
903 | # CONFIG_BINARY_PRINTF is not set | ||
904 | |||
905 | # | ||
906 | # Library routines | ||
907 | # | ||
908 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
909 | # CONFIG_CRC_CCITT is not set | ||
910 | # CONFIG_CRC16 is not set | ||
911 | # CONFIG_CRC_T10DIF is not set | ||
912 | # CONFIG_CRC_ITU_T is not set | ||
913 | # CONFIG_CRC32 is not set | ||
914 | # CONFIG_CRC7 is not set | ||
915 | # CONFIG_LIBCRC32C is not set | ||
916 | CONFIG_ZLIB_INFLATE=y | ||
917 | CONFIG_DECOMPRESS_GZIP=y | ||
918 | CONFIG_DECOMPRESS_BZIP2=y | ||
919 | CONFIG_DECOMPRESS_LZMA=y | ||
920 | CONFIG_HAS_IOMEM=y | ||
921 | CONFIG_HAS_IOPORT=y | ||
922 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/arm/configs/u8500_defconfig b/arch/arm/configs/u8500_defconfig new file mode 100644 index 000000000000..15fde22ce3f3 --- /dev/null +++ b/arch/arm/configs/u8500_defconfig | |||
@@ -0,0 +1,680 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.32-rc8 | ||
4 | # Mon Nov 30 11:11:29 2009 | ||
5 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
8 | CONFIG_GENERIC_TIME=y | ||
9 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
10 | CONFIG_GENERIC_HARDIRQS=y | ||
11 | CONFIG_STACKTRACE_SUPPORT=y | ||
12 | CONFIG_LOCKDEP_SUPPORT=y | ||
13 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
14 | CONFIG_HARDIRQS_SW_RESEND=y | ||
15 | CONFIG_GENERIC_IRQ_PROBE=y | ||
16 | CONFIG_GENERIC_LOCKBREAK=y | ||
17 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
18 | CONFIG_GENERIC_HWEIGHT=y | ||
19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
20 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
21 | CONFIG_VECTORS_BASE=0xffff0000 | ||
22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
23 | CONFIG_CONSTRUCTORS=y | ||
24 | |||
25 | # | ||
26 | # General setup | ||
27 | # | ||
28 | CONFIG_EXPERIMENTAL=y | ||
29 | CONFIG_LOCK_KERNEL=y | ||
30 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
31 | CONFIG_LOCALVERSION="" | ||
32 | CONFIG_LOCALVERSION_AUTO=y | ||
33 | # CONFIG_SWAP is not set | ||
34 | CONFIG_SYSVIPC=y | ||
35 | CONFIG_SYSVIPC_SYSCTL=y | ||
36 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
37 | |||
38 | # | ||
39 | # RCU Subsystem | ||
40 | # | ||
41 | CONFIG_TREE_RCU=y | ||
42 | # CONFIG_TREE_PREEMPT_RCU is not set | ||
43 | # CONFIG_RCU_TRACE is not set | ||
44 | CONFIG_RCU_FANOUT=32 | ||
45 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
46 | # CONFIG_TREE_RCU_TRACE is not set | ||
47 | # CONFIG_IKCONFIG is not set | ||
48 | CONFIG_LOG_BUF_SHIFT=17 | ||
49 | CONFIG_GROUP_SCHED=y | ||
50 | CONFIG_FAIR_GROUP_SCHED=y | ||
51 | CONFIG_RT_GROUP_SCHED=y | ||
52 | CONFIG_USER_SCHED=y | ||
53 | # CONFIG_CGROUP_SCHED is not set | ||
54 | # CONFIG_CGROUPS is not set | ||
55 | CONFIG_SYSFS_DEPRECATED=y | ||
56 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
57 | # CONFIG_RELAY is not set | ||
58 | CONFIG_NAMESPACES=y | ||
59 | # CONFIG_UTS_NS is not set | ||
60 | # CONFIG_IPC_NS is not set | ||
61 | # CONFIG_USER_NS is not set | ||
62 | # CONFIG_PID_NS is not set | ||
63 | CONFIG_BLK_DEV_INITRD=y | ||
64 | CONFIG_INITRAMFS_SOURCE="" | ||
65 | CONFIG_RD_GZIP=y | ||
66 | CONFIG_RD_BZIP2=y | ||
67 | CONFIG_RD_LZMA=y | ||
68 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
69 | CONFIG_SYSCTL=y | ||
70 | CONFIG_ANON_INODES=y | ||
71 | # CONFIG_EMBEDDED is not set | ||
72 | CONFIG_UID16=y | ||
73 | CONFIG_SYSCTL_SYSCALL=y | ||
74 | CONFIG_KALLSYMS=y | ||
75 | CONFIG_KALLSYMS_ALL=y | ||
76 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
77 | CONFIG_HOTPLUG=y | ||
78 | CONFIG_PRINTK=y | ||
79 | CONFIG_BUG=y | ||
80 | CONFIG_ELF_CORE=y | ||
81 | CONFIG_BASE_FULL=y | ||
82 | CONFIG_FUTEX=y | ||
83 | CONFIG_EPOLL=y | ||
84 | CONFIG_SIGNALFD=y | ||
85 | CONFIG_TIMERFD=y | ||
86 | CONFIG_EVENTFD=y | ||
87 | CONFIG_SHMEM=y | ||
88 | CONFIG_AIO=y | ||
89 | |||
90 | # | ||
91 | # Kernel Performance Events And Counters | ||
92 | # | ||
93 | CONFIG_VM_EVENT_COUNTERS=y | ||
94 | CONFIG_SLUB_DEBUG=y | ||
95 | CONFIG_COMPAT_BRK=y | ||
96 | # CONFIG_SLAB is not set | ||
97 | CONFIG_SLUB=y | ||
98 | # CONFIG_SLOB is not set | ||
99 | # CONFIG_PROFILING is not set | ||
100 | CONFIG_HAVE_OPROFILE=y | ||
101 | # CONFIG_KPROBES is not set | ||
102 | CONFIG_HAVE_KPROBES=y | ||
103 | CONFIG_HAVE_KRETPROBES=y | ||
104 | CONFIG_USE_GENERIC_SMP_HELPERS=y | ||
105 | |||
106 | # | ||
107 | # GCOV-based kernel profiling | ||
108 | # | ||
109 | # CONFIG_SLOW_WORK is not set | ||
110 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
111 | CONFIG_SLABINFO=y | ||
112 | CONFIG_RT_MUTEXES=y | ||
113 | CONFIG_BASE_SMALL=0 | ||
114 | CONFIG_MODULES=y | ||
115 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
116 | CONFIG_MODULE_UNLOAD=y | ||
117 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
118 | # CONFIG_MODVERSIONS is not set | ||
119 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
120 | CONFIG_STOP_MACHINE=y | ||
121 | CONFIG_BLOCK=y | ||
122 | # CONFIG_LBDAF is not set | ||
123 | # CONFIG_BLK_DEV_BSG is not set | ||
124 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
125 | |||
126 | # | ||
127 | # IO Schedulers | ||
128 | # | ||
129 | CONFIG_IOSCHED_NOOP=y | ||
130 | CONFIG_IOSCHED_AS=y | ||
131 | CONFIG_IOSCHED_DEADLINE=y | ||
132 | CONFIG_IOSCHED_CFQ=y | ||
133 | # CONFIG_DEFAULT_AS is not set | ||
134 | # CONFIG_DEFAULT_DEADLINE is not set | ||
135 | CONFIG_DEFAULT_CFQ=y | ||
136 | # CONFIG_DEFAULT_NOOP is not set | ||
137 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
138 | # CONFIG_FREEZER is not set | ||
139 | |||
140 | # | ||
141 | # System Type | ||
142 | # | ||
143 | CONFIG_MMU=y | ||
144 | # CONFIG_ARCH_AAEC2000 is not set | ||
145 | # CONFIG_ARCH_INTEGRATOR is not set | ||
146 | # CONFIG_ARCH_REALVIEW is not set | ||
147 | # CONFIG_ARCH_VERSATILE is not set | ||
148 | # CONFIG_ARCH_AT91 is not set | ||
149 | # CONFIG_ARCH_CLPS711X is not set | ||
150 | # CONFIG_ARCH_GEMINI is not set | ||
151 | # CONFIG_ARCH_EBSA110 is not set | ||
152 | # CONFIG_ARCH_EP93XX is not set | ||
153 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
154 | # CONFIG_ARCH_MXC is not set | ||
155 | # CONFIG_ARCH_STMP3XXX is not set | ||
156 | # CONFIG_ARCH_NETX is not set | ||
157 | # CONFIG_ARCH_H720X is not set | ||
158 | # CONFIG_ARCH_NOMADIK is not set | ||
159 | # CONFIG_ARCH_IOP13XX is not set | ||
160 | # CONFIG_ARCH_IOP32X is not set | ||
161 | # CONFIG_ARCH_IOP33X is not set | ||
162 | # CONFIG_ARCH_IXP23XX is not set | ||
163 | # CONFIG_ARCH_IXP2000 is not set | ||
164 | # CONFIG_ARCH_IXP4XX is not set | ||
165 | # CONFIG_ARCH_L7200 is not set | ||
166 | # CONFIG_ARCH_KIRKWOOD is not set | ||
167 | # CONFIG_ARCH_LOKI is not set | ||
168 | # CONFIG_ARCH_MV78XX0 is not set | ||
169 | # CONFIG_ARCH_ORION5X is not set | ||
170 | # CONFIG_ARCH_MMP is not set | ||
171 | # CONFIG_ARCH_KS8695 is not set | ||
172 | # CONFIG_ARCH_NS9XXX is not set | ||
173 | # CONFIG_ARCH_W90X900 is not set | ||
174 | # CONFIG_ARCH_PNX4008 is not set | ||
175 | # CONFIG_ARCH_PXA is not set | ||
176 | # CONFIG_ARCH_MSM is not set | ||
177 | # CONFIG_ARCH_RPC is not set | ||
178 | # CONFIG_ARCH_SA1100 is not set | ||
179 | # CONFIG_ARCH_S3C2410 is not set | ||
180 | # CONFIG_ARCH_S3C64XX is not set | ||
181 | # CONFIG_ARCH_S5PC1XX is not set | ||
182 | # CONFIG_ARCH_SHARK is not set | ||
183 | # CONFIG_ARCH_LH7A40X is not set | ||
184 | # CONFIG_ARCH_U300 is not set | ||
185 | # CONFIG_ARCH_DAVINCI is not set | ||
186 | # CONFIG_ARCH_OMAP is not set | ||
187 | # CONFIG_ARCH_BCMRING is not set | ||
188 | CONFIG_ARCH_U8500=y | ||
189 | CONFIG_PLAT_NOMADIK=y | ||
190 | CONFIG_HAS_MTU=y | ||
191 | |||
192 | # | ||
193 | # ST-Ericsson platform type | ||
194 | # | ||
195 | |||
196 | # | ||
197 | # ST-Ericsson Multicore Mobile Platforms | ||
198 | # | ||
199 | CONFIG_MACH_U8500_MOP=y | ||
200 | |||
201 | # | ||
202 | # Processor Type | ||
203 | # | ||
204 | CONFIG_CPU_32=y | ||
205 | CONFIG_CPU_32v6K=y | ||
206 | CONFIG_CPU_V7=y | ||
207 | CONFIG_CPU_32v7=y | ||
208 | CONFIG_CPU_ABRT_EV7=y | ||
209 | CONFIG_CPU_PABRT_V7=y | ||
210 | CONFIG_CPU_CACHE_V7=y | ||
211 | CONFIG_CPU_CACHE_VIPT=y | ||
212 | CONFIG_CPU_COPY_V6=y | ||
213 | CONFIG_CPU_TLB_V7=y | ||
214 | CONFIG_CPU_HAS_ASID=y | ||
215 | CONFIG_CPU_CP15=y | ||
216 | CONFIG_CPU_CP15_MMU=y | ||
217 | |||
218 | # | ||
219 | # Processor Features | ||
220 | # | ||
221 | CONFIG_ARM_THUMB=y | ||
222 | # CONFIG_ARM_THUMBEE is not set | ||
223 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
224 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
225 | # CONFIG_CPU_BPREDICT_DISABLE is not set | ||
226 | CONFIG_HAS_TLS_REG=y | ||
227 | CONFIG_ARM_L1_CACHE_SHIFT=5 | ||
228 | # CONFIG_ARM_ERRATA_430973 is not set | ||
229 | # CONFIG_ARM_ERRATA_458693 is not set | ||
230 | # CONFIG_ARM_ERRATA_460075 is not set | ||
231 | CONFIG_ARM_GIC=y | ||
232 | CONFIG_COMMON_CLKDEV=y | ||
233 | |||
234 | # | ||
235 | # Bus support | ||
236 | # | ||
237 | CONFIG_ARM_AMBA=y | ||
238 | # CONFIG_PCI_SYSCALL is not set | ||
239 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
240 | # CONFIG_PCCARD is not set | ||
241 | |||
242 | # | ||
243 | # Kernel Features | ||
244 | # | ||
245 | # CONFIG_NO_HZ is not set | ||
246 | # CONFIG_HIGH_RES_TIMERS is not set | ||
247 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
248 | CONFIG_SMP=y | ||
249 | CONFIG_HAVE_ARM_SCU=y | ||
250 | CONFIG_HAVE_ARM_TWD=y | ||
251 | CONFIG_VMSPLIT_3G=y | ||
252 | # CONFIG_VMSPLIT_2G is not set | ||
253 | # CONFIG_VMSPLIT_1G is not set | ||
254 | CONFIG_PAGE_OFFSET=0xC0000000 | ||
255 | CONFIG_NR_CPUS=2 | ||
256 | # CONFIG_HOTPLUG_CPU is not set | ||
257 | CONFIG_LOCAL_TIMERS=y | ||
258 | # CONFIG_PREEMPT_NONE is not set | ||
259 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
260 | CONFIG_PREEMPT=y | ||
261 | CONFIG_HZ=100 | ||
262 | # CONFIG_THUMB2_KERNEL is not set | ||
263 | CONFIG_AEABI=y | ||
264 | CONFIG_OABI_COMPAT=y | ||
265 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | ||
266 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | ||
267 | # CONFIG_HIGHMEM is not set | ||
268 | CONFIG_SELECT_MEMORY_MODEL=y | ||
269 | CONFIG_FLATMEM_MANUAL=y | ||
270 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
271 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
272 | CONFIG_FLATMEM=y | ||
273 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
274 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
275 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
276 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
277 | CONFIG_ZONE_DMA_FLAG=0 | ||
278 | CONFIG_VIRT_TO_BUS=y | ||
279 | CONFIG_HAVE_MLOCK=y | ||
280 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
281 | # CONFIG_KSM is not set | ||
282 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
283 | CONFIG_ALIGNMENT_TRAP=y | ||
284 | # CONFIG_UACCESS_WITH_MEMCPY is not set | ||
285 | |||
286 | # | ||
287 | # Boot options | ||
288 | # | ||
289 | CONFIG_ZBOOT_ROM_TEXT=0 | ||
290 | CONFIG_ZBOOT_ROM_BSS=0 | ||
291 | CONFIG_CMDLINE="root=/dev/ram0 console=ttyAMA2,115200n8" | ||
292 | # CONFIG_XIP_KERNEL is not set | ||
293 | # CONFIG_KEXEC is not set | ||
294 | |||
295 | # | ||
296 | # CPU Power Management | ||
297 | # | ||
298 | # CONFIG_CPU_IDLE is not set | ||
299 | |||
300 | # | ||
301 | # Floating point emulation | ||
302 | # | ||
303 | |||
304 | # | ||
305 | # At least one emulation must be selected | ||
306 | # | ||
307 | # CONFIG_FPE_NWFPE is not set | ||
308 | # CONFIG_FPE_FASTFPE is not set | ||
309 | CONFIG_VFP=y | ||
310 | CONFIG_VFPv3=y | ||
311 | CONFIG_NEON=y | ||
312 | |||
313 | # | ||
314 | # Userspace binary formats | ||
315 | # | ||
316 | CONFIG_BINFMT_ELF=y | ||
317 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
318 | CONFIG_HAVE_AOUT=y | ||
319 | # CONFIG_BINFMT_AOUT is not set | ||
320 | # CONFIG_BINFMT_MISC is not set | ||
321 | |||
322 | # | ||
323 | # Power management options | ||
324 | # | ||
325 | # CONFIG_PM is not set | ||
326 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
327 | # CONFIG_NET is not set | ||
328 | |||
329 | # | ||
330 | # Device Drivers | ||
331 | # | ||
332 | |||
333 | # | ||
334 | # Generic Driver Options | ||
335 | # | ||
336 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
337 | # CONFIG_DEVTMPFS is not set | ||
338 | CONFIG_STANDALONE=y | ||
339 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
340 | CONFIG_FW_LOADER=y | ||
341 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
342 | CONFIG_EXTRA_FIRMWARE="" | ||
343 | # CONFIG_DEBUG_DRIVER is not set | ||
344 | # CONFIG_DEBUG_DEVRES is not set | ||
345 | # CONFIG_SYS_HYPERVISOR is not set | ||
346 | # CONFIG_MTD is not set | ||
347 | # CONFIG_PARPORT is not set | ||
348 | CONFIG_BLK_DEV=y | ||
349 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
350 | # CONFIG_BLK_DEV_LOOP is not set | ||
351 | CONFIG_BLK_DEV_RAM=y | ||
352 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
353 | CONFIG_BLK_DEV_RAM_SIZE=65536 | ||
354 | # CONFIG_BLK_DEV_XIP is not set | ||
355 | # CONFIG_CDROM_PKTCDVD is not set | ||
356 | # CONFIG_MISC_DEVICES is not set | ||
357 | CONFIG_HAVE_IDE=y | ||
358 | # CONFIG_IDE is not set | ||
359 | |||
360 | # | ||
361 | # SCSI device support | ||
362 | # | ||
363 | # CONFIG_RAID_ATTRS is not set | ||
364 | # CONFIG_SCSI is not set | ||
365 | # CONFIG_SCSI_DMA is not set | ||
366 | # CONFIG_SCSI_NETLINK is not set | ||
367 | # CONFIG_ATA is not set | ||
368 | # CONFIG_MD is not set | ||
369 | # CONFIG_PHONE is not set | ||
370 | |||
371 | # | ||
372 | # Input device support | ||
373 | # | ||
374 | CONFIG_INPUT=y | ||
375 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
376 | # CONFIG_INPUT_POLLDEV is not set | ||
377 | |||
378 | # | ||
379 | # Userland interfaces | ||
380 | # | ||
381 | CONFIG_INPUT_MOUSEDEV=y | ||
382 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
383 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
384 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
385 | # CONFIG_INPUT_JOYDEV is not set | ||
386 | CONFIG_INPUT_EVDEV=y | ||
387 | # CONFIG_INPUT_EVBUG is not set | ||
388 | |||
389 | # | ||
390 | # Input Device Drivers | ||
391 | # | ||
392 | # CONFIG_INPUT_KEYBOARD is not set | ||
393 | # CONFIG_INPUT_MOUSE is not set | ||
394 | # CONFIG_INPUT_JOYSTICK is not set | ||
395 | # CONFIG_INPUT_TABLET is not set | ||
396 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
397 | # CONFIG_INPUT_MISC is not set | ||
398 | |||
399 | # | ||
400 | # Hardware I/O ports | ||
401 | # | ||
402 | # CONFIG_SERIO is not set | ||
403 | # CONFIG_GAMEPORT is not set | ||
404 | |||
405 | # | ||
406 | # Character devices | ||
407 | # | ||
408 | CONFIG_VT=y | ||
409 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
410 | CONFIG_VT_CONSOLE=y | ||
411 | CONFIG_HW_CONSOLE=y | ||
412 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
413 | CONFIG_DEVKMEM=y | ||
414 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
415 | |||
416 | # | ||
417 | # Serial drivers | ||
418 | # | ||
419 | # CONFIG_SERIAL_8250 is not set | ||
420 | |||
421 | # | ||
422 | # Non-8250 serial port support | ||
423 | # | ||
424 | # CONFIG_SERIAL_AMBA_PL010 is not set | ||
425 | CONFIG_SERIAL_AMBA_PL011=y | ||
426 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | ||
427 | # CONFIG_SERIAL_MAX3100 is not set | ||
428 | CONFIG_SERIAL_CORE=y | ||
429 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
430 | CONFIG_UNIX98_PTYS=y | ||
431 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
432 | # CONFIG_LEGACY_PTYS is not set | ||
433 | # CONFIG_IPMI_HANDLER is not set | ||
434 | # CONFIG_HW_RANDOM is not set | ||
435 | # CONFIG_R3964 is not set | ||
436 | # CONFIG_RAW_DRIVER is not set | ||
437 | # CONFIG_TCG_TPM is not set | ||
438 | # CONFIG_I2C is not set | ||
439 | CONFIG_SPI=y | ||
440 | # CONFIG_SPI_DEBUG is not set | ||
441 | CONFIG_SPI_MASTER=y | ||
442 | |||
443 | # | ||
444 | # SPI Master Controller Drivers | ||
445 | # | ||
446 | # CONFIG_SPI_BITBANG is not set | ||
447 | CONFIG_SPI_PL022=y | ||
448 | |||
449 | # | ||
450 | # SPI Protocol Masters | ||
451 | # | ||
452 | # CONFIG_SPI_SPIDEV is not set | ||
453 | # CONFIG_SPI_TLE62X0 is not set | ||
454 | |||
455 | # | ||
456 | # PPS support | ||
457 | # | ||
458 | # CONFIG_PPS is not set | ||
459 | # CONFIG_W1 is not set | ||
460 | # CONFIG_POWER_SUPPLY is not set | ||
461 | # CONFIG_HWMON is not set | ||
462 | # CONFIG_THERMAL is not set | ||
463 | # CONFIG_WATCHDOG is not set | ||
464 | CONFIG_SSB_POSSIBLE=y | ||
465 | |||
466 | # | ||
467 | # Sonics Silicon Backplane | ||
468 | # | ||
469 | # CONFIG_SSB is not set | ||
470 | |||
471 | # | ||
472 | # Multifunction device drivers | ||
473 | # | ||
474 | # CONFIG_MFD_CORE is not set | ||
475 | # CONFIG_MFD_SM501 is not set | ||
476 | # CONFIG_HTC_PASIC3 is not set | ||
477 | # CONFIG_MFD_TMIO is not set | ||
478 | # CONFIG_MFD_MC13783 is not set | ||
479 | # CONFIG_EZX_PCAP is not set | ||
480 | # CONFIG_REGULATOR is not set | ||
481 | # CONFIG_MEDIA_SUPPORT is not set | ||
482 | |||
483 | # | ||
484 | # Graphics support | ||
485 | # | ||
486 | # CONFIG_VGASTATE is not set | ||
487 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
488 | # CONFIG_FB is not set | ||
489 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
490 | |||
491 | # | ||
492 | # Display device support | ||
493 | # | ||
494 | # CONFIG_DISPLAY_SUPPORT is not set | ||
495 | |||
496 | # | ||
497 | # Console display driver support | ||
498 | # | ||
499 | # CONFIG_VGA_CONSOLE is not set | ||
500 | CONFIG_DUMMY_CONSOLE=y | ||
501 | # CONFIG_SOUND is not set | ||
502 | # CONFIG_HID_SUPPORT is not set | ||
503 | # CONFIG_USB_SUPPORT is not set | ||
504 | # CONFIG_MMC is not set | ||
505 | # CONFIG_MEMSTICK is not set | ||
506 | # CONFIG_NEW_LEDS is not set | ||
507 | # CONFIG_ACCESSIBILITY is not set | ||
508 | CONFIG_RTC_LIB=y | ||
509 | # CONFIG_RTC_CLASS is not set | ||
510 | # CONFIG_DMADEVICES is not set | ||
511 | # CONFIG_AUXDISPLAY is not set | ||
512 | # CONFIG_UIO is not set | ||
513 | |||
514 | # | ||
515 | # TI VLYNQ | ||
516 | # | ||
517 | # CONFIG_STAGING is not set | ||
518 | |||
519 | # | ||
520 | # File systems | ||
521 | # | ||
522 | CONFIG_EXT2_FS=y | ||
523 | CONFIG_EXT2_FS_XATTR=y | ||
524 | CONFIG_EXT2_FS_POSIX_ACL=y | ||
525 | CONFIG_EXT2_FS_SECURITY=y | ||
526 | # CONFIG_EXT2_FS_XIP is not set | ||
527 | # CONFIG_EXT3_FS is not set | ||
528 | # CONFIG_EXT4_FS is not set | ||
529 | CONFIG_FS_MBCACHE=y | ||
530 | # CONFIG_REISERFS_FS is not set | ||
531 | # CONFIG_JFS_FS is not set | ||
532 | CONFIG_FS_POSIX_ACL=y | ||
533 | # CONFIG_XFS_FS is not set | ||
534 | # CONFIG_BTRFS_FS is not set | ||
535 | # CONFIG_NILFS2_FS is not set | ||
536 | CONFIG_FILE_LOCKING=y | ||
537 | CONFIG_FSNOTIFY=y | ||
538 | CONFIG_DNOTIFY=y | ||
539 | CONFIG_INOTIFY=y | ||
540 | CONFIG_INOTIFY_USER=y | ||
541 | # CONFIG_QUOTA is not set | ||
542 | # CONFIG_AUTOFS_FS is not set | ||
543 | # CONFIG_AUTOFS4_FS is not set | ||
544 | # CONFIG_FUSE_FS is not set | ||
545 | CONFIG_GENERIC_ACL=y | ||
546 | |||
547 | # | ||
548 | # Caches | ||
549 | # | ||
550 | # CONFIG_FSCACHE is not set | ||
551 | |||
552 | # | ||
553 | # CD-ROM/DVD Filesystems | ||
554 | # | ||
555 | # CONFIG_ISO9660_FS is not set | ||
556 | # CONFIG_UDF_FS is not set | ||
557 | |||
558 | # | ||
559 | # DOS/FAT/NT Filesystems | ||
560 | # | ||
561 | # CONFIG_MSDOS_FS is not set | ||
562 | # CONFIG_VFAT_FS is not set | ||
563 | # CONFIG_NTFS_FS is not set | ||
564 | |||
565 | # | ||
566 | # Pseudo filesystems | ||
567 | # | ||
568 | CONFIG_PROC_FS=y | ||
569 | CONFIG_PROC_SYSCTL=y | ||
570 | CONFIG_PROC_PAGE_MONITOR=y | ||
571 | CONFIG_SYSFS=y | ||
572 | CONFIG_TMPFS=y | ||
573 | CONFIG_TMPFS_POSIX_ACL=y | ||
574 | # CONFIG_HUGETLB_PAGE is not set | ||
575 | CONFIG_CONFIGFS_FS=m | ||
576 | # CONFIG_MISC_FILESYSTEMS is not set | ||
577 | |||
578 | # | ||
579 | # Partition Types | ||
580 | # | ||
581 | # CONFIG_PARTITION_ADVANCED is not set | ||
582 | CONFIG_MSDOS_PARTITION=y | ||
583 | # CONFIG_NLS is not set | ||
584 | |||
585 | # | ||
586 | # Kernel hacking | ||
587 | # | ||
588 | # CONFIG_PRINTK_TIME is not set | ||
589 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
590 | CONFIG_ENABLE_MUST_CHECK=y | ||
591 | CONFIG_FRAME_WARN=1024 | ||
592 | CONFIG_MAGIC_SYSRQ=y | ||
593 | # CONFIG_STRIP_ASM_SYMS is not set | ||
594 | # CONFIG_UNUSED_SYMBOLS is not set | ||
595 | # CONFIG_DEBUG_FS is not set | ||
596 | # CONFIG_HEADERS_CHECK is not set | ||
597 | CONFIG_DEBUG_KERNEL=y | ||
598 | # CONFIG_DEBUG_SHIRQ is not set | ||
599 | CONFIG_DETECT_SOFTLOCKUP=y | ||
600 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
601 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
602 | CONFIG_DETECT_HUNG_TASK=y | ||
603 | # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set | ||
604 | CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 | ||
605 | # CONFIG_SCHED_DEBUG is not set | ||
606 | # CONFIG_SCHEDSTATS is not set | ||
607 | # CONFIG_TIMER_STATS is not set | ||
608 | # CONFIG_DEBUG_OBJECTS is not set | ||
609 | # CONFIG_SLUB_DEBUG_ON is not set | ||
610 | # CONFIG_SLUB_STATS is not set | ||
611 | # CONFIG_DEBUG_KMEMLEAK is not set | ||
612 | # CONFIG_DEBUG_PREEMPT is not set | ||
613 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
614 | # CONFIG_RT_MUTEX_TESTER is not set | ||
615 | # CONFIG_DEBUG_SPINLOCK is not set | ||
616 | # CONFIG_DEBUG_MUTEXES is not set | ||
617 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
618 | # CONFIG_PROVE_LOCKING is not set | ||
619 | # CONFIG_LOCK_STAT is not set | ||
620 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
621 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
622 | # CONFIG_DEBUG_KOBJECT is not set | ||
623 | CONFIG_DEBUG_BUGVERBOSE=y | ||
624 | CONFIG_DEBUG_INFO=y | ||
625 | # CONFIG_DEBUG_VM is not set | ||
626 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
627 | CONFIG_DEBUG_MEMORY_INIT=y | ||
628 | # CONFIG_DEBUG_LIST is not set | ||
629 | # CONFIG_DEBUG_SG is not set | ||
630 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
631 | # CONFIG_DEBUG_CREDENTIALS is not set | ||
632 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
633 | # CONFIG_RCU_TORTURE_TEST is not set | ||
634 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
635 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
636 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
637 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
638 | # CONFIG_FAULT_INJECTION is not set | ||
639 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
640 | # CONFIG_PAGE_POISONING is not set | ||
641 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
642 | CONFIG_TRACING_SUPPORT=y | ||
643 | # CONFIG_FTRACE is not set | ||
644 | # CONFIG_SAMPLES is not set | ||
645 | CONFIG_HAVE_ARCH_KGDB=y | ||
646 | # CONFIG_KGDB is not set | ||
647 | CONFIG_ARM_UNWIND=y | ||
648 | CONFIG_DEBUG_USER=y | ||
649 | CONFIG_DEBUG_ERRORS=y | ||
650 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
651 | # CONFIG_DEBUG_LL is not set | ||
652 | |||
653 | # | ||
654 | # Security options | ||
655 | # | ||
656 | # CONFIG_KEYS is not set | ||
657 | # CONFIG_SECURITY is not set | ||
658 | # CONFIG_SECURITYFS is not set | ||
659 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
660 | # CONFIG_CRYPTO is not set | ||
661 | # CONFIG_BINARY_PRINTF is not set | ||
662 | |||
663 | # | ||
664 | # Library routines | ||
665 | # | ||
666 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
667 | # CONFIG_CRC_CCITT is not set | ||
668 | # CONFIG_CRC16 is not set | ||
669 | CONFIG_CRC_T10DIF=m | ||
670 | # CONFIG_CRC_ITU_T is not set | ||
671 | # CONFIG_CRC32 is not set | ||
672 | # CONFIG_CRC7 is not set | ||
673 | # CONFIG_LIBCRC32C is not set | ||
674 | CONFIG_ZLIB_INFLATE=y | ||
675 | CONFIG_DECOMPRESS_GZIP=y | ||
676 | CONFIG_DECOMPRESS_BZIP2=y | ||
677 | CONFIG_DECOMPRESS_LZMA=y | ||
678 | CONFIG_HAS_IOMEM=y | ||
679 | CONFIG_HAS_IOPORT=y | ||
680 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/arm/include/asm/hardware/coresight.h b/arch/arm/include/asm/hardware/coresight.h new file mode 100644 index 000000000000..f82b25d4f73e --- /dev/null +++ b/arch/arm/include/asm/hardware/coresight.h | |||
@@ -0,0 +1,165 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/include/asm/hardware/coresight.h | ||
3 | * | ||
4 | * CoreSight components' registers | ||
5 | * | ||
6 | * Copyright (C) 2009 Nokia Corporation. | ||
7 | * Alexander Shishkin | ||
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_HARDWARE_CORESIGHT_H | ||
15 | #define __ASM_HARDWARE_CORESIGHT_H | ||
16 | |||
17 | #define TRACER_ACCESSED_BIT 0 | ||
18 | #define TRACER_RUNNING_BIT 1 | ||
19 | #define TRACER_CYCLE_ACC_BIT 2 | ||
20 | #define TRACER_ACCESSED BIT(TRACER_ACCESSED_BIT) | ||
21 | #define TRACER_RUNNING BIT(TRACER_RUNNING_BIT) | ||
22 | #define TRACER_CYCLE_ACC BIT(TRACER_CYCLE_ACC_BIT) | ||
23 | |||
24 | struct tracectx { | ||
25 | unsigned int etb_bufsz; | ||
26 | void __iomem *etb_regs; | ||
27 | void __iomem *etm_regs; | ||
28 | unsigned long flags; | ||
29 | int ncmppairs; | ||
30 | int etm_portsz; | ||
31 | struct device *dev; | ||
32 | struct clk *emu_clk; | ||
33 | struct mutex mutex; | ||
34 | }; | ||
35 | |||
36 | #define TRACER_TIMEOUT 10000 | ||
37 | |||
38 | #define etm_writel(t, v, x) \ | ||
39 | (__raw_writel((v), (t)->etm_regs + (x))) | ||
40 | #define etm_readl(t, x) (__raw_readl((t)->etm_regs + (x))) | ||
41 | |||
42 | /* CoreSight Management Registers */ | ||
43 | #define CSMR_LOCKACCESS 0xfb0 | ||
44 | #define CSMR_LOCKSTATUS 0xfb4 | ||
45 | #define CSMR_AUTHSTATUS 0xfb8 | ||
46 | #define CSMR_DEVID 0xfc8 | ||
47 | #define CSMR_DEVTYPE 0xfcc | ||
48 | /* CoreSight Component Registers */ | ||
49 | #define CSCR_CLASS 0xff4 | ||
50 | |||
51 | #define CSCR_PRSR 0x314 | ||
52 | |||
53 | #define UNLOCK_MAGIC 0xc5acce55 | ||
54 | |||
55 | /* ETM control register, "ETM Architecture", 3.3.1 */ | ||
56 | #define ETMR_CTRL 0 | ||
57 | #define ETMCTRL_POWERDOWN 1 | ||
58 | #define ETMCTRL_PROGRAM (1 << 10) | ||
59 | #define ETMCTRL_PORTSEL (1 << 11) | ||
60 | #define ETMCTRL_DO_CONTEXTID (3 << 14) | ||
61 | #define ETMCTRL_PORTMASK1 (7 << 4) | ||
62 | #define ETMCTRL_PORTMASK2 (1 << 21) | ||
63 | #define ETMCTRL_PORTMASK (ETMCTRL_PORTMASK1 | ETMCTRL_PORTMASK2) | ||
64 | #define ETMCTRL_PORTSIZE(x) ((((x) & 7) << 4) | (!!((x) & 8)) << 21) | ||
65 | #define ETMCTRL_DO_CPRT (1 << 1) | ||
66 | #define ETMCTRL_DATAMASK (3 << 2) | ||
67 | #define ETMCTRL_DATA_DO_DATA (1 << 2) | ||
68 | #define ETMCTRL_DATA_DO_ADDR (1 << 3) | ||
69 | #define ETMCTRL_DATA_DO_BOTH (ETMCTRL_DATA_DO_DATA | ETMCTRL_DATA_DO_ADDR) | ||
70 | #define ETMCTRL_BRANCH_OUTPUT (1 << 8) | ||
71 | #define ETMCTRL_CYCLEACCURATE (1 << 12) | ||
72 | |||
73 | /* ETM configuration code register */ | ||
74 | #define ETMR_CONFCODE (0x04) | ||
75 | |||
76 | /* ETM trace start/stop resource control register */ | ||
77 | #define ETMR_TRACESSCTRL (0x18) | ||
78 | |||
79 | /* ETM trigger event register */ | ||
80 | #define ETMR_TRIGEVT (0x08) | ||
81 | |||
82 | /* address access type register bits, "ETM architecture", | ||
83 | * table 3-27 */ | ||
84 | /* - access type */ | ||
85 | #define ETMAAT_IFETCH 0 | ||
86 | #define ETMAAT_IEXEC 1 | ||
87 | #define ETMAAT_IEXECPASS 2 | ||
88 | #define ETMAAT_IEXECFAIL 3 | ||
89 | #define ETMAAT_DLOADSTORE 4 | ||
90 | #define ETMAAT_DLOAD 5 | ||
91 | #define ETMAAT_DSTORE 6 | ||
92 | /* - comparison access size */ | ||
93 | #define ETMAAT_JAVA (0 << 3) | ||
94 | #define ETMAAT_THUMB (1 << 3) | ||
95 | #define ETMAAT_ARM (3 << 3) | ||
96 | /* - data value comparison control */ | ||
97 | #define ETMAAT_NOVALCMP (0 << 5) | ||
98 | #define ETMAAT_VALMATCH (1 << 5) | ||
99 | #define ETMAAT_VALNOMATCH (3 << 5) | ||
100 | /* - exact match */ | ||
101 | #define ETMAAT_EXACTMATCH (1 << 7) | ||
102 | /* - context id comparator control */ | ||
103 | #define ETMAAT_IGNCONTEXTID (0 << 8) | ||
104 | #define ETMAAT_VALUE1 (1 << 8) | ||
105 | #define ETMAAT_VALUE2 (2 << 8) | ||
106 | #define ETMAAT_VALUE3 (3 << 8) | ||
107 | /* - security level control */ | ||
108 | #define ETMAAT_IGNSECURITY (0 << 10) | ||
109 | #define ETMAAT_NSONLY (1 << 10) | ||
110 | #define ETMAAT_SONLY (2 << 10) | ||
111 | |||
112 | #define ETMR_COMP_VAL(x) (0x40 + (x) * 4) | ||
113 | #define ETMR_COMP_ACC_TYPE(x) (0x80 + (x) * 4) | ||
114 | |||
115 | /* ETM status register, "ETM Architecture", 3.3.2 */ | ||
116 | #define ETMR_STATUS (0x10) | ||
117 | #define ETMST_OVERFLOW (1 << 0) | ||
118 | #define ETMST_PROGBIT (1 << 1) | ||
119 | #define ETMST_STARTSTOP (1 << 2) | ||
120 | #define ETMST_TRIGGER (1 << 3) | ||
121 | |||
122 | #define etm_progbit(t) (etm_readl((t), ETMR_STATUS) & ETMST_PROGBIT) | ||
123 | #define etm_started(t) (etm_readl((t), ETMR_STATUS) & ETMST_STARTSTOP) | ||
124 | #define etm_triggered(t) (etm_readl((t), ETMR_STATUS) & ETMST_TRIGGER) | ||
125 | |||
126 | #define ETMR_TRACEENCTRL2 0x1c | ||
127 | #define ETMR_TRACEENCTRL 0x24 | ||
128 | #define ETMTE_INCLEXCL (1 << 24) | ||
129 | #define ETMR_TRACEENEVT 0x20 | ||
130 | #define ETMCTRL_OPTS (ETMCTRL_DO_CPRT | \ | ||
131 | ETMCTRL_DATA_DO_ADDR | \ | ||
132 | ETMCTRL_BRANCH_OUTPUT | \ | ||
133 | ETMCTRL_DO_CONTEXTID) | ||
134 | |||
135 | /* ETB registers, "CoreSight Components TRM", 9.3 */ | ||
136 | #define ETBR_DEPTH 0x04 | ||
137 | #define ETBR_STATUS 0x0c | ||
138 | #define ETBR_READMEM 0x10 | ||
139 | #define ETBR_READADDR 0x14 | ||
140 | #define ETBR_WRITEADDR 0x18 | ||
141 | #define ETBR_TRIGGERCOUNT 0x1c | ||
142 | #define ETBR_CTRL 0x20 | ||
143 | #define ETBR_FORMATTERCTRL 0x304 | ||
144 | #define ETBFF_ENFTC 1 | ||
145 | #define ETBFF_ENFCONT (1 << 1) | ||
146 | #define ETBFF_FONFLIN (1 << 4) | ||
147 | #define ETBFF_MANUAL_FLUSH (1 << 6) | ||
148 | #define ETBFF_TRIGIN (1 << 8) | ||
149 | #define ETBFF_TRIGEVT (1 << 9) | ||
150 | #define ETBFF_TRIGFL (1 << 10) | ||
151 | |||
152 | #define etb_writel(t, v, x) \ | ||
153 | (__raw_writel((v), (t)->etb_regs + (x))) | ||
154 | #define etb_readl(t, x) (__raw_readl((t)->etb_regs + (x))) | ||
155 | |||
156 | #define etm_lock(t) do { etm_writel((t), 0, CSMR_LOCKACCESS); } while (0) | ||
157 | #define etm_unlock(t) \ | ||
158 | do { etm_writel((t), UNLOCK_MAGIC, CSMR_LOCKACCESS); } while (0) | ||
159 | |||
160 | #define etb_lock(t) do { etb_writel((t), 0, CSMR_LOCKACCESS); } while (0) | ||
161 | #define etb_unlock(t) \ | ||
162 | do { etb_writel((t), UNLOCK_MAGIC, CSMR_LOCKACCESS); } while (0) | ||
163 | |||
164 | #endif /* __ASM_HARDWARE_CORESIGHT_H */ | ||
165 | |||
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile index 79087dd6d869..e7ccf7e697ce 100644 --- a/arch/arm/kernel/Makefile +++ b/arch/arm/kernel/Makefile | |||
@@ -17,6 +17,8 @@ obj-y := compat.o elf.o entry-armv.o entry-common.o irq.o \ | |||
17 | process.o ptrace.o return_address.o setup.o signal.o \ | 17 | process.o ptrace.o return_address.o setup.o signal.o \ |
18 | sys_arm.o stacktrace.o time.o traps.o | 18 | sys_arm.o stacktrace.o time.o traps.o |
19 | 19 | ||
20 | obj-$(CONFIG_OC_ETM) += etm.o | ||
21 | |||
20 | obj-$(CONFIG_ISA_DMA_API) += dma.o | 22 | obj-$(CONFIG_ISA_DMA_API) += dma.o |
21 | obj-$(CONFIG_ARCH_ACORN) += ecard.o | 23 | obj-$(CONFIG_ARCH_ACORN) += ecard.o |
22 | obj-$(CONFIG_FIQ) += fiq.o | 24 | obj-$(CONFIG_FIQ) += fiq.o |
diff --git a/arch/arm/kernel/etm.c b/arch/arm/kernel/etm.c new file mode 100644 index 000000000000..827753966301 --- /dev/null +++ b/arch/arm/kernel/etm.c | |||
@@ -0,0 +1,641 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/kernel/etm.c | ||
3 | * | ||
4 | * Driver for ARM's Embedded Trace Macrocell and Embedded Trace Buffer. | ||
5 | * | ||
6 | * Copyright (C) 2009 Nokia Corporation. | ||
7 | * Alexander Shishkin | ||
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 <linux/kernel.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <linux/types.h> | ||
17 | #include <linux/io.h> | ||
18 | #include <linux/sysrq.h> | ||
19 | #include <linux/device.h> | ||
20 | #include <linux/clk.h> | ||
21 | #include <linux/amba/bus.h> | ||
22 | #include <linux/fs.h> | ||
23 | #include <linux/uaccess.h> | ||
24 | #include <linux/miscdevice.h> | ||
25 | #include <linux/vmalloc.h> | ||
26 | #include <linux/mutex.h> | ||
27 | #include <asm/hardware/coresight.h> | ||
28 | #include <asm/sections.h> | ||
29 | |||
30 | MODULE_LICENSE("GPL"); | ||
31 | MODULE_AUTHOR("Alexander Shishkin"); | ||
32 | |||
33 | static struct tracectx tracer; | ||
34 | |||
35 | static inline bool trace_isrunning(struct tracectx *t) | ||
36 | { | ||
37 | return !!(t->flags & TRACER_RUNNING); | ||
38 | } | ||
39 | |||
40 | static int etm_setup_address_range(struct tracectx *t, int n, | ||
41 | unsigned long start, unsigned long end, int exclude, int data) | ||
42 | { | ||
43 | u32 flags = ETMAAT_ARM | ETMAAT_IGNCONTEXTID | ETMAAT_NSONLY | \ | ||
44 | ETMAAT_NOVALCMP; | ||
45 | |||
46 | if (n < 1 || n > t->ncmppairs) | ||
47 | return -EINVAL; | ||
48 | |||
49 | /* comparators and ranges are numbered starting with 1 as opposed | ||
50 | * to bits in a word */ | ||
51 | n--; | ||
52 | |||
53 | if (data) | ||
54 | flags |= ETMAAT_DLOADSTORE; | ||
55 | else | ||
56 | flags |= ETMAAT_IEXEC; | ||
57 | |||
58 | /* first comparator for the range */ | ||
59 | etm_writel(t, flags, ETMR_COMP_ACC_TYPE(n * 2)); | ||
60 | etm_writel(t, start, ETMR_COMP_VAL(n * 2)); | ||
61 | |||
62 | /* second comparator is right next to it */ | ||
63 | etm_writel(t, flags, ETMR_COMP_ACC_TYPE(n * 2 + 1)); | ||
64 | etm_writel(t, end, ETMR_COMP_VAL(n * 2 + 1)); | ||
65 | |||
66 | flags = exclude ? ETMTE_INCLEXCL : 0; | ||
67 | etm_writel(t, flags | (1 << n), ETMR_TRACEENCTRL); | ||
68 | |||
69 | return 0; | ||
70 | } | ||
71 | |||
72 | static int trace_start(struct tracectx *t) | ||
73 | { | ||
74 | u32 v; | ||
75 | unsigned long timeout = TRACER_TIMEOUT; | ||
76 | |||
77 | etb_unlock(t); | ||
78 | |||
79 | etb_writel(t, 0, ETBR_FORMATTERCTRL); | ||
80 | etb_writel(t, 1, ETBR_CTRL); | ||
81 | |||
82 | etb_lock(t); | ||
83 | |||
84 | /* configure etm */ | ||
85 | v = ETMCTRL_OPTS | ETMCTRL_PROGRAM | ETMCTRL_PORTSIZE(t->etm_portsz); | ||
86 | |||
87 | if (t->flags & TRACER_CYCLE_ACC) | ||
88 | v |= ETMCTRL_CYCLEACCURATE; | ||
89 | |||
90 | etm_unlock(t); | ||
91 | |||
92 | etm_writel(t, v, ETMR_CTRL); | ||
93 | |||
94 | while (!(etm_readl(t, ETMR_CTRL) & ETMCTRL_PROGRAM) && --timeout) | ||
95 | ; | ||
96 | if (!timeout) { | ||
97 | dev_dbg(t->dev, "Waiting for progbit to assert timed out\n"); | ||
98 | etm_lock(t); | ||
99 | return -EFAULT; | ||
100 | } | ||
101 | |||
102 | etm_setup_address_range(t, 1, (unsigned long)_stext, | ||
103 | (unsigned long)_etext, 0, 0); | ||
104 | etm_writel(t, 0, ETMR_TRACEENCTRL2); | ||
105 | etm_writel(t, 0, ETMR_TRACESSCTRL); | ||
106 | etm_writel(t, 0x6f, ETMR_TRACEENEVT); | ||
107 | |||
108 | v &= ~ETMCTRL_PROGRAM; | ||
109 | v |= ETMCTRL_PORTSEL; | ||
110 | |||
111 | etm_writel(t, v, ETMR_CTRL); | ||
112 | |||
113 | timeout = TRACER_TIMEOUT; | ||
114 | while (etm_readl(t, ETMR_CTRL) & ETMCTRL_PROGRAM && --timeout) | ||
115 | ; | ||
116 | if (!timeout) { | ||
117 | dev_dbg(t->dev, "Waiting for progbit to deassert timed out\n"); | ||
118 | etm_lock(t); | ||
119 | return -EFAULT; | ||
120 | } | ||
121 | |||
122 | etm_lock(t); | ||
123 | |||
124 | t->flags |= TRACER_RUNNING; | ||
125 | |||
126 | return 0; | ||
127 | } | ||
128 | |||
129 | static int trace_stop(struct tracectx *t) | ||
130 | { | ||
131 | unsigned long timeout = TRACER_TIMEOUT; | ||
132 | |||
133 | etm_unlock(t); | ||
134 | |||
135 | etm_writel(t, 0x440, ETMR_CTRL); | ||
136 | while (!(etm_readl(t, ETMR_CTRL) & ETMCTRL_PROGRAM) && --timeout) | ||
137 | ; | ||
138 | if (!timeout) { | ||
139 | dev_dbg(t->dev, "Waiting for progbit to assert timed out\n"); | ||
140 | etm_lock(t); | ||
141 | return -EFAULT; | ||
142 | } | ||
143 | |||
144 | etm_lock(t); | ||
145 | |||
146 | etb_unlock(t); | ||
147 | etb_writel(t, ETBFF_MANUAL_FLUSH, ETBR_FORMATTERCTRL); | ||
148 | |||
149 | timeout = TRACER_TIMEOUT; | ||
150 | while (etb_readl(t, ETBR_FORMATTERCTRL) & | ||
151 | ETBFF_MANUAL_FLUSH && --timeout) | ||
152 | ; | ||
153 | if (!timeout) { | ||
154 | dev_dbg(t->dev, "Waiting for formatter flush to commence " | ||
155 | "timed out\n"); | ||
156 | etb_lock(t); | ||
157 | return -EFAULT; | ||
158 | } | ||
159 | |||
160 | etb_writel(t, 0, ETBR_CTRL); | ||
161 | |||
162 | etb_lock(t); | ||
163 | |||
164 | t->flags &= ~TRACER_RUNNING; | ||
165 | |||
166 | return 0; | ||
167 | } | ||
168 | |||
169 | static int etb_getdatalen(struct tracectx *t) | ||
170 | { | ||
171 | u32 v; | ||
172 | int rp, wp; | ||
173 | |||
174 | v = etb_readl(t, ETBR_STATUS); | ||
175 | |||
176 | if (v & 1) | ||
177 | return t->etb_bufsz; | ||
178 | |||
179 | rp = etb_readl(t, ETBR_READADDR); | ||
180 | wp = etb_readl(t, ETBR_WRITEADDR); | ||
181 | |||
182 | if (rp > wp) { | ||
183 | etb_writel(t, 0, ETBR_READADDR); | ||
184 | etb_writel(t, 0, ETBR_WRITEADDR); | ||
185 | |||
186 | return 0; | ||
187 | } | ||
188 | |||
189 | return wp - rp; | ||
190 | } | ||
191 | |||
192 | /* sysrq+v will always stop the running trace and leave it at that */ | ||
193 | static void etm_dump(void) | ||
194 | { | ||
195 | struct tracectx *t = &tracer; | ||
196 | u32 first = 0; | ||
197 | int length; | ||
198 | |||
199 | if (!t->etb_regs) { | ||
200 | printk(KERN_INFO "No tracing hardware found\n"); | ||
201 | return; | ||
202 | } | ||
203 | |||
204 | if (trace_isrunning(t)) | ||
205 | trace_stop(t); | ||
206 | |||
207 | etb_unlock(t); | ||
208 | |||
209 | length = etb_getdatalen(t); | ||
210 | |||
211 | if (length == t->etb_bufsz) | ||
212 | first = etb_readl(t, ETBR_WRITEADDR); | ||
213 | |||
214 | etb_writel(t, first, ETBR_READADDR); | ||
215 | |||
216 | printk(KERN_INFO "Trace buffer contents length: %d\n", length); | ||
217 | printk(KERN_INFO "--- ETB buffer begin ---\n"); | ||
218 | for (; length; length--) | ||
219 | printk("%08x", cpu_to_be32(etb_readl(t, ETBR_READMEM))); | ||
220 | printk(KERN_INFO "\n--- ETB buffer end ---\n"); | ||
221 | |||
222 | /* deassert the overflow bit */ | ||
223 | etb_writel(t, 1, ETBR_CTRL); | ||
224 | etb_writel(t, 0, ETBR_CTRL); | ||
225 | |||
226 | etb_writel(t, 0, ETBR_TRIGGERCOUNT); | ||
227 | etb_writel(t, 0, ETBR_READADDR); | ||
228 | etb_writel(t, 0, ETBR_WRITEADDR); | ||
229 | |||
230 | etb_lock(t); | ||
231 | } | ||
232 | |||
233 | static void sysrq_etm_dump(int key, struct tty_struct *tty) | ||
234 | { | ||
235 | dev_dbg(tracer.dev, "Dumping ETB buffer\n"); | ||
236 | etm_dump(); | ||
237 | } | ||
238 | |||
239 | static struct sysrq_key_op sysrq_etm_op = { | ||
240 | .handler = sysrq_etm_dump, | ||
241 | .help_msg = "ETM buffer dump", | ||
242 | .action_msg = "etm", | ||
243 | }; | ||
244 | |||
245 | static int etb_open(struct inode *inode, struct file *file) | ||
246 | { | ||
247 | if (!tracer.etb_regs) | ||
248 | return -ENODEV; | ||
249 | |||
250 | file->private_data = &tracer; | ||
251 | |||
252 | return nonseekable_open(inode, file); | ||
253 | } | ||
254 | |||
255 | static ssize_t etb_read(struct file *file, char __user *data, | ||
256 | size_t len, loff_t *ppos) | ||
257 | { | ||
258 | int total, i; | ||
259 | long length; | ||
260 | struct tracectx *t = file->private_data; | ||
261 | u32 first = 0; | ||
262 | u32 *buf; | ||
263 | |||
264 | mutex_lock(&t->mutex); | ||
265 | |||
266 | if (trace_isrunning(t)) { | ||
267 | length = 0; | ||
268 | goto out; | ||
269 | } | ||
270 | |||
271 | etb_unlock(t); | ||
272 | |||
273 | total = etb_getdatalen(t); | ||
274 | if (total == t->etb_bufsz) | ||
275 | first = etb_readl(t, ETBR_WRITEADDR); | ||
276 | |||
277 | etb_writel(t, first, ETBR_READADDR); | ||
278 | |||
279 | length = min(total * 4, (int)len); | ||
280 | buf = vmalloc(length); | ||
281 | |||
282 | dev_dbg(t->dev, "ETB buffer length: %d\n", total); | ||
283 | dev_dbg(t->dev, "ETB status reg: %x\n", etb_readl(t, ETBR_STATUS)); | ||
284 | for (i = 0; i < length / 4; i++) | ||
285 | buf[i] = etb_readl(t, ETBR_READMEM); | ||
286 | |||
287 | /* the only way to deassert overflow bit in ETB status is this */ | ||
288 | etb_writel(t, 1, ETBR_CTRL); | ||
289 | etb_writel(t, 0, ETBR_CTRL); | ||
290 | |||
291 | etb_writel(t, 0, ETBR_WRITEADDR); | ||
292 | etb_writel(t, 0, ETBR_READADDR); | ||
293 | etb_writel(t, 0, ETBR_TRIGGERCOUNT); | ||
294 | |||
295 | etb_lock(t); | ||
296 | |||
297 | length -= copy_to_user(data, buf, length); | ||
298 | vfree(buf); | ||
299 | |||
300 | out: | ||
301 | mutex_unlock(&t->mutex); | ||
302 | |||
303 | return length; | ||
304 | } | ||
305 | |||
306 | static int etb_release(struct inode *inode, struct file *file) | ||
307 | { | ||
308 | /* there's nothing to do here, actually */ | ||
309 | return 0; | ||
310 | } | ||
311 | |||
312 | static const struct file_operations etb_fops = { | ||
313 | .owner = THIS_MODULE, | ||
314 | .read = etb_read, | ||
315 | .open = etb_open, | ||
316 | .release = etb_release, | ||
317 | }; | ||
318 | |||
319 | static struct miscdevice etb_miscdev = { | ||
320 | .name = "tracebuf", | ||
321 | .minor = 0, | ||
322 | .fops = &etb_fops, | ||
323 | }; | ||
324 | |||
325 | static int __init etb_probe(struct amba_device *dev, struct amba_id *id) | ||
326 | { | ||
327 | struct tracectx *t = &tracer; | ||
328 | int ret = 0; | ||
329 | |||
330 | ret = amba_request_regions(dev, NULL); | ||
331 | if (ret) | ||
332 | goto out; | ||
333 | |||
334 | t->etb_regs = ioremap_nocache(dev->res.start, resource_size(&dev->res)); | ||
335 | if (!t->etb_regs) { | ||
336 | ret = -ENOMEM; | ||
337 | goto out_release; | ||
338 | } | ||
339 | |||
340 | amba_set_drvdata(dev, t); | ||
341 | |||
342 | etb_miscdev.parent = &dev->dev; | ||
343 | |||
344 | ret = misc_register(&etb_miscdev); | ||
345 | if (ret) | ||
346 | goto out_unmap; | ||
347 | |||
348 | t->emu_clk = clk_get(&dev->dev, "emu_src_ck"); | ||
349 | if (IS_ERR(t->emu_clk)) { | ||
350 | dev_dbg(&dev->dev, "Failed to obtain emu_src_ck.\n"); | ||
351 | return -EFAULT; | ||
352 | } | ||
353 | |||
354 | clk_enable(t->emu_clk); | ||
355 | |||
356 | etb_unlock(t); | ||
357 | t->etb_bufsz = etb_readl(t, ETBR_DEPTH); | ||
358 | dev_dbg(&dev->dev, "Size: %x\n", t->etb_bufsz); | ||
359 | |||
360 | /* make sure trace capture is disabled */ | ||
361 | etb_writel(t, 0, ETBR_CTRL); | ||
362 | etb_writel(t, 0x1000, ETBR_FORMATTERCTRL); | ||
363 | etb_lock(t); | ||
364 | |||
365 | dev_dbg(&dev->dev, "ETB AMBA driver initialized.\n"); | ||
366 | |||
367 | out: | ||
368 | return ret; | ||
369 | |||
370 | out_unmap: | ||
371 | amba_set_drvdata(dev, NULL); | ||
372 | iounmap(t->etb_regs); | ||
373 | |||
374 | out_release: | ||
375 | amba_release_regions(dev); | ||
376 | |||
377 | return ret; | ||
378 | } | ||
379 | |||
380 | static int etb_remove(struct amba_device *dev) | ||
381 | { | ||
382 | struct tracectx *t = amba_get_drvdata(dev); | ||
383 | |||
384 | amba_set_drvdata(dev, NULL); | ||
385 | |||
386 | iounmap(t->etb_regs); | ||
387 | t->etb_regs = NULL; | ||
388 | |||
389 | clk_disable(t->emu_clk); | ||
390 | clk_put(t->emu_clk); | ||
391 | |||
392 | amba_release_regions(dev); | ||
393 | |||
394 | return 0; | ||
395 | } | ||
396 | |||
397 | static struct amba_id etb_ids[] = { | ||
398 | { | ||
399 | .id = 0x0003b907, | ||
400 | .mask = 0x0007ffff, | ||
401 | }, | ||
402 | { 0, 0 }, | ||
403 | }; | ||
404 | |||
405 | static struct amba_driver etb_driver = { | ||
406 | .drv = { | ||
407 | .name = "etb", | ||
408 | .owner = THIS_MODULE, | ||
409 | }, | ||
410 | .probe = etb_probe, | ||
411 | .remove = etb_remove, | ||
412 | .id_table = etb_ids, | ||
413 | }; | ||
414 | |||
415 | /* use a sysfs file "trace_running" to start/stop tracing */ | ||
416 | static ssize_t trace_running_show(struct kobject *kobj, | ||
417 | struct kobj_attribute *attr, | ||
418 | char *buf) | ||
419 | { | ||
420 | return sprintf(buf, "%x\n", trace_isrunning(&tracer)); | ||
421 | } | ||
422 | |||
423 | static ssize_t trace_running_store(struct kobject *kobj, | ||
424 | struct kobj_attribute *attr, | ||
425 | const char *buf, size_t n) | ||
426 | { | ||
427 | unsigned int value; | ||
428 | int ret; | ||
429 | |||
430 | if (sscanf(buf, "%u", &value) != 1) | ||
431 | return -EINVAL; | ||
432 | |||
433 | mutex_lock(&tracer.mutex); | ||
434 | ret = value ? trace_start(&tracer) : trace_stop(&tracer); | ||
435 | mutex_unlock(&tracer.mutex); | ||
436 | |||
437 | return ret ? : n; | ||
438 | } | ||
439 | |||
440 | static struct kobj_attribute trace_running_attr = | ||
441 | __ATTR(trace_running, 0644, trace_running_show, trace_running_store); | ||
442 | |||
443 | static ssize_t trace_info_show(struct kobject *kobj, | ||
444 | struct kobj_attribute *attr, | ||
445 | char *buf) | ||
446 | { | ||
447 | u32 etb_wa, etb_ra, etb_st, etb_fc, etm_ctrl, etm_st; | ||
448 | int datalen; | ||
449 | |||
450 | etb_unlock(&tracer); | ||
451 | datalen = etb_getdatalen(&tracer); | ||
452 | etb_wa = etb_readl(&tracer, ETBR_WRITEADDR); | ||
453 | etb_ra = etb_readl(&tracer, ETBR_READADDR); | ||
454 | etb_st = etb_readl(&tracer, ETBR_STATUS); | ||
455 | etb_fc = etb_readl(&tracer, ETBR_FORMATTERCTRL); | ||
456 | etb_lock(&tracer); | ||
457 | |||
458 | etm_unlock(&tracer); | ||
459 | etm_ctrl = etm_readl(&tracer, ETMR_CTRL); | ||
460 | etm_st = etm_readl(&tracer, ETMR_STATUS); | ||
461 | etm_lock(&tracer); | ||
462 | |||
463 | return sprintf(buf, "Trace buffer len: %d\nComparator pairs: %d\n" | ||
464 | "ETBR_WRITEADDR:\t%08x\n" | ||
465 | "ETBR_READADDR:\t%08x\n" | ||
466 | "ETBR_STATUS:\t%08x\n" | ||
467 | "ETBR_FORMATTERCTRL:\t%08x\n" | ||
468 | "ETMR_CTRL:\t%08x\n" | ||
469 | "ETMR_STATUS:\t%08x\n", | ||
470 | datalen, | ||
471 | tracer.ncmppairs, | ||
472 | etb_wa, | ||
473 | etb_ra, | ||
474 | etb_st, | ||
475 | etb_fc, | ||
476 | etm_ctrl, | ||
477 | etm_st | ||
478 | ); | ||
479 | } | ||
480 | |||
481 | static struct kobj_attribute trace_info_attr = | ||
482 | __ATTR(trace_info, 0444, trace_info_show, NULL); | ||
483 | |||
484 | static ssize_t trace_mode_show(struct kobject *kobj, | ||
485 | struct kobj_attribute *attr, | ||
486 | char *buf) | ||
487 | { | ||
488 | return sprintf(buf, "%d %d\n", | ||
489 | !!(tracer.flags & TRACER_CYCLE_ACC), | ||
490 | tracer.etm_portsz); | ||
491 | } | ||
492 | |||
493 | static ssize_t trace_mode_store(struct kobject *kobj, | ||
494 | struct kobj_attribute *attr, | ||
495 | const char *buf, size_t n) | ||
496 | { | ||
497 | unsigned int cycacc, portsz; | ||
498 | |||
499 | if (sscanf(buf, "%u %u", &cycacc, &portsz) != 2) | ||
500 | return -EINVAL; | ||
501 | |||
502 | mutex_lock(&tracer.mutex); | ||
503 | if (cycacc) | ||
504 | tracer.flags |= TRACER_CYCLE_ACC; | ||
505 | else | ||
506 | tracer.flags &= ~TRACER_CYCLE_ACC; | ||
507 | |||
508 | tracer.etm_portsz = portsz & 0x0f; | ||
509 | mutex_unlock(&tracer.mutex); | ||
510 | |||
511 | return n; | ||
512 | } | ||
513 | |||
514 | static struct kobj_attribute trace_mode_attr = | ||
515 | __ATTR(trace_mode, 0644, trace_mode_show, trace_mode_store); | ||
516 | |||
517 | static int __init etm_probe(struct amba_device *dev, struct amba_id *id) | ||
518 | { | ||
519 | struct tracectx *t = &tracer; | ||
520 | int ret = 0; | ||
521 | |||
522 | if (t->etm_regs) { | ||
523 | dev_dbg(&dev->dev, "ETM already initialized\n"); | ||
524 | ret = -EBUSY; | ||
525 | goto out; | ||
526 | } | ||
527 | |||
528 | ret = amba_request_regions(dev, NULL); | ||
529 | if (ret) | ||
530 | goto out; | ||
531 | |||
532 | t->etm_regs = ioremap_nocache(dev->res.start, resource_size(&dev->res)); | ||
533 | if (!t->etm_regs) { | ||
534 | ret = -ENOMEM; | ||
535 | goto out_release; | ||
536 | } | ||
537 | |||
538 | amba_set_drvdata(dev, t); | ||
539 | |||
540 | mutex_init(&t->mutex); | ||
541 | t->dev = &dev->dev; | ||
542 | t->flags = TRACER_CYCLE_ACC; | ||
543 | t->etm_portsz = 1; | ||
544 | |||
545 | etm_unlock(t); | ||
546 | ret = etm_readl(t, CSCR_PRSR); | ||
547 | |||
548 | t->ncmppairs = etm_readl(t, ETMR_CONFCODE) & 0xf; | ||
549 | etm_writel(t, 0x440, ETMR_CTRL); | ||
550 | etm_lock(t); | ||
551 | |||
552 | ret = sysfs_create_file(&dev->dev.kobj, | ||
553 | &trace_running_attr.attr); | ||
554 | if (ret) | ||
555 | goto out_unmap; | ||
556 | |||
557 | /* failing to create any of these two is not fatal */ | ||
558 | ret = sysfs_create_file(&dev->dev.kobj, &trace_info_attr.attr); | ||
559 | if (ret) | ||
560 | dev_dbg(&dev->dev, "Failed to create trace_info in sysfs\n"); | ||
561 | |||
562 | ret = sysfs_create_file(&dev->dev.kobj, &trace_mode_attr.attr); | ||
563 | if (ret) | ||
564 | dev_dbg(&dev->dev, "Failed to create trace_mode in sysfs\n"); | ||
565 | |||
566 | dev_dbg(t->dev, "ETM AMBA driver initialized.\n"); | ||
567 | |||
568 | out: | ||
569 | return ret; | ||
570 | |||
571 | out_unmap: | ||
572 | amba_set_drvdata(dev, NULL); | ||
573 | iounmap(t->etm_regs); | ||
574 | |||
575 | out_release: | ||
576 | amba_release_regions(dev); | ||
577 | |||
578 | return ret; | ||
579 | } | ||
580 | |||
581 | static int etm_remove(struct amba_device *dev) | ||
582 | { | ||
583 | struct tracectx *t = amba_get_drvdata(dev); | ||
584 | |||
585 | amba_set_drvdata(dev, NULL); | ||
586 | |||
587 | iounmap(t->etm_regs); | ||
588 | t->etm_regs = NULL; | ||
589 | |||
590 | amba_release_regions(dev); | ||
591 | |||
592 | sysfs_remove_file(&dev->dev.kobj, &trace_running_attr.attr); | ||
593 | sysfs_remove_file(&dev->dev.kobj, &trace_info_attr.attr); | ||
594 | sysfs_remove_file(&dev->dev.kobj, &trace_mode_attr.attr); | ||
595 | |||
596 | return 0; | ||
597 | } | ||
598 | |||
599 | static struct amba_id etm_ids[] = { | ||
600 | { | ||
601 | .id = 0x0003b921, | ||
602 | .mask = 0x0007ffff, | ||
603 | }, | ||
604 | { 0, 0 }, | ||
605 | }; | ||
606 | |||
607 | static struct amba_driver etm_driver = { | ||
608 | .drv = { | ||
609 | .name = "etm", | ||
610 | .owner = THIS_MODULE, | ||
611 | }, | ||
612 | .probe = etm_probe, | ||
613 | .remove = etm_remove, | ||
614 | .id_table = etm_ids, | ||
615 | }; | ||
616 | |||
617 | static int __init etm_init(void) | ||
618 | { | ||
619 | int retval; | ||
620 | |||
621 | retval = amba_driver_register(&etb_driver); | ||
622 | if (retval) { | ||
623 | printk(KERN_ERR "Failed to register etb\n"); | ||
624 | return retval; | ||
625 | } | ||
626 | |||
627 | retval = amba_driver_register(&etm_driver); | ||
628 | if (retval) { | ||
629 | amba_driver_unregister(&etb_driver); | ||
630 | printk(KERN_ERR "Failed to probe etm\n"); | ||
631 | return retval; | ||
632 | } | ||
633 | |||
634 | /* not being able to install this handler is not fatal */ | ||
635 | (void)register_sysrq_key('v', &sysrq_etm_op); | ||
636 | |||
637 | return 0; | ||
638 | } | ||
639 | |||
640 | device_initcall(etm_init); | ||
641 | |||
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index 2fd88437348b..c71e39ed092f 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig | |||
@@ -163,6 +163,11 @@ config MACH_CPUAT91 | |||
163 | Select this if you are using the Eukrea Electromatique's | 163 | Select this if you are using the Eukrea Electromatique's |
164 | CPUAT91 board <http://www.eukrea.com/>. | 164 | CPUAT91 board <http://www.eukrea.com/>. |
165 | 165 | ||
166 | config MACH_ECO920 | ||
167 | bool "eco920" | ||
168 | help | ||
169 | Select this if you are using the eco920 board | ||
170 | |||
166 | endif | 171 | endif |
167 | 172 | ||
168 | # ---------------------------------------------------------- | 173 | # ---------------------------------------------------------- |
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile index ada440aab0c5..709fbad4a3ee 100644 --- a/arch/arm/mach-at91/Makefile +++ b/arch/arm/mach-at91/Makefile | |||
@@ -35,6 +35,7 @@ obj-$(CONFIG_MACH_PICOTUX2XX) += board-picotux200.o | |||
35 | obj-$(CONFIG_MACH_ECBAT91) += board-ecbat91.o | 35 | obj-$(CONFIG_MACH_ECBAT91) += board-ecbat91.o |
36 | obj-$(CONFIG_MACH_YL9200) += board-yl-9200.o | 36 | obj-$(CONFIG_MACH_YL9200) += board-yl-9200.o |
37 | obj-$(CONFIG_MACH_CPUAT91) += board-cpuat91.o | 37 | obj-$(CONFIG_MACH_CPUAT91) += board-cpuat91.o |
38 | obj-$(CONFIG_MACH_ECO920) += board-eco920.o | ||
38 | 39 | ||
39 | # AT91SAM9260 board-specific support | 40 | # AT91SAM9260 board-specific support |
40 | obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o | 41 | obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o |
@@ -77,6 +78,7 @@ obj-y += leds.o | |||
77 | # Power Management | 78 | # Power Management |
78 | obj-$(CONFIG_PM) += pm.o | 79 | obj-$(CONFIG_PM) += pm.o |
79 | obj-$(CONFIG_AT91_SLOW_CLOCK) += pm_slowclock.o | 80 | obj-$(CONFIG_AT91_SLOW_CLOCK) += pm_slowclock.o |
81 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o | ||
80 | 82 | ||
81 | ifeq ($(CONFIG_PM_DEBUG),y) | 83 | ifeq ($(CONFIG_PM_DEBUG),y) |
82 | CFLAGS_pm.o += -DDEBUG | 84 | CFLAGS_pm.o += -DDEBUG |
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index 332b784050b2..a57af3e99c7c 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c | |||
@@ -131,6 +131,62 @@ void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data) {} | |||
131 | 131 | ||
132 | 132 | ||
133 | /* -------------------------------------------------------------------- | 133 | /* -------------------------------------------------------------------- |
134 | * USB Host HS (EHCI) | ||
135 | * Needs an OHCI host for low and full speed management | ||
136 | * -------------------------------------------------------------------- */ | ||
137 | |||
138 | #if defined(CONFIG_USB_EHCI_HCD) || defined(CONFIG_USB_EHCI_HCD_MODULE) | ||
139 | static u64 ehci_dmamask = DMA_BIT_MASK(32); | ||
140 | static struct at91_usbh_data usbh_ehci_data; | ||
141 | |||
142 | static struct resource usbh_ehci_resources[] = { | ||
143 | [0] = { | ||
144 | .start = AT91SAM9G45_EHCI_BASE, | ||
145 | .end = AT91SAM9G45_EHCI_BASE + SZ_1M - 1, | ||
146 | .flags = IORESOURCE_MEM, | ||
147 | }, | ||
148 | [1] = { | ||
149 | .start = AT91SAM9G45_ID_UHPHS, | ||
150 | .end = AT91SAM9G45_ID_UHPHS, | ||
151 | .flags = IORESOURCE_IRQ, | ||
152 | }, | ||
153 | }; | ||
154 | |||
155 | static struct platform_device at91_usbh_ehci_device = { | ||
156 | .name = "atmel-ehci", | ||
157 | .id = -1, | ||
158 | .dev = { | ||
159 | .dma_mask = &ehci_dmamask, | ||
160 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
161 | .platform_data = &usbh_ehci_data, | ||
162 | }, | ||
163 | .resource = usbh_ehci_resources, | ||
164 | .num_resources = ARRAY_SIZE(usbh_ehci_resources), | ||
165 | }; | ||
166 | |||
167 | void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data) | ||
168 | { | ||
169 | int i; | ||
170 | |||
171 | if (!data) | ||
172 | return; | ||
173 | |||
174 | /* Enable VBus control for UHP ports */ | ||
175 | for (i = 0; i < data->ports; i++) { | ||
176 | if (data->vbus_pin[i]) | ||
177 | at91_set_gpio_output(data->vbus_pin[i], 0); | ||
178 | } | ||
179 | |||
180 | usbh_ehci_data = *data; | ||
181 | at91_clock_associate("uhphs_clk", &at91_usbh_ehci_device.dev, "ehci_clk"); | ||
182 | platform_device_register(&at91_usbh_ehci_device); | ||
183 | } | ||
184 | #else | ||
185 | void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data) {} | ||
186 | #endif | ||
187 | |||
188 | |||
189 | /* -------------------------------------------------------------------- | ||
134 | * USB HS Device (Gadget) | 190 | * USB HS Device (Gadget) |
135 | * -------------------------------------------------------------------- */ | 191 | * -------------------------------------------------------------------- */ |
136 | 192 | ||
diff --git a/arch/arm/mach-at91/board-eco920.c b/arch/arm/mach-at91/board-eco920.c new file mode 100644 index 000000000000..295a96609e71 --- /dev/null +++ b/arch/arm/mach-at91/board-eco920.c | |||
@@ -0,0 +1,158 @@ | |||
1 | /* | ||
2 | * This program is free software; you can redistribute it and/or modify | ||
3 | * it under the terms of the GNU General Public License as published by | ||
4 | * the Free Software Foundation; either version 2 of the License, or | ||
5 | * (at your option) any later version. | ||
6 | * | ||
7 | * This program is distributed in the hope that it will be useful, | ||
8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
10 | * GNU General Public License for more details. | ||
11 | * | ||
12 | * You should have received a copy of the GNU General Public License | ||
13 | * along with this program; if not, write to the Free Software | ||
14 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
15 | */ | ||
16 | |||
17 | #include <linux/init.h> | ||
18 | #include <linux/platform_device.h> | ||
19 | #include <linux/mtd/physmap.h> | ||
20 | #include <linux/gpio.h> | ||
21 | |||
22 | #include <asm/mach-types.h> | ||
23 | |||
24 | #include <asm/mach/arch.h> | ||
25 | #include <asm/mach/map.h> | ||
26 | |||
27 | #include <mach/board.h> | ||
28 | #include <mach/at91rm9200_mc.h> | ||
29 | #include "generic.h" | ||
30 | |||
31 | static void __init eco920_map_io(void) | ||
32 | { | ||
33 | at91rm9200_initialize(18432000, AT91RM9200_PQFP); | ||
34 | |||
35 | /* Setup the LEDs */ | ||
36 | at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1); | ||
37 | |||
38 | /* DBGU on ttyS0. (Rx & Tx only */ | ||
39 | at91_register_uart(0, 0, 0); | ||
40 | |||
41 | /* set serial console to ttyS0 (ie, DBGU) */ | ||
42 | at91_set_serial_console(0); | ||
43 | } | ||
44 | |||
45 | static void __init eco920_init_irq(void) | ||
46 | { | ||
47 | at91rm9200_init_interrupts(NULL); | ||
48 | } | ||
49 | |||
50 | static struct at91_eth_data __initdata eco920_eth_data = { | ||
51 | .phy_irq_pin = AT91_PIN_PC2, | ||
52 | .is_rmii = 1, | ||
53 | }; | ||
54 | |||
55 | static struct at91_usbh_data __initdata eco920_usbh_data = { | ||
56 | .ports = 1, | ||
57 | }; | ||
58 | |||
59 | static struct at91_udc_data __initdata eco920_udc_data = { | ||
60 | .vbus_pin = AT91_PIN_PB12, | ||
61 | .pullup_pin = AT91_PIN_PB13, | ||
62 | }; | ||
63 | |||
64 | static struct at91_mmc_data __initdata eco920_mmc_data = { | ||
65 | .slot_b = 0, | ||
66 | .wire4 = 0, | ||
67 | }; | ||
68 | |||
69 | static struct physmap_flash_data eco920_flash_data = { | ||
70 | .width = 2, | ||
71 | }; | ||
72 | |||
73 | static struct resource eco920_flash_resource = { | ||
74 | .start = 0x11000000, | ||
75 | .end = 0x11ffffff, | ||
76 | .flags = IORESOURCE_MEM, | ||
77 | }; | ||
78 | |||
79 | static struct platform_device eco920_flash = { | ||
80 | .name = "physmap-flash", | ||
81 | .id = 0, | ||
82 | .dev = { | ||
83 | .platform_data = &eco920_flash_data, | ||
84 | }, | ||
85 | .resource = &eco920_flash_resource, | ||
86 | .num_resources = 1, | ||
87 | }; | ||
88 | |||
89 | static struct resource at91_beeper_resources[] = { | ||
90 | [0] = { | ||
91 | .start = AT91RM9200_BASE_TC3, | ||
92 | .end = AT91RM9200_BASE_TC3 + 0x39, | ||
93 | .flags = IORESOURCE_MEM, | ||
94 | }, | ||
95 | }; | ||
96 | |||
97 | static struct platform_device at91_beeper = { | ||
98 | .name = "at91_beeper", | ||
99 | .id = 0, | ||
100 | .resource = at91_beeper_resources, | ||
101 | .num_resources = ARRAY_SIZE(at91_beeper_resources), | ||
102 | }; | ||
103 | |||
104 | static struct spi_board_info eco920_spi_devices[] = { | ||
105 | { /* CAN controller */ | ||
106 | .modalias = "tlv5638", | ||
107 | .chip_select = 3, | ||
108 | .max_speed_hz = 20 * 1000 * 1000, | ||
109 | .mode = SPI_CPHA, | ||
110 | }, | ||
111 | }; | ||
112 | |||
113 | static void __init eco920_board_init(void) | ||
114 | { | ||
115 | at91_add_device_serial(); | ||
116 | at91_add_device_eth(&eco920_eth_data); | ||
117 | at91_add_device_usbh(&eco920_usbh_data); | ||
118 | at91_add_device_udc(&eco920_udc_data); | ||
119 | |||
120 | at91_add_device_mmc(0, &eco920_mmc_data); | ||
121 | platform_device_register(&eco920_flash); | ||
122 | |||
123 | at91_sys_write(AT91_SMC_CSR(7), AT91_SMC_RWHOLD_(1) | ||
124 | | AT91_SMC_RWSETUP_(1) | ||
125 | | AT91_SMC_DBW_8 | ||
126 | | AT91_SMC_WSEN | ||
127 | | AT91_SMC_NWS_(15)); | ||
128 | |||
129 | at91_set_A_periph(AT91_PIN_PC6, 1); | ||
130 | |||
131 | at91_set_gpio_input(AT91_PIN_PA23, 0); | ||
132 | at91_set_deglitch(AT91_PIN_PA23, 1); | ||
133 | |||
134 | /* Initialization of the Static Memory Controller for Chip Select 3 */ | ||
135 | at91_sys_write(AT91_SMC_CSR(3), | ||
136 | AT91_SMC_DBW_16 | /* 16 bit */ | ||
137 | AT91_SMC_WSEN | | ||
138 | AT91_SMC_NWS_(5) | /* wait states */ | ||
139 | AT91_SMC_TDF_(1) /* float time */ | ||
140 | ); | ||
141 | |||
142 | at91_clock_associate("tc3_clk", &at91_beeper.dev, "at91_beeper"); | ||
143 | at91_set_B_periph(AT91_PIN_PB6, 0); | ||
144 | platform_device_register(&at91_beeper); | ||
145 | |||
146 | at91_add_device_spi(eco920_spi_devices, ARRAY_SIZE(eco920_spi_devices)); | ||
147 | } | ||
148 | |||
149 | MACHINE_START(ECO920, "eco920") | ||
150 | /* Maintainer: Sascha Hauer */ | ||
151 | .phys_io = AT91_BASE_SYS, | ||
152 | .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, | ||
153 | .boot_params = AT91_SDRAM_BASE + 0x100, | ||
154 | .timer = &at91rm9200_timer, | ||
155 | .map_io = eco920_map_io, | ||
156 | .init_irq = eco920_init_irq, | ||
157 | .init_machine = eco920_board_init, | ||
158 | MACHINE_END | ||
diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c index 64c3843f323d..1cf4d8681078 100644 --- a/arch/arm/mach-at91/board-sam9m10g45ek.c +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c | |||
@@ -366,6 +366,7 @@ static void __init ek_board_init(void) | |||
366 | at91_add_device_serial(); | 366 | at91_add_device_serial(); |
367 | /* USB HS Host */ | 367 | /* USB HS Host */ |
368 | at91_add_device_usbh_ohci(&ek_usbh_hs_data); | 368 | at91_add_device_usbh_ohci(&ek_usbh_hs_data); |
369 | at91_add_device_usbh_ehci(&ek_usbh_hs_data); | ||
369 | /* USB HS Device */ | 370 | /* USB HS Device */ |
370 | at91_add_device_usba(&ek_usba_udc_data); | 371 | at91_add_device_usba(&ek_usba_udc_data); |
371 | /* SPI */ | 372 | /* SPI */ |
diff --git a/arch/arm/mach-at91/cpuidle.c b/arch/arm/mach-at91/cpuidle.c new file mode 100644 index 000000000000..1cfeac1483d6 --- /dev/null +++ b/arch/arm/mach-at91/cpuidle.c | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * based on arch/arm/mach-kirkwood/cpuidle.c | ||
3 | * | ||
4 | * CPU idle support for AT91 SoC | ||
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 | * The cpu idle uses wait-for-interrupt and RAM self refresh in order | ||
11 | * to implement two idle states - | ||
12 | * #1 wait-for-interrupt | ||
13 | * #2 wait-for-interrupt and RAM self refresh | ||
14 | */ | ||
15 | |||
16 | #include <linux/kernel.h> | ||
17 | #include <linux/init.h> | ||
18 | #include <linux/platform_device.h> | ||
19 | #include <linux/cpuidle.h> | ||
20 | #include <asm/proc-fns.h> | ||
21 | #include <linux/io.h> | ||
22 | |||
23 | #include "pm.h" | ||
24 | |||
25 | #define AT91_MAX_STATES 2 | ||
26 | |||
27 | static DEFINE_PER_CPU(struct cpuidle_device, at91_cpuidle_device); | ||
28 | |||
29 | static struct cpuidle_driver at91_idle_driver = { | ||
30 | .name = "at91_idle", | ||
31 | .owner = THIS_MODULE, | ||
32 | }; | ||
33 | |||
34 | /* Actual code that puts the SoC in different idle states */ | ||
35 | static int at91_enter_idle(struct cpuidle_device *dev, | ||
36 | struct cpuidle_state *state) | ||
37 | { | ||
38 | struct timeval before, after; | ||
39 | int idle_time; | ||
40 | u32 saved_lpr; | ||
41 | |||
42 | local_irq_disable(); | ||
43 | do_gettimeofday(&before); | ||
44 | if (state == &dev->states[0]) | ||
45 | /* Wait for interrupt state */ | ||
46 | cpu_do_idle(); | ||
47 | else if (state == &dev->states[1]) { | ||
48 | asm("b 1f; .align 5; 1:"); | ||
49 | asm("mcr p15, 0, r0, c7, c10, 4"); /* drain write buffer */ | ||
50 | saved_lpr = sdram_selfrefresh_enable(); | ||
51 | cpu_do_idle(); | ||
52 | sdram_selfrefresh_disable(saved_lpr); | ||
53 | } | ||
54 | do_gettimeofday(&after); | ||
55 | local_irq_enable(); | ||
56 | idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC + | ||
57 | (after.tv_usec - before.tv_usec); | ||
58 | return idle_time; | ||
59 | } | ||
60 | |||
61 | /* Initialize CPU idle by registering the idle states */ | ||
62 | static int at91_init_cpuidle(void) | ||
63 | { | ||
64 | struct cpuidle_device *device; | ||
65 | |||
66 | cpuidle_register_driver(&at91_idle_driver); | ||
67 | |||
68 | device = &per_cpu(at91_cpuidle_device, smp_processor_id()); | ||
69 | device->state_count = AT91_MAX_STATES; | ||
70 | |||
71 | /* Wait for interrupt state */ | ||
72 | device->states[0].enter = at91_enter_idle; | ||
73 | device->states[0].exit_latency = 1; | ||
74 | device->states[0].target_residency = 10000; | ||
75 | device->states[0].flags = CPUIDLE_FLAG_TIME_VALID; | ||
76 | strcpy(device->states[0].name, "WFI"); | ||
77 | strcpy(device->states[0].desc, "Wait for interrupt"); | ||
78 | |||
79 | /* Wait for interrupt and RAM self refresh state */ | ||
80 | device->states[1].enter = at91_enter_idle; | ||
81 | device->states[1].exit_latency = 10; | ||
82 | device->states[1].target_residency = 10000; | ||
83 | device->states[1].flags = CPUIDLE_FLAG_TIME_VALID; | ||
84 | strcpy(device->states[1].name, "RAM_SR"); | ||
85 | strcpy(device->states[1].desc, "WFI and RAM Self Refresh"); | ||
86 | |||
87 | if (cpuidle_register_device(device)) { | ||
88 | printk(KERN_ERR "at91_init_cpuidle: Failed registering\n"); | ||
89 | return -EIO; | ||
90 | } | ||
91 | return 0; | ||
92 | } | ||
93 | |||
94 | device_initcall(at91_init_cpuidle); | ||
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h index 2f4fcedc02ba..2295d80dd893 100644 --- a/arch/arm/mach-at91/include/mach/board.h +++ b/arch/arm/mach-at91/include/mach/board.h | |||
@@ -98,6 +98,7 @@ struct at91_usbh_data { | |||
98 | }; | 98 | }; |
99 | extern void __init at91_add_device_usbh(struct at91_usbh_data *data); | 99 | extern void __init at91_add_device_usbh(struct at91_usbh_data *data); |
100 | extern void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data); | 100 | extern void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data); |
101 | extern void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data); | ||
101 | 102 | ||
102 | /* NAND / SmartMedia */ | 103 | /* NAND / SmartMedia */ |
103 | struct atmel_nand_data { | 104 | struct atmel_nand_data { |
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index 4028724d490d..615668986480 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c | |||
@@ -29,62 +29,7 @@ | |||
29 | #include <mach/cpu.h> | 29 | #include <mach/cpu.h> |
30 | 30 | ||
31 | #include "generic.h" | 31 | #include "generic.h" |
32 | 32 | #include "pm.h" | |
33 | #ifdef CONFIG_ARCH_AT91RM9200 | ||
34 | #include <mach/at91rm9200_mc.h> | ||
35 | |||
36 | /* | ||
37 | * The AT91RM9200 goes into self-refresh mode with this command, and will | ||
38 | * terminate self-refresh automatically on the next SDRAM access. | ||
39 | */ | ||
40 | #define sdram_selfrefresh_enable() at91_sys_write(AT91_SDRAMC_SRR, 1) | ||
41 | #define sdram_selfrefresh_disable() do {} while (0) | ||
42 | |||
43 | #elif defined(CONFIG_ARCH_AT91CAP9) | ||
44 | #include <mach/at91cap9_ddrsdr.h> | ||
45 | |||
46 | static u32 saved_lpr; | ||
47 | |||
48 | static inline void sdram_selfrefresh_enable(void) | ||
49 | { | ||
50 | u32 lpr; | ||
51 | |||
52 | saved_lpr = at91_sys_read(AT91_DDRSDRC_LPR); | ||
53 | |||
54 | lpr = saved_lpr & ~AT91_DDRSDRC_LPCB; | ||
55 | at91_sys_write(AT91_DDRSDRC_LPR, lpr | AT91_DDRSDRC_LPCB_SELF_REFRESH); | ||
56 | } | ||
57 | |||
58 | #define sdram_selfrefresh_disable() at91_sys_write(AT91_DDRSDRC_LPR, saved_lpr) | ||
59 | |||
60 | #else | ||
61 | #include <mach/at91sam9_sdramc.h> | ||
62 | |||
63 | #ifdef CONFIG_ARCH_AT91SAM9263 | ||
64 | /* | ||
65 | * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use; | ||
66 | * handle those cases both here and in the Suspend-To-RAM support. | ||
67 | */ | ||
68 | #define AT91_SDRAMC AT91_SDRAMC0 | ||
69 | #warning Assuming EB1 SDRAM controller is *NOT* used | ||
70 | #endif | ||
71 | |||
72 | static u32 saved_lpr; | ||
73 | |||
74 | static inline void sdram_selfrefresh_enable(void) | ||
75 | { | ||
76 | u32 lpr; | ||
77 | |||
78 | saved_lpr = at91_sys_read(AT91_SDRAMC_LPR); | ||
79 | |||
80 | lpr = saved_lpr & ~AT91_SDRAMC_LPCB; | ||
81 | at91_sys_write(AT91_SDRAMC_LPR, lpr | AT91_SDRAMC_LPCB_SELF_REFRESH); | ||
82 | } | ||
83 | |||
84 | #define sdram_selfrefresh_disable() at91_sys_write(AT91_SDRAMC_LPR, saved_lpr) | ||
85 | |||
86 | #endif | ||
87 | |||
88 | 33 | ||
89 | /* | 34 | /* |
90 | * Show the reason for the previous system reset. | 35 | * Show the reason for the previous system reset. |
@@ -260,6 +205,7 @@ extern u32 at91_slow_clock_sz; | |||
260 | 205 | ||
261 | static int at91_pm_enter(suspend_state_t state) | 206 | static int at91_pm_enter(suspend_state_t state) |
262 | { | 207 | { |
208 | u32 saved_lpr; | ||
263 | at91_gpio_suspend(); | 209 | at91_gpio_suspend(); |
264 | at91_irq_suspend(); | 210 | at91_irq_suspend(); |
265 | 211 | ||
@@ -315,9 +261,9 @@ static int at91_pm_enter(suspend_state_t state) | |||
315 | */ | 261 | */ |
316 | asm("b 1f; .align 5; 1:"); | 262 | asm("b 1f; .align 5; 1:"); |
317 | asm("mcr p15, 0, r0, c7, c10, 4"); /* drain write buffer */ | 263 | asm("mcr p15, 0, r0, c7, c10, 4"); /* drain write buffer */ |
318 | sdram_selfrefresh_enable(); | 264 | saved_lpr = sdram_selfrefresh_enable(); |
319 | asm("mcr p15, 0, r0, c7, c0, 4"); /* wait for interrupt */ | 265 | asm("mcr p15, 0, r0, c7, c0, 4"); /* wait for interrupt */ |
320 | sdram_selfrefresh_disable(); | 266 | sdram_selfrefresh_disable(saved_lpr); |
321 | break; | 267 | break; |
322 | 268 | ||
323 | case PM_SUSPEND_ON: | 269 | case PM_SUSPEND_ON: |
diff --git a/arch/arm/mach-at91/pm.h b/arch/arm/mach-at91/pm.h new file mode 100644 index 000000000000..08322c44df1a --- /dev/null +++ b/arch/arm/mach-at91/pm.h | |||
@@ -0,0 +1,67 @@ | |||
1 | #ifdef CONFIG_ARCH_AT91RM9200 | ||
2 | #include <mach/at91rm9200_mc.h> | ||
3 | |||
4 | /* | ||
5 | * The AT91RM9200 goes into self-refresh mode with this command, and will | ||
6 | * terminate self-refresh automatically on the next SDRAM access. | ||
7 | * | ||
8 | * Self-refresh mode is exited as soon as a memory access is made, but we don't | ||
9 | * know for sure when that happens. However, we need to restore the low-power | ||
10 | * mode if it was enabled before going idle. Restoring low-power mode while | ||
11 | * still in self-refresh is "not recommended", but seems to work. | ||
12 | */ | ||
13 | |||
14 | static inline u32 sdram_selfrefresh_enable(void) | ||
15 | { | ||
16 | u32 saved_lpr = at91_sys_read(AT91_SDRAMC_LPR); | ||
17 | |||
18 | at91_sys_write(AT91_SDRAMC_LPR, 0); | ||
19 | at91_sys_write(AT91_SDRAMC_SRR, 1); | ||
20 | return saved_lpr; | ||
21 | } | ||
22 | |||
23 | #define sdram_selfrefresh_disable(saved_lpr) at91_sys_write(AT91_SDRAMC_LPR, saved_lpr) | ||
24 | |||
25 | #elif defined(CONFIG_ARCH_AT91CAP9) | ||
26 | #include <mach/at91cap9_ddrsdr.h> | ||
27 | |||
28 | |||
29 | static inline u32 sdram_selfrefresh_enable(void) | ||
30 | { | ||
31 | u32 saved_lpr, lpr; | ||
32 | |||
33 | saved_lpr = at91_sys_read(AT91_DDRSDRC_LPR); | ||
34 | |||
35 | lpr = saved_lpr & ~AT91_DDRSDRC_LPCB; | ||
36 | at91_sys_write(AT91_DDRSDRC_LPR, lpr | AT91_DDRSDRC_LPCB_SELF_REFRESH); | ||
37 | return saved_lpr; | ||
38 | } | ||
39 | |||
40 | #define sdram_selfrefresh_disable(saved_lpr) at91_sys_write(AT91_DDRSDRC_LPR, saved_lpr) | ||
41 | |||
42 | #else | ||
43 | #include <mach/at91sam9_sdramc.h> | ||
44 | |||
45 | #ifdef CONFIG_ARCH_AT91SAM9263 | ||
46 | /* | ||
47 | * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use; | ||
48 | * handle those cases both here and in the Suspend-To-RAM support. | ||
49 | */ | ||
50 | #define AT91_SDRAMC AT91_SDRAMC0 | ||
51 | #warning Assuming EB1 SDRAM controller is *NOT* used | ||
52 | #endif | ||
53 | |||
54 | static inline u32 sdram_selfrefresh_enable(void) | ||
55 | { | ||
56 | u32 saved_lpr, lpr; | ||
57 | |||
58 | saved_lpr = at91_sys_read(AT91_SDRAMC_LPR); | ||
59 | |||
60 | lpr = saved_lpr & ~AT91_SDRAMC_LPCB; | ||
61 | at91_sys_write(AT91_SDRAMC_LPR, lpr | AT91_SDRAMC_LPCB_SELF_REFRESH); | ||
62 | return saved_lpr; | ||
63 | } | ||
64 | |||
65 | #define sdram_selfrefresh_disable(saved_lpr) at91_sys_write(AT91_SDRAMC_LPR, saved_lpr) | ||
66 | |||
67 | #endif | ||
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c index b4357c388d2e..1f0d66561bbe 100644 --- a/arch/arm/mach-ep93xx/core.c +++ b/arch/arm/mach-ep93xx/core.c | |||
@@ -31,6 +31,7 @@ | |||
31 | 31 | ||
32 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
33 | #include <mach/fb.h> | 33 | #include <mach/fb.h> |
34 | #include <mach/ep93xx_keypad.h> | ||
34 | 35 | ||
35 | #include <asm/mach/map.h> | 36 | #include <asm/mach/map.h> |
36 | #include <asm/mach/time.h> | 37 | #include <asm/mach/time.h> |
@@ -728,6 +729,82 @@ void __init ep93xx_register_fb(struct ep93xxfb_mach_info *data) | |||
728 | platform_device_register(&ep93xx_fb_device); | 729 | platform_device_register(&ep93xx_fb_device); |
729 | } | 730 | } |
730 | 731 | ||
732 | |||
733 | /************************************************************************* | ||
734 | * EP93xx matrix keypad peripheral handling | ||
735 | *************************************************************************/ | ||
736 | static struct resource ep93xx_keypad_resource[] = { | ||
737 | { | ||
738 | .start = EP93XX_KEY_MATRIX_PHYS_BASE, | ||
739 | .end = EP93XX_KEY_MATRIX_PHYS_BASE + 0x0c - 1, | ||
740 | .flags = IORESOURCE_MEM, | ||
741 | }, { | ||
742 | .start = IRQ_EP93XX_KEY, | ||
743 | .end = IRQ_EP93XX_KEY, | ||
744 | .flags = IORESOURCE_IRQ, | ||
745 | }, | ||
746 | }; | ||
747 | |||
748 | static struct platform_device ep93xx_keypad_device = { | ||
749 | .name = "ep93xx-keypad", | ||
750 | .id = -1, | ||
751 | .num_resources = ARRAY_SIZE(ep93xx_keypad_resource), | ||
752 | .resource = ep93xx_keypad_resource, | ||
753 | }; | ||
754 | |||
755 | void __init ep93xx_register_keypad(struct ep93xx_keypad_platform_data *data) | ||
756 | { | ||
757 | ep93xx_keypad_device.dev.platform_data = data; | ||
758 | platform_device_register(&ep93xx_keypad_device); | ||
759 | } | ||
760 | |||
761 | int ep93xx_keypad_acquire_gpio(struct platform_device *pdev) | ||
762 | { | ||
763 | int err; | ||
764 | int i; | ||
765 | |||
766 | for (i = 0; i < 8; i++) { | ||
767 | err = gpio_request(EP93XX_GPIO_LINE_C(i), dev_name(&pdev->dev)); | ||
768 | if (err) | ||
769 | goto fail_gpio_c; | ||
770 | err = gpio_request(EP93XX_GPIO_LINE_D(i), dev_name(&pdev->dev)); | ||
771 | if (err) | ||
772 | goto fail_gpio_d; | ||
773 | } | ||
774 | |||
775 | /* Enable the keypad controller; GPIO ports C and D used for keypad */ | ||
776 | ep93xx_devcfg_clear_bits(EP93XX_SYSCON_DEVCFG_KEYS | | ||
777 | EP93XX_SYSCON_DEVCFG_GONK); | ||
778 | |||
779 | return 0; | ||
780 | |||
781 | fail_gpio_d: | ||
782 | gpio_free(EP93XX_GPIO_LINE_C(i)); | ||
783 | fail_gpio_c: | ||
784 | for ( ; i >= 0; --i) { | ||
785 | gpio_free(EP93XX_GPIO_LINE_C(i)); | ||
786 | gpio_free(EP93XX_GPIO_LINE_D(i)); | ||
787 | } | ||
788 | return err; | ||
789 | } | ||
790 | EXPORT_SYMBOL(ep93xx_keypad_acquire_gpio); | ||
791 | |||
792 | void ep93xx_keypad_release_gpio(struct platform_device *pdev) | ||
793 | { | ||
794 | int i; | ||
795 | |||
796 | for (i = 0; i < 8; i++) { | ||
797 | gpio_free(EP93XX_GPIO_LINE_C(i)); | ||
798 | gpio_free(EP93XX_GPIO_LINE_D(i)); | ||
799 | } | ||
800 | |||
801 | /* Disable the keypad controller; GPIO ports C and D used for GPIO */ | ||
802 | ep93xx_devcfg_set_bits(EP93XX_SYSCON_DEVCFG_KEYS | | ||
803 | EP93XX_SYSCON_DEVCFG_GONK); | ||
804 | } | ||
805 | EXPORT_SYMBOL(ep93xx_keypad_release_gpio); | ||
806 | |||
807 | |||
731 | extern void ep93xx_gpio_init(void); | 808 | extern void ep93xx_gpio_init(void); |
732 | 809 | ||
733 | void __init ep93xx_init_devices(void) | 810 | void __init ep93xx_init_devices(void) |
diff --git a/arch/arm/mach-ep93xx/include/mach/clkdev.h b/arch/arm/mach-ep93xx/include/mach/clkdev.h index 04b37a89801c..50cb991eadeb 100644 --- a/arch/arm/mach-ep93xx/include/mach/clkdev.h +++ b/arch/arm/mach-ep93xx/include/mach/clkdev.h | |||
@@ -1,3 +1,7 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ep93xx/include/mach/clkdev.h | ||
3 | */ | ||
4 | |||
1 | #ifndef __ASM_MACH_CLKDEV_H | 5 | #ifndef __ASM_MACH_CLKDEV_H |
2 | #define __ASM_MACH_CLKDEV_H | 6 | #define __ASM_MACH_CLKDEV_H |
3 | 7 | ||
diff --git a/arch/arm/mach-ep93xx/include/mach/dma.h b/arch/arm/mach-ep93xx/include/mach/dma.h index ef6bd9d13148..3a5961d3f3b1 100644 --- a/arch/arm/mach-ep93xx/include/mach/dma.h +++ b/arch/arm/mach-ep93xx/include/mach/dma.h | |||
@@ -1,3 +1,7 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ep93xx/include/mach/dma.h | ||
3 | */ | ||
4 | |||
1 | #ifndef __ASM_ARCH_DMA_H | 5 | #ifndef __ASM_ARCH_DMA_H |
2 | #define __ASM_ARCH_DMA_H | 6 | #define __ASM_ARCH_DMA_H |
3 | 7 | ||
diff --git a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h index b1f937eda29c..d55194a4c093 100644 --- a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h +++ b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h | |||
@@ -134,6 +134,7 @@ | |||
134 | #define EP93XX_UART3_PHYS_BASE EP93XX_APB_PHYS(0x000e0000) | 134 | #define EP93XX_UART3_PHYS_BASE EP93XX_APB_PHYS(0x000e0000) |
135 | #define EP93XX_UART3_BASE EP93XX_APB_IOMEM(0x000e0000) | 135 | #define EP93XX_UART3_BASE EP93XX_APB_IOMEM(0x000e0000) |
136 | 136 | ||
137 | #define EP93XX_KEY_MATRIX_PHYS_BASE EP93XX_APB_PHYS(0x000f0000) | ||
137 | #define EP93XX_KEY_MATRIX_BASE EP93XX_APB_IOMEM(0x000f0000) | 138 | #define EP93XX_KEY_MATRIX_BASE EP93XX_APB_IOMEM(0x000f0000) |
138 | 139 | ||
139 | #define EP93XX_ADC_BASE EP93XX_APB_IOMEM(0x00100000) | 140 | #define EP93XX_ADC_BASE EP93XX_APB_IOMEM(0x00100000) |
diff --git a/arch/arm/mach-ep93xx/include/mach/hardware.h b/arch/arm/mach-ep93xx/include/mach/hardware.h index 349fa7cb72d5..5a3ce024b593 100644 --- a/arch/arm/mach-ep93xx/include/mach/hardware.h +++ b/arch/arm/mach-ep93xx/include/mach/hardware.h | |||
@@ -1,6 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-ep93xx/include/mach/hardware.h | 2 | * arch/arm/mach-ep93xx/include/mach/hardware.h |
3 | */ | 3 | */ |
4 | |||
4 | #ifndef __ASM_ARCH_HARDWARE_H | 5 | #ifndef __ASM_ARCH_HARDWARE_H |
5 | #define __ASM_ARCH_HARDWARE_H | 6 | #define __ASM_ARCH_HARDWARE_H |
6 | 7 | ||
diff --git a/arch/arm/mach-ep93xx/include/mach/io.h b/arch/arm/mach-ep93xx/include/mach/io.h index cebcc1c53d63..594b77f21054 100644 --- a/arch/arm/mach-ep93xx/include/mach/io.h +++ b/arch/arm/mach-ep93xx/include/mach/io.h | |||
@@ -1,6 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-ep93xx/include/mach/io.h | 2 | * arch/arm/mach-ep93xx/include/mach/io.h |
3 | */ | 3 | */ |
4 | |||
4 | #ifndef __ASM_MACH_IO_H | 5 | #ifndef __ASM_MACH_IO_H |
5 | #define __ASM_MACH_IO_H | 6 | #define __ASM_MACH_IO_H |
6 | 7 | ||
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h index 469fd968d517..c6dc14dbca18 100644 --- a/arch/arm/mach-ep93xx/include/mach/platform.h +++ b/arch/arm/mach-ep93xx/include/mach/platform.h | |||
@@ -8,6 +8,7 @@ struct i2c_gpio_platform_data; | |||
8 | struct i2c_board_info; | 8 | struct i2c_board_info; |
9 | struct platform_device; | 9 | struct platform_device; |
10 | struct ep93xxfb_mach_info; | 10 | struct ep93xxfb_mach_info; |
11 | struct ep93xx_keypad_platform_data; | ||
11 | 12 | ||
12 | struct ep93xx_eth_data | 13 | struct ep93xx_eth_data |
13 | { | 14 | { |
@@ -39,6 +40,9 @@ void ep93xx_register_fb(struct ep93xxfb_mach_info *data); | |||
39 | void ep93xx_register_pwm(int pwm0, int pwm1); | 40 | void ep93xx_register_pwm(int pwm0, int pwm1); |
40 | int ep93xx_pwm_acquire_gpio(struct platform_device *pdev); | 41 | int ep93xx_pwm_acquire_gpio(struct platform_device *pdev); |
41 | void ep93xx_pwm_release_gpio(struct platform_device *pdev); | 42 | void ep93xx_pwm_release_gpio(struct platform_device *pdev); |
43 | void ep93xx_register_keypad(struct ep93xx_keypad_platform_data *data); | ||
44 | int ep93xx_keypad_acquire_gpio(struct platform_device *pdev); | ||
45 | void ep93xx_keypad_release_gpio(struct platform_device *pdev); | ||
42 | 46 | ||
43 | void ep93xx_init_devices(void); | 47 | void ep93xx_init_devices(void); |
44 | extern struct sys_timer ep93xx_timer; | 48 | extern struct sys_timer ep93xx_timer; |
diff --git a/arch/arm/mach-nomadik/Kconfig b/arch/arm/mach-nomadik/Kconfig index 2a02b49c40f0..3c5e0f522e9c 100644 --- a/arch/arm/mach-nomadik/Kconfig +++ b/arch/arm/mach-nomadik/Kconfig | |||
@@ -5,13 +5,13 @@ menu "Nomadik boards" | |||
5 | config MACH_NOMADIK_8815NHK | 5 | config MACH_NOMADIK_8815NHK |
6 | bool "ST 8815 Nomadik Hardware Kit (evaluation board)" | 6 | bool "ST 8815 Nomadik Hardware Kit (evaluation board)" |
7 | select NOMADIK_8815 | 7 | select NOMADIK_8815 |
8 | select HAS_MTU | ||
8 | 9 | ||
9 | endmenu | 10 | endmenu |
10 | 11 | ||
11 | config NOMADIK_8815 | 12 | config NOMADIK_8815 |
12 | bool | 13 | bool |
13 | 14 | ||
14 | |||
15 | config I2C_BITBANG_8815NHK | 15 | config I2C_BITBANG_8815NHK |
16 | tristate "Driver for bit-bang busses found on the 8815 NHK" | 16 | tristate "Driver for bit-bang busses found on the 8815 NHK" |
17 | depends on I2C && MACH_NOMADIK_8815NHK | 17 | depends on I2C && MACH_NOMADIK_8815NHK |
diff --git a/arch/arm/mach-nomadik/Makefile b/arch/arm/mach-nomadik/Makefile index 412040982a40..36f67fb207d2 100644 --- a/arch/arm/mach-nomadik/Makefile +++ b/arch/arm/mach-nomadik/Makefile | |||
@@ -7,7 +7,7 @@ | |||
7 | 7 | ||
8 | # Object file lists. | 8 | # Object file lists. |
9 | 9 | ||
10 | obj-y += clock.o timer.o gpio.o | 10 | obj-y += clock.o gpio.o |
11 | 11 | ||
12 | # Cpu revision | 12 | # Cpu revision |
13 | obj-$(CONFIG_NOMADIK_8815) += cpu-8815.o | 13 | obj-$(CONFIG_NOMADIK_8815) += cpu-8815.o |
diff --git a/arch/arm/mach-nomadik/board-nhk8815.c b/arch/arm/mach-nomadik/board-nhk8815.c index 6bfd537d5afb..116394484e71 100644 --- a/arch/arm/mach-nomadik/board-nhk8815.c +++ b/arch/arm/mach-nomadik/board-nhk8815.c | |||
@@ -25,11 +25,18 @@ | |||
25 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
26 | #include <asm/mach/irq.h> | 26 | #include <asm/mach/irq.h> |
27 | #include <asm/mach/flash.h> | 27 | #include <asm/mach/flash.h> |
28 | |||
29 | #include <plat/mtu.h> | ||
30 | |||
28 | #include <mach/setup.h> | 31 | #include <mach/setup.h> |
29 | #include <mach/nand.h> | 32 | #include <mach/nand.h> |
30 | #include <mach/fsmc.h> | 33 | #include <mach/fsmc.h> |
31 | #include "clock.h" | 34 | #include "clock.h" |
32 | 35 | ||
36 | /* Initial value for SRC control register: all timers use MXTAL/8 source */ | ||
37 | #define SRC_CR_INIT_MASK 0x00007fff | ||
38 | #define SRC_CR_INIT_VAL 0x2aaa8000 | ||
39 | |||
33 | /* These adresses span 16MB, so use three individual pages */ | 40 | /* These adresses span 16MB, so use three individual pages */ |
34 | static struct resource nhk8815_nand_resources[] = { | 41 | static struct resource nhk8815_nand_resources[] = { |
35 | { | 42 | { |
@@ -239,6 +246,26 @@ static struct platform_device *nhk8815_platform_devices[] __initdata = { | |||
239 | /* will add more devices */ | 246 | /* will add more devices */ |
240 | }; | 247 | }; |
241 | 248 | ||
249 | static void __init nomadik_timer_init(void) | ||
250 | { | ||
251 | u32 src_cr; | ||
252 | |||
253 | /* Configure timer sources in "system reset controller" ctrl reg */ | ||
254 | src_cr = readl(io_p2v(NOMADIK_SRC_BASE)); | ||
255 | src_cr &= SRC_CR_INIT_MASK; | ||
256 | src_cr |= SRC_CR_INIT_VAL; | ||
257 | writel(src_cr, io_p2v(NOMADIK_SRC_BASE)); | ||
258 | |||
259 | /* Save global pointer to mtu, used by platform timer code */ | ||
260 | mtu_base = io_p2v(NOMADIK_MTU0_BASE); | ||
261 | |||
262 | nmdk_timer_init(); | ||
263 | } | ||
264 | |||
265 | static struct sys_timer nomadik_timer = { | ||
266 | .init = nomadik_timer_init, | ||
267 | }; | ||
268 | |||
242 | static void __init nhk8815_platform_init(void) | 269 | static void __init nhk8815_platform_init(void) |
243 | { | 270 | { |
244 | int i; | 271 | int i; |
diff --git a/arch/arm/mach-nomadik/include/mach/setup.h b/arch/arm/mach-nomadik/include/mach/setup.h index a4e468cf63da..b7897edf1f35 100644 --- a/arch/arm/mach-nomadik/include/mach/setup.h +++ b/arch/arm/mach-nomadik/include/mach/setup.h | |||
@@ -15,7 +15,7 @@ | |||
15 | extern void cpu8815_map_io(void); | 15 | extern void cpu8815_map_io(void); |
16 | extern void cpu8815_platform_init(void); | 16 | extern void cpu8815_platform_init(void); |
17 | extern void cpu8815_init_irq(void); | 17 | extern void cpu8815_init_irq(void); |
18 | extern struct sys_timer nomadik_timer; | 18 | extern void nmdk_timer_init(void); |
19 | 19 | ||
20 | #endif /* NOMADIK_8815 */ | 20 | #endif /* NOMADIK_8815 */ |
21 | 21 | ||
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index aad194f61a33..6f1bbbc4d15f 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -100,3 +100,11 @@ config MACH_OMAP_ZOOM2 | |||
100 | config MACH_OMAP_4430SDP | 100 | config MACH_OMAP_4430SDP |
101 | bool "OMAP 4430 SDP board" | 101 | bool "OMAP 4430 SDP board" |
102 | depends on ARCH_OMAP4 | 102 | depends on ARCH_OMAP4 |
103 | |||
104 | config OMAP3_EMU | ||
105 | bool "OMAP3 debugging peripherals" | ||
106 | depends on ARCH_OMAP3 | ||
107 | select OC_ETM | ||
108 | help | ||
109 | Say Y here to enable debugging hardware of omap3 | ||
110 | |||
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 8cb16777661a..e141cabcfcce 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -44,6 +44,9 @@ obj-$(CONFIG_ARCH_OMAP4) += cm4xxx.o | |||
44 | obj-$(CONFIG_ARCH_OMAP2) += clock24xx.o | 44 | obj-$(CONFIG_ARCH_OMAP2) += clock24xx.o |
45 | obj-$(CONFIG_ARCH_OMAP3) += clock34xx.o | 45 | obj-$(CONFIG_ARCH_OMAP3) += clock34xx.o |
46 | 46 | ||
47 | # EMU peripherals | ||
48 | obj-$(CONFIG_OMAP3_EMU) += emu.o | ||
49 | |||
47 | iommu-y += iommu2.o | 50 | iommu-y += iommu2.o |
48 | iommu-$(CONFIG_ARCH_OMAP3) += omap3-iommu.o | 51 | iommu-$(CONFIG_ARCH_OMAP3) += omap3-iommu.o |
49 | 52 | ||
diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c index 7c5c00df3c70..066e88a18824 100644 --- a/arch/arm/mach-omap2/clock34xx.c +++ b/arch/arm/mach-omap2/clock34xx.c | |||
@@ -119,7 +119,7 @@ static struct omap_clk omap34xx_clks[] = { | |||
119 | CLK(NULL, "dpll3_m2x2_ck", &dpll3_m2x2_ck, CK_343X), | 119 | CLK(NULL, "dpll3_m2x2_ck", &dpll3_m2x2_ck, CK_343X), |
120 | CLK(NULL, "dpll3_m3_ck", &dpll3_m3_ck, CK_343X), | 120 | CLK(NULL, "dpll3_m3_ck", &dpll3_m3_ck, CK_343X), |
121 | CLK(NULL, "dpll3_m3x2_ck", &dpll3_m3x2_ck, CK_343X), | 121 | CLK(NULL, "dpll3_m3x2_ck", &dpll3_m3x2_ck, CK_343X), |
122 | CLK(NULL, "emu_core_alwon_ck", &emu_core_alwon_ck, CK_343X), | 122 | CLK("etb", "emu_core_alwon_ck", &emu_core_alwon_ck, CK_343X), |
123 | CLK(NULL, "dpll4_ck", &dpll4_ck, CK_343X), | 123 | CLK(NULL, "dpll4_ck", &dpll4_ck, CK_343X), |
124 | CLK(NULL, "dpll4_x2_ck", &dpll4_x2_ck, CK_343X), | 124 | CLK(NULL, "dpll4_x2_ck", &dpll4_x2_ck, CK_343X), |
125 | CLK(NULL, "omap_96m_alwon_fck", &omap_96m_alwon_fck, CK_343X), | 125 | CLK(NULL, "omap_96m_alwon_fck", &omap_96m_alwon_fck, CK_343X), |
@@ -138,7 +138,7 @@ static struct omap_clk omap34xx_clks[] = { | |||
138 | CLK(NULL, "dpll4_m5x2_ck", &dpll4_m5x2_ck, CK_343X), | 138 | CLK(NULL, "dpll4_m5x2_ck", &dpll4_m5x2_ck, CK_343X), |
139 | CLK(NULL, "dpll4_m6_ck", &dpll4_m6_ck, CK_343X), | 139 | CLK(NULL, "dpll4_m6_ck", &dpll4_m6_ck, CK_343X), |
140 | CLK(NULL, "dpll4_m6x2_ck", &dpll4_m6x2_ck, CK_343X), | 140 | CLK(NULL, "dpll4_m6x2_ck", &dpll4_m6x2_ck, CK_343X), |
141 | CLK(NULL, "emu_per_alwon_ck", &emu_per_alwon_ck, CK_343X), | 141 | CLK("etb", "emu_per_alwon_ck", &emu_per_alwon_ck, CK_343X), |
142 | CLK(NULL, "dpll5_ck", &dpll5_ck, CK_3430ES2), | 142 | CLK(NULL, "dpll5_ck", &dpll5_ck, CK_3430ES2), |
143 | CLK(NULL, "dpll5_m2_ck", &dpll5_m2_ck, CK_3430ES2), | 143 | CLK(NULL, "dpll5_m2_ck", &dpll5_m2_ck, CK_3430ES2), |
144 | CLK(NULL, "clkout2_src_ck", &clkout2_src_ck, CK_343X), | 144 | CLK(NULL, "clkout2_src_ck", &clkout2_src_ck, CK_343X), |
@@ -147,7 +147,7 @@ static struct omap_clk omap34xx_clks[] = { | |||
147 | CLK(NULL, "dpll1_fck", &dpll1_fck, CK_343X), | 147 | CLK(NULL, "dpll1_fck", &dpll1_fck, CK_343X), |
148 | CLK(NULL, "mpu_ck", &mpu_ck, CK_343X), | 148 | CLK(NULL, "mpu_ck", &mpu_ck, CK_343X), |
149 | CLK(NULL, "arm_fck", &arm_fck, CK_343X), | 149 | CLK(NULL, "arm_fck", &arm_fck, CK_343X), |
150 | CLK(NULL, "emu_mpu_alwon_ck", &emu_mpu_alwon_ck, CK_343X), | 150 | CLK("etb", "emu_mpu_alwon_ck", &emu_mpu_alwon_ck, CK_343X), |
151 | CLK(NULL, "dpll2_fck", &dpll2_fck, CK_343X), | 151 | CLK(NULL, "dpll2_fck", &dpll2_fck, CK_343X), |
152 | CLK(NULL, "iva2_ck", &iva2_ck, CK_343X), | 152 | CLK(NULL, "iva2_ck", &iva2_ck, CK_343X), |
153 | CLK(NULL, "l3_ick", &l3_ick, CK_343X), | 153 | CLK(NULL, "l3_ick", &l3_ick, CK_343X), |
@@ -302,7 +302,7 @@ static struct omap_clk omap34xx_clks[] = { | |||
302 | CLK("omap-mcbsp.2", "fck", &mcbsp2_fck, CK_343X), | 302 | CLK("omap-mcbsp.2", "fck", &mcbsp2_fck, CK_343X), |
303 | CLK("omap-mcbsp.3", "fck", &mcbsp3_fck, CK_343X), | 303 | CLK("omap-mcbsp.3", "fck", &mcbsp3_fck, CK_343X), |
304 | CLK("omap-mcbsp.4", "fck", &mcbsp4_fck, CK_343X), | 304 | CLK("omap-mcbsp.4", "fck", &mcbsp4_fck, CK_343X), |
305 | CLK(NULL, "emu_src_ck", &emu_src_ck, CK_343X), | 305 | CLK("etb", "emu_src_ck", &emu_src_ck, CK_343X), |
306 | CLK(NULL, "pclk_fck", &pclk_fck, CK_343X), | 306 | CLK(NULL, "pclk_fck", &pclk_fck, CK_343X), |
307 | CLK(NULL, "pclkx2_fck", &pclkx2_fck, CK_343X), | 307 | CLK(NULL, "pclkx2_fck", &pclkx2_fck, CK_343X), |
308 | CLK(NULL, "atclk_fck", &atclk_fck, CK_343X), | 308 | CLK(NULL, "atclk_fck", &atclk_fck, CK_343X), |
diff --git a/arch/arm/mach-omap2/emu.c b/arch/arm/mach-omap2/emu.c new file mode 100644 index 000000000000..ec0d984a26fc --- /dev/null +++ b/arch/arm/mach-omap2/emu.c | |||
@@ -0,0 +1,66 @@ | |||
1 | /* | ||
2 | * emu.c | ||
3 | * | ||
4 | * ETM and ETB CoreSight components' resources as found in OMAP3xxx. | ||
5 | * | ||
6 | * Copyright (C) 2009 Nokia Corporation. | ||
7 | * Alexander Shishkin | ||
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 <linux/kernel.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <linux/types.h> | ||
17 | #include <linux/module.h> | ||
18 | #include <linux/device.h> | ||
19 | #include <linux/amba/bus.h> | ||
20 | #include <linux/io.h> | ||
21 | #include <linux/clk.h> | ||
22 | #include <linux/err.h> | ||
23 | |||
24 | MODULE_LICENSE("GPL"); | ||
25 | MODULE_AUTHOR("Alexander Shishkin"); | ||
26 | |||
27 | /* Cortex CoreSight components within omap3xxx EMU */ | ||
28 | #define ETM_BASE (L4_EMU_34XX_PHYS + 0x10000) | ||
29 | #define DBG_BASE (L4_EMU_34XX_PHYS + 0x11000) | ||
30 | #define ETB_BASE (L4_EMU_34XX_PHYS + 0x1b000) | ||
31 | #define DAPCTL (L4_EMU_34XX_PHYS + 0x1d000) | ||
32 | |||
33 | static struct amba_device omap3_etb_device = { | ||
34 | .dev = { | ||
35 | .init_name = "etb", | ||
36 | }, | ||
37 | .res = { | ||
38 | .start = ETB_BASE, | ||
39 | .end = ETB_BASE + SZ_4K - 1, | ||
40 | .flags = IORESOURCE_MEM, | ||
41 | }, | ||
42 | .periphid = 0x000bb907, | ||
43 | }; | ||
44 | |||
45 | static struct amba_device omap3_etm_device = { | ||
46 | .dev = { | ||
47 | .init_name = "etm", | ||
48 | }, | ||
49 | .res = { | ||
50 | .start = ETM_BASE, | ||
51 | .end = ETM_BASE + SZ_4K - 1, | ||
52 | .flags = IORESOURCE_MEM, | ||
53 | }, | ||
54 | .periphid = 0x102bb921, | ||
55 | }; | ||
56 | |||
57 | static int __init emu_init(void) | ||
58 | { | ||
59 | amba_device_register(&omap3_etb_device, &iomem_resource); | ||
60 | amba_device_register(&omap3_etm_device, &iomem_resource); | ||
61 | |||
62 | return 0; | ||
63 | } | ||
64 | |||
65 | subsys_initcall(emu_init); | ||
66 | |||
diff --git a/arch/arm/mach-u300/Makefile b/arch/arm/mach-u300/Makefile index 885b5c027c1e..fab46fe9a71f 100644 --- a/arch/arm/mach-u300/Makefile +++ b/arch/arm/mach-u300/Makefile | |||
@@ -12,3 +12,4 @@ obj-$(CONFIG_MMC) += mmc.o | |||
12 | obj-$(CONFIG_SPI_PL022) += spi.o | 12 | obj-$(CONFIG_SPI_PL022) += spi.o |
13 | obj-$(CONFIG_MACH_U300_SPIDUMMY) += dummyspichip.o | 13 | obj-$(CONFIG_MACH_U300_SPIDUMMY) += dummyspichip.o |
14 | obj-$(CONFIG_I2C_STU300) += i2c.o | 14 | obj-$(CONFIG_I2C_STU300) += i2c.o |
15 | obj-$(CONFIG_REGULATOR_AB3100) += regulator.o | ||
diff --git a/arch/arm/mach-u300/i2c.c b/arch/arm/mach-u300/i2c.c index 10be1f888b27..c73ed06b6065 100644 --- a/arch/arm/mach-u300/i2c.c +++ b/arch/arm/mach-u300/i2c.c | |||
@@ -9,13 +9,257 @@ | |||
9 | */ | 9 | */ |
10 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
11 | #include <linux/i2c.h> | 11 | #include <linux/i2c.h> |
12 | #include <linux/mfd/ab3100.h> | ||
13 | #include <linux/regulator/machine.h> | ||
14 | #include <linux/amba/bus.h> | ||
12 | #include <mach/irqs.h> | 15 | #include <mach/irqs.h> |
13 | 16 | ||
17 | /* | ||
18 | * Initial settings of ab3100 registers. | ||
19 | * Common for below LDO regulator settings are that | ||
20 | * bit 7-5 controls voltage. Bit 4 turns regulator ON(1) or OFF(0). | ||
21 | * Bit 3-2 controls sleep enable and bit 1-0 controls sleep mode. | ||
22 | */ | ||
23 | |||
24 | /* LDO_A 0x16: 2.75V, ON, SLEEP_A, SLEEP OFF GND */ | ||
25 | #define LDO_A_SETTING 0x16 | ||
26 | /* LDO_C 0x10: 2.65V, ON, SLEEP_A or B, SLEEP full power */ | ||
27 | #define LDO_C_SETTING 0x10 | ||
28 | /* LDO_D 0x10: 2.65V, ON, sleep mode not used */ | ||
29 | #define LDO_D_SETTING 0x10 | ||
30 | /* LDO_E 0x10: 1.8V, ON, SLEEP_A or B, SLEEP full power */ | ||
31 | #define LDO_E_SETTING 0x10 | ||
32 | /* LDO_E SLEEP 0x00: 1.8V, not used, SLEEP_A or B, not used */ | ||
33 | #define LDO_E_SLEEP_SETTING 0x00 | ||
34 | /* LDO_F 0xD0: 2.5V, ON, SLEEP_A or B, SLEEP full power */ | ||
35 | #define LDO_F_SETTING 0xD0 | ||
36 | /* LDO_G 0x00: 2.85V, OFF, SLEEP_A or B, SLEEP full power */ | ||
37 | #define LDO_G_SETTING 0x00 | ||
38 | /* LDO_H 0x18: 2.75V, ON, SLEEP_B, SLEEP full power */ | ||
39 | #define LDO_H_SETTING 0x18 | ||
40 | /* LDO_K 0x00: 2.75V, OFF, SLEEP_A or B, SLEEP full power */ | ||
41 | #define LDO_K_SETTING 0x00 | ||
42 | /* LDO_EXT 0x00: Voltage not set, OFF, not used, not used */ | ||
43 | #define LDO_EXT_SETTING 0x00 | ||
44 | /* BUCK 0x7D: 1.2V, ON, SLEEP_A and B, SLEEP low power */ | ||
45 | #define BUCK_SETTING 0x7D | ||
46 | /* BUCK SLEEP 0xAC: 1.05V, Not used, SLEEP_A and B, Not used */ | ||
47 | #define BUCK_SLEEP_SETTING 0xAC | ||
48 | |||
49 | static struct regulator_consumer_supply supply_ldo_c[] = { | ||
50 | { | ||
51 | .dev_name = "ab3100-codec", | ||
52 | .supply = "vaudio", /* Powers the codec */ | ||
53 | }, | ||
54 | }; | ||
55 | |||
56 | /* | ||
57 | * This one needs to be a supply so we can turn it off | ||
58 | * in order to shut down the system. | ||
59 | */ | ||
60 | static struct regulator_consumer_supply supply_ldo_d[] = { | ||
61 | { | ||
62 | .dev = NULL, | ||
63 | .supply = "vana15", /* Powers the SoC (CPU etc) */ | ||
64 | }, | ||
65 | }; | ||
66 | |||
67 | static struct regulator_consumer_supply supply_ldo_g[] = { | ||
68 | { | ||
69 | .dev_name = "mmci", | ||
70 | .supply = "vmmc", /* Powers MMC/SD card */ | ||
71 | }, | ||
72 | }; | ||
73 | |||
74 | static struct regulator_consumer_supply supply_ldo_h[] = { | ||
75 | { | ||
76 | .dev_name = "xgam_pdi", | ||
77 | .supply = "vdisp", /* Powers camera, display etc */ | ||
78 | }, | ||
79 | }; | ||
80 | |||
81 | static struct regulator_consumer_supply supply_ldo_k[] = { | ||
82 | { | ||
83 | .dev_name = "irda", | ||
84 | .supply = "vir", /* Power IrDA */ | ||
85 | }, | ||
86 | }; | ||
87 | |||
88 | /* | ||
89 | * This is a placeholder for whoever wish to use the | ||
90 | * external power. | ||
91 | */ | ||
92 | static struct regulator_consumer_supply supply_ldo_ext[] = { | ||
93 | { | ||
94 | .dev = NULL, | ||
95 | .supply = "vext", /* External power */ | ||
96 | }, | ||
97 | }; | ||
98 | |||
99 | /* Preset (hardware defined) voltages for these regulators */ | ||
100 | #define LDO_A_VOLTAGE 2750000 | ||
101 | #define LDO_C_VOLTAGE 2650000 | ||
102 | #define LDO_D_VOLTAGE 2650000 | ||
103 | |||
104 | static struct ab3100_platform_data ab3100_plf_data = { | ||
105 | .reg_constraints = { | ||
106 | /* LDO A routing and constraints */ | ||
107 | { | ||
108 | .constraints = { | ||
109 | .name = "vrad", | ||
110 | .min_uV = LDO_A_VOLTAGE, | ||
111 | .max_uV = LDO_A_VOLTAGE, | ||
112 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
113 | .always_on = 1, | ||
114 | .boot_on = 1, | ||
115 | }, | ||
116 | }, | ||
117 | /* LDO C routing and constraints */ | ||
118 | { | ||
119 | .constraints = { | ||
120 | .min_uV = LDO_C_VOLTAGE, | ||
121 | .max_uV = LDO_C_VOLTAGE, | ||
122 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
123 | }, | ||
124 | .num_consumer_supplies = ARRAY_SIZE(supply_ldo_c), | ||
125 | .consumer_supplies = supply_ldo_c, | ||
126 | }, | ||
127 | /* LDO D routing and constraints */ | ||
128 | { | ||
129 | .constraints = { | ||
130 | .min_uV = LDO_D_VOLTAGE, | ||
131 | .max_uV = LDO_D_VOLTAGE, | ||
132 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
133 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
134 | /* | ||
135 | * Actually this is boot_on but we need | ||
136 | * to reference count it externally to | ||
137 | * be able to shut down the system. | ||
138 | */ | ||
139 | }, | ||
140 | .num_consumer_supplies = ARRAY_SIZE(supply_ldo_d), | ||
141 | .consumer_supplies = supply_ldo_d, | ||
142 | }, | ||
143 | /* LDO E routing and constraints */ | ||
144 | { | ||
145 | .constraints = { | ||
146 | .name = "vio", | ||
147 | .min_uV = 1800000, | ||
148 | .max_uV = 1800000, | ||
149 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
150 | .valid_ops_mask = | ||
151 | REGULATOR_CHANGE_VOLTAGE | | ||
152 | REGULATOR_CHANGE_STATUS, | ||
153 | .always_on = 1, | ||
154 | .boot_on = 1, | ||
155 | }, | ||
156 | }, | ||
157 | /* LDO F routing and constraints */ | ||
158 | { | ||
159 | .constraints = { | ||
160 | .name = "vana25", | ||
161 | .min_uV = 2500000, | ||
162 | .max_uV = 2500000, | ||
163 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
164 | .valid_ops_mask = | ||
165 | REGULATOR_CHANGE_VOLTAGE | | ||
166 | REGULATOR_CHANGE_STATUS, | ||
167 | .always_on = 1, | ||
168 | .boot_on = 1, | ||
169 | }, | ||
170 | }, | ||
171 | /* LDO G routing and constraints */ | ||
172 | { | ||
173 | .constraints = { | ||
174 | .min_uV = 1500000, | ||
175 | .max_uV = 2850000, | ||
176 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
177 | .valid_ops_mask = | ||
178 | REGULATOR_CHANGE_VOLTAGE | | ||
179 | REGULATOR_CHANGE_STATUS, | ||
180 | }, | ||
181 | .num_consumer_supplies = ARRAY_SIZE(supply_ldo_g), | ||
182 | .consumer_supplies = supply_ldo_g, | ||
183 | }, | ||
184 | /* LDO H routing and constraints */ | ||
185 | { | ||
186 | .constraints = { | ||
187 | .min_uV = 1200000, | ||
188 | .max_uV = 2750000, | ||
189 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
190 | .valid_ops_mask = | ||
191 | REGULATOR_CHANGE_VOLTAGE | | ||
192 | REGULATOR_CHANGE_STATUS, | ||
193 | }, | ||
194 | .num_consumer_supplies = ARRAY_SIZE(supply_ldo_h), | ||
195 | .consumer_supplies = supply_ldo_h, | ||
196 | }, | ||
197 | /* LDO K routing and constraints */ | ||
198 | { | ||
199 | .constraints = { | ||
200 | .min_uV = 1800000, | ||
201 | .max_uV = 2750000, | ||
202 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
203 | .valid_ops_mask = | ||
204 | REGULATOR_CHANGE_VOLTAGE | | ||
205 | REGULATOR_CHANGE_STATUS, | ||
206 | }, | ||
207 | .num_consumer_supplies = ARRAY_SIZE(supply_ldo_k), | ||
208 | .consumer_supplies = supply_ldo_k, | ||
209 | }, | ||
210 | /* External regulator interface. No fixed voltage specified. | ||
211 | * If we knew the voltage of the external regulator and it | ||
212 | * was connected on the board, we could add the (fixed) | ||
213 | * voltage for it here. | ||
214 | */ | ||
215 | { | ||
216 | .constraints = { | ||
217 | .min_uV = 0, | ||
218 | .max_uV = 0, | ||
219 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
220 | .valid_ops_mask = | ||
221 | REGULATOR_CHANGE_STATUS, | ||
222 | }, | ||
223 | .num_consumer_supplies = ARRAY_SIZE(supply_ldo_ext), | ||
224 | .consumer_supplies = supply_ldo_ext, | ||
225 | }, | ||
226 | /* Buck converter routing and constraints */ | ||
227 | { | ||
228 | .constraints = { | ||
229 | .name = "vcore", | ||
230 | .min_uV = 1200000, | ||
231 | .max_uV = 1800000, | ||
232 | .valid_modes_mask = REGULATOR_MODE_NORMAL, | ||
233 | .valid_ops_mask = | ||
234 | REGULATOR_CHANGE_VOLTAGE | | ||
235 | REGULATOR_CHANGE_STATUS, | ||
236 | .always_on = 1, | ||
237 | .boot_on = 1, | ||
238 | }, | ||
239 | }, | ||
240 | }, | ||
241 | .reg_initvals = { | ||
242 | LDO_A_SETTING, | ||
243 | LDO_C_SETTING, | ||
244 | LDO_E_SETTING, | ||
245 | LDO_E_SLEEP_SETTING, | ||
246 | LDO_F_SETTING, | ||
247 | LDO_G_SETTING, | ||
248 | LDO_H_SETTING, | ||
249 | LDO_K_SETTING, | ||
250 | LDO_EXT_SETTING, | ||
251 | BUCK_SETTING, | ||
252 | BUCK_SLEEP_SETTING, | ||
253 | LDO_D_SETTING, | ||
254 | }, | ||
255 | }; | ||
256 | |||
14 | static struct i2c_board_info __initdata bus0_i2c_board_info[] = { | 257 | static struct i2c_board_info __initdata bus0_i2c_board_info[] = { |
15 | { | 258 | { |
16 | .type = "ab3100", | 259 | .type = "ab3100", |
17 | .addr = 0x48, | 260 | .addr = 0x48, |
18 | .irq = IRQ_U300_IRQ0_EXT, | 261 | .irq = IRQ_U300_IRQ0_EXT, |
262 | .platform_data = &ab3100_plf_data, | ||
19 | }, | 263 | }, |
20 | }; | 264 | }; |
21 | 265 | ||
@@ -38,6 +282,11 @@ void __init u300_i2c_register_board_devices(void) | |||
38 | { | 282 | { |
39 | i2c_register_board_info(0, bus0_i2c_board_info, | 283 | i2c_register_board_info(0, bus0_i2c_board_info, |
40 | ARRAY_SIZE(bus0_i2c_board_info)); | 284 | ARRAY_SIZE(bus0_i2c_board_info)); |
285 | /* | ||
286 | * This makes the core shut down all unused regulators | ||
287 | * after all the initcalls have completed. | ||
288 | */ | ||
289 | regulator_has_full_constraints(); | ||
41 | i2c_register_board_info(1, bus1_i2c_board_info, | 290 | i2c_register_board_info(1, bus1_i2c_board_info, |
42 | ARRAY_SIZE(bus1_i2c_board_info)); | 291 | ARRAY_SIZE(bus1_i2c_board_info)); |
43 | } | 292 | } |
diff --git a/arch/arm/mach-u300/mmc.c b/arch/arm/mach-u300/mmc.c index 7b6b016786bb..109f5a6e71c7 100644 --- a/arch/arm/mach-u300/mmc.c +++ b/arch/arm/mach-u300/mmc.c | |||
@@ -40,64 +40,6 @@ static unsigned int mmc_status(struct device *dev) | |||
40 | return mmci_card->mmc_inserted; | 40 | return mmci_card->mmc_inserted; |
41 | } | 41 | } |
42 | 42 | ||
43 | /* | ||
44 | * Here follows a large chunk of code which will only be enabled if you | ||
45 | * have both the AB3100 chip mounted and the MMC subsystem activated. | ||
46 | */ | ||
47 | |||
48 | static u32 mmc_translate_vdd(struct device *dev, unsigned int voltage) | ||
49 | { | ||
50 | int v; | ||
51 | |||
52 | /* | ||
53 | * MMC Spec: | ||
54 | * bit 7: 1.70 - 1.95V | ||
55 | * bit 8 - 14: 2.0 - 2.6V | ||
56 | * bit 15 - 23: 2.7 - 3.6V | ||
57 | * | ||
58 | * ab3100 voltages: | ||
59 | * 000 - 2.85V | ||
60 | * 001 - 2.75V | ||
61 | * 010 - 1.8V | ||
62 | * 011 - 1.5V | ||
63 | */ | ||
64 | switch (voltage) { | ||
65 | case 8: | ||
66 | v = 3; | ||
67 | break; | ||
68 | case 9: | ||
69 | case 10: | ||
70 | case 11: | ||
71 | case 12: | ||
72 | case 13: | ||
73 | case 14: | ||
74 | case 15: | ||
75 | v = 1; | ||
76 | break; | ||
77 | case 16: | ||
78 | v = 1; | ||
79 | break; | ||
80 | case 17: | ||
81 | case 18: | ||
82 | case 19: | ||
83 | case 20: | ||
84 | case 21: | ||
85 | case 22: | ||
86 | case 23: | ||
87 | case 24: | ||
88 | v = 0; | ||
89 | break; | ||
90 | default: | ||
91 | v = 0; | ||
92 | break; | ||
93 | } | ||
94 | |||
95 | /* PL180 voltage register bits */ | ||
96 | return v << 2; | ||
97 | } | ||
98 | |||
99 | |||
100 | |||
101 | static int mmci_callback(void *data) | 43 | static int mmci_callback(void *data) |
102 | { | 44 | { |
103 | struct mmci_card_event *mmci_card = data; | 45 | struct mmci_card_event *mmci_card = data; |
@@ -154,9 +96,11 @@ int __devinit mmc_init(struct amba_device *adev) | |||
154 | if (!mmci_card) | 96 | if (!mmci_card) |
155 | return -ENOMEM; | 97 | return -ENOMEM; |
156 | 98 | ||
99 | /* | ||
100 | * Do not set ocr_mask or voltage translation function, | ||
101 | * we have a regulator we can control instead. | ||
102 | */ | ||
157 | /* Nominally 2.85V on our platform */ | 103 | /* Nominally 2.85V on our platform */ |
158 | mmci_card->mmc0_plat_data.ocr_mask = MMC_VDD_28_29; | ||
159 | mmci_card->mmc0_plat_data.translate_vdd = mmc_translate_vdd; | ||
160 | mmci_card->mmc0_plat_data.status = mmc_status; | 104 | mmci_card->mmc0_plat_data.status = mmc_status; |
161 | mmci_card->mmc0_plat_data.gpio_wp = -1; | 105 | mmci_card->mmc0_plat_data.gpio_wp = -1; |
162 | mmci_card->mmc0_plat_data.gpio_cd = -1; | 106 | mmci_card->mmc0_plat_data.gpio_cd = -1; |
diff --git a/arch/arm/mach-u300/regulator.c b/arch/arm/mach-u300/regulator.c new file mode 100644 index 000000000000..9c53f01c62eb --- /dev/null +++ b/arch/arm/mach-u300/regulator.c | |||
@@ -0,0 +1,88 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-u300/regulator.c | ||
3 | * | ||
4 | * Copyright (C) 2009 ST-Ericsson AB | ||
5 | * License terms: GNU General Public License (GPL) version 2 | ||
6 | * Handle board-bound regulators and board power not related | ||
7 | * to any devices. | ||
8 | * Author: Linus Walleij <linus.walleij@stericsson.com> | ||
9 | */ | ||
10 | #include <linux/device.h> | ||
11 | #include <linux/signal.h> | ||
12 | #include <linux/err.h> | ||
13 | #include <linux/regulator/consumer.h> | ||
14 | /* Those are just for writing in syscon */ | ||
15 | #include <linux/io.h> | ||
16 | #include <mach/hardware.h> | ||
17 | #include <mach/syscon.h> | ||
18 | |||
19 | /* | ||
20 | * Regulators that power the board and chip and which are | ||
21 | * not copuled to specific drivers are hogged in these | ||
22 | * instances. | ||
23 | */ | ||
24 | static struct regulator *main_power_15; | ||
25 | |||
26 | /* | ||
27 | * This function is used from pm.h to shut down the system by | ||
28 | * resetting all regulators in turn and then disable regulator | ||
29 | * LDO D (main power). | ||
30 | */ | ||
31 | void u300_pm_poweroff(void) | ||
32 | { | ||
33 | sigset_t old, all; | ||
34 | |||
35 | sigfillset(&all); | ||
36 | if (!sigprocmask(SIG_BLOCK, &all, &old)) { | ||
37 | /* Disable LDO D to shut down the system */ | ||
38 | if (main_power_15) | ||
39 | regulator_disable(main_power_15); | ||
40 | else | ||
41 | pr_err("regulator not available to shut down system\n"); | ||
42 | (void) sigprocmask(SIG_SETMASK, &old, NULL); | ||
43 | } | ||
44 | return; | ||
45 | } | ||
46 | |||
47 | /* | ||
48 | * Hog the regulators needed to power up the board. | ||
49 | */ | ||
50 | static int __init u300_init_boardpower(void) | ||
51 | { | ||
52 | int err; | ||
53 | u32 val; | ||
54 | |||
55 | pr_info("U300: setting up board power\n"); | ||
56 | main_power_15 = regulator_get(NULL, "vana15"); | ||
57 | if (IS_ERR(main_power_15)) { | ||
58 | pr_err("could not get vana15"); | ||
59 | return PTR_ERR(main_power_15); | ||
60 | } | ||
61 | err = regulator_enable(main_power_15); | ||
62 | if (err) { | ||
63 | pr_err("could not enable vana15\n"); | ||
64 | return err; | ||
65 | } | ||
66 | |||
67 | /* | ||
68 | * On U300 a special system controller register pulls up the DC | ||
69 | * until the vana15 (LDO D) regulator comes up. At this point, all | ||
70 | * regulators are set and we do not need power control via | ||
71 | * DC ON anymore. This function will likely be moved whenever | ||
72 | * the rest of the U300 power management is implemented. | ||
73 | */ | ||
74 | pr_info("U300: disable system controller pull-up\n"); | ||
75 | val = readw(U300_SYSCON_VBASE + U300_SYSCON_PMCR); | ||
76 | val &= ~U300_SYSCON_PMCR_DCON_ENABLE; | ||
77 | writew(val, U300_SYSCON_VBASE + U300_SYSCON_PMCR); | ||
78 | |||
79 | /* Register globally exported PM poweroff hook */ | ||
80 | pm_power_off = u300_pm_poweroff; | ||
81 | |||
82 | return 0; | ||
83 | } | ||
84 | |||
85 | /* | ||
86 | * So at module init time we hog the regulator! | ||
87 | */ | ||
88 | module_init(u300_init_boardpower); | ||
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig new file mode 100644 index 000000000000..03625d744857 --- /dev/null +++ b/arch/arm/mach-ux500/Kconfig | |||
@@ -0,0 +1,15 @@ | |||
1 | menu "ST-Ericsson platform type" | ||
2 | depends on ARCH_U8500 | ||
3 | |||
4 | comment "ST-Ericsson Multicore Mobile Platforms" | ||
5 | |||
6 | config MACH_U8500_MOP | ||
7 | bool "U8500 Early Development platform" | ||
8 | default y | ||
9 | select ARM_GIC | ||
10 | select HAS_MTU | ||
11 | help | ||
12 | Include support for mop500 development platform | ||
13 | based on U8500 architecture. The platform is based | ||
14 | on early drop silicon version of 8500. | ||
15 | endmenu | ||
diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile new file mode 100644 index 000000000000..95e6e24c0042 --- /dev/null +++ b/arch/arm/mach-ux500/Makefile | |||
@@ -0,0 +1,8 @@ | |||
1 | # | ||
2 | # Makefile for the linux kernel, U8500 machine. | ||
3 | # | ||
4 | |||
5 | obj-y := clock.o | ||
6 | obj-$(CONFIG_ARCH_U8500) += cpu-u8500.o | ||
7 | obj-$(CONFIG_MACH_U8500_MOP) += board-mop500.o | ||
8 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o localtimer.o | ||
diff --git a/arch/arm/mach-ux500/Makefile.boot b/arch/arm/mach-ux500/Makefile.boot new file mode 100644 index 000000000000..c7e75acfe6c9 --- /dev/null +++ b/arch/arm/mach-ux500/Makefile.boot | |||
@@ -0,0 +1,4 @@ | |||
1 | zreladdr-y := 0x00008000 | ||
2 | params_phys-y := 0x00000100 | ||
3 | initrd_phys-y := 0x00800000 | ||
4 | |||
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c new file mode 100644 index 000000000000..aa5afbcc90f9 --- /dev/null +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -0,0 +1,158 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008-2009 ST-Ericsson | ||
3 | * | ||
4 | * Author: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com> | ||
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/kernel.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/interrupt.h> | ||
14 | #include <linux/platform_device.h> | ||
15 | #include <linux/io.h> | ||
16 | #include <linux/amba/bus.h> | ||
17 | #include <linux/amba/pl022.h> | ||
18 | #include <linux/spi/spi.h> | ||
19 | |||
20 | #include <asm/localtimer.h> | ||
21 | #include <asm/mach-types.h> | ||
22 | #include <asm/mach/arch.h> | ||
23 | |||
24 | #include <plat/mtu.h> | ||
25 | |||
26 | #include <mach/hardware.h> | ||
27 | #include <mach/setup.h> | ||
28 | |||
29 | #define __MEM_4K_RESOURCE(x) \ | ||
30 | .res = {.start = (x), .end = (x) + SZ_4K - 1, .flags = IORESOURCE_MEM} | ||
31 | |||
32 | /* These are active devices on this board */ | ||
33 | static struct amba_device uart0_device = { | ||
34 | .dev = { .init_name = "uart0" }, | ||
35 | __MEM_4K_RESOURCE(U8500_UART0_BASE), | ||
36 | .irq = {IRQ_UART0, NO_IRQ}, | ||
37 | }; | ||
38 | |||
39 | static struct amba_device uart1_device = { | ||
40 | .dev = { .init_name = "uart1" }, | ||
41 | __MEM_4K_RESOURCE(U8500_UART1_BASE), | ||
42 | .irq = {IRQ_UART1, NO_IRQ}, | ||
43 | }; | ||
44 | |||
45 | static struct amba_device uart2_device = { | ||
46 | .dev = { .init_name = "uart2" }, | ||
47 | __MEM_4K_RESOURCE(U8500_UART2_BASE), | ||
48 | .irq = {IRQ_UART2, NO_IRQ}, | ||
49 | }; | ||
50 | |||
51 | static void ab4500_spi_cs_control(u32 command) | ||
52 | { | ||
53 | /* set the FRM signal, which is CS - TODO */ | ||
54 | } | ||
55 | |||
56 | struct pl022_config_chip ab4500_chip_info = { | ||
57 | .lbm = LOOPBACK_DISABLED, | ||
58 | .com_mode = INTERRUPT_TRANSFER, | ||
59 | .iface = SSP_INTERFACE_MOTOROLA_SPI, | ||
60 | /* we can act as master only */ | ||
61 | .hierarchy = SSP_MASTER, | ||
62 | .slave_tx_disable = 0, | ||
63 | .endian_rx = SSP_RX_MSB, | ||
64 | .endian_tx = SSP_TX_MSB, | ||
65 | .data_size = SSP_DATA_BITS_24, | ||
66 | .rx_lev_trig = SSP_RX_1_OR_MORE_ELEM, | ||
67 | .tx_lev_trig = SSP_TX_1_OR_MORE_EMPTY_LOC, | ||
68 | .clk_phase = SSP_CLK_SECOND_EDGE, | ||
69 | .clk_pol = SSP_CLK_POL_IDLE_HIGH, | ||
70 | .cs_control = ab4500_spi_cs_control, | ||
71 | }; | ||
72 | |||
73 | static struct spi_board_info u8500_spi_devices[] = { | ||
74 | { | ||
75 | .modalias = "ab4500", | ||
76 | .controller_data = &ab4500_chip_info, | ||
77 | .max_speed_hz = 12000000, | ||
78 | .bus_num = 0, | ||
79 | .chip_select = 0, | ||
80 | .mode = SPI_MODE_0, | ||
81 | .irq = IRQ_AB4500, | ||
82 | }, | ||
83 | }; | ||
84 | |||
85 | static struct pl022_ssp_controller ssp0_platform_data = { | ||
86 | .bus_id = 0, | ||
87 | /* pl022 not yet supports dma */ | ||
88 | .enable_dma = 0, | ||
89 | /* on this platform, gpio 31,142,144,214 & | ||
90 | * 224 are connected as chip selects | ||
91 | */ | ||
92 | .num_chipselect = 5, | ||
93 | }; | ||
94 | |||
95 | static struct amba_device pl022_device = { | ||
96 | .dev = { | ||
97 | .coherent_dma_mask = ~0, | ||
98 | .init_name = "pl022", | ||
99 | .platform_data = &ssp0_platform_data, | ||
100 | }, | ||
101 | .res = { | ||
102 | .start = U8500_SSP0_BASE, | ||
103 | .end = U8500_SSP0_BASE + SZ_4K - 1, | ||
104 | .flags = IORESOURCE_MEM, | ||
105 | }, | ||
106 | .irq = {IRQ_SSP0, NO_IRQ }, | ||
107 | /* ST-Ericsson modified id */ | ||
108 | .periphid = SSP_PER_ID, | ||
109 | }; | ||
110 | |||
111 | static struct amba_device *amba_devs[] __initdata = { | ||
112 | &uart0_device, | ||
113 | &uart1_device, | ||
114 | &uart2_device, | ||
115 | &pl022_device, | ||
116 | }; | ||
117 | |||
118 | static void __init u8500_timer_init(void) | ||
119 | { | ||
120 | #ifdef CONFIG_LOCAL_TIMERS | ||
121 | /* Setup the local timer base */ | ||
122 | twd_base = __io_address(U8500_TWD_BASE); | ||
123 | #endif | ||
124 | /* Setup the MTU base */ | ||
125 | mtu_base = __io_address(U8500_MTU0_BASE); | ||
126 | |||
127 | nmdk_timer_init(); | ||
128 | } | ||
129 | |||
130 | static struct sys_timer u8500_timer = { | ||
131 | .init = u8500_timer_init, | ||
132 | }; | ||
133 | |||
134 | static void __init u8500_init_machine(void) | ||
135 | { | ||
136 | int i; | ||
137 | |||
138 | /* Register the active AMBA devices on this board */ | ||
139 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) | ||
140 | amba_device_register(amba_devs[i], &iomem_resource); | ||
141 | |||
142 | spi_register_board_info(u8500_spi_devices, | ||
143 | ARRAY_SIZE(u8500_spi_devices)); | ||
144 | |||
145 | u8500_init_devices(); | ||
146 | } | ||
147 | |||
148 | MACHINE_START(U8500, "ST-Ericsson MOP500 platform") | ||
149 | /* Maintainer: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> */ | ||
150 | .phys_io = U8500_UART2_BASE, | ||
151 | .io_pg_offst = (IO_ADDRESS(U8500_UART2_BASE) >> 18) & 0xfffc, | ||
152 | .boot_params = 0x100, | ||
153 | .map_io = u8500_map_io, | ||
154 | .init_irq = u8500_init_irq, | ||
155 | /* we re-use nomadik timer here */ | ||
156 | .timer = &u8500_timer, | ||
157 | .init_machine = u8500_init_machine, | ||
158 | MACHINE_END | ||
diff --git a/arch/arm/mach-ux500/clock.c b/arch/arm/mach-ux500/clock.c new file mode 100644 index 000000000000..20b6ebb6783a --- /dev/null +++ b/arch/arm/mach-ux500/clock.c | |||
@@ -0,0 +1,95 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson | ||
3 | * heavily based on realview platform | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | #include <linux/module.h> | ||
10 | #include <linux/kernel.h> | ||
11 | #include <linux/list.h> | ||
12 | #include <linux/errno.h> | ||
13 | #include <linux/err.h> | ||
14 | #include <linux/clk.h> | ||
15 | #include <linux/mutex.h> | ||
16 | |||
17 | #include <asm/clkdev.h> | ||
18 | |||
19 | /* currently the clk structure | ||
20 | * just supports rate. This would | ||
21 | * be extended as and when new devices are | ||
22 | * added - TODO | ||
23 | */ | ||
24 | struct clk { | ||
25 | unsigned long rate; | ||
26 | }; | ||
27 | |||
28 | int clk_enable(struct clk *clk) | ||
29 | { | ||
30 | return 0; | ||
31 | } | ||
32 | EXPORT_SYMBOL(clk_enable); | ||
33 | |||
34 | void clk_disable(struct clk *clk) | ||
35 | { | ||
36 | } | ||
37 | EXPORT_SYMBOL(clk_disable); | ||
38 | |||
39 | unsigned long clk_get_rate(struct clk *clk) | ||
40 | { | ||
41 | return clk->rate; | ||
42 | } | ||
43 | EXPORT_SYMBOL(clk_get_rate); | ||
44 | |||
45 | long clk_round_rate(struct clk *clk, unsigned long rate) | ||
46 | { | ||
47 | /*TODO*/ | ||
48 | return rate; | ||
49 | } | ||
50 | EXPORT_SYMBOL(clk_round_rate); | ||
51 | |||
52 | int clk_set_rate(struct clk *clk, unsigned long rate) | ||
53 | { | ||
54 | clk->rate = rate; | ||
55 | return 0; | ||
56 | } | ||
57 | EXPORT_SYMBOL(clk_set_rate); | ||
58 | |||
59 | /* ssp clock */ | ||
60 | static struct clk ssp_clk = { | ||
61 | .rate = 48000000, | ||
62 | }; | ||
63 | |||
64 | /* fixed clock */ | ||
65 | static struct clk f38_clk = { | ||
66 | .rate = 38400000, | ||
67 | }; | ||
68 | |||
69 | static struct clk_lookup lookups[] = { | ||
70 | { | ||
71 | /* UART0 */ | ||
72 | .dev_id = "uart0", | ||
73 | .clk = &f38_clk, | ||
74 | }, { /* UART1 */ | ||
75 | .dev_id = "uart1", | ||
76 | .clk = &f38_clk, | ||
77 | }, { /* UART2 */ | ||
78 | .dev_id = "uart2", | ||
79 | .clk = &f38_clk, | ||
80 | }, { /* SSP */ | ||
81 | .dev_id = "pl022", | ||
82 | .clk = &ssp_clk, | ||
83 | } | ||
84 | }; | ||
85 | |||
86 | static int __init clk_init(void) | ||
87 | { | ||
88 | int i; | ||
89 | |||
90 | /* register the clock lookups */ | ||
91 | for (i = 0; i < ARRAY_SIZE(lookups); i++) | ||
92 | clkdev_add(&lookups[i]); | ||
93 | return 0; | ||
94 | } | ||
95 | arch_initcall(clk_init); | ||
diff --git a/arch/arm/mach-ux500/cpu-u8500.c b/arch/arm/mach-ux500/cpu-u8500.c new file mode 100644 index 000000000000..5f05e5850f71 --- /dev/null +++ b/arch/arm/mach-ux500/cpu-u8500.c | |||
@@ -0,0 +1,64 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008-2009 ST-Ericsson | ||
3 | * | ||
4 | * Author: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com> | ||
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/types.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/device.h> | ||
14 | #include <linux/amba/bus.h> | ||
15 | #include <linux/irq.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | |||
18 | #include <asm/hardware/gic.h> | ||
19 | #include <asm/mach/map.h> | ||
20 | #include <mach/hardware.h> | ||
21 | |||
22 | /* add any platform devices here - TODO */ | ||
23 | static struct platform_device *platform_devs[] __initdata = { | ||
24 | /* yet to be added, add i2c0, gpio.. */ | ||
25 | }; | ||
26 | |||
27 | #define __IO_DEV_DESC(x, sz) { \ | ||
28 | .virtual = IO_ADDRESS(x), \ | ||
29 | .pfn = __phys_to_pfn(x), \ | ||
30 | .length = sz, \ | ||
31 | .type = MT_DEVICE, \ | ||
32 | } | ||
33 | |||
34 | /* minimum static i/o mapping required to boot U8500 platforms */ | ||
35 | static struct map_desc u8500_io_desc[] __initdata = { | ||
36 | __IO_DEV_DESC(U8500_GIC_CPU_BASE, SZ_4K), | ||
37 | __IO_DEV_DESC(U8500_GIC_DIST_BASE, SZ_4K), | ||
38 | __IO_DEV_DESC(U8500_MTU0_BASE, SZ_4K), | ||
39 | __IO_DEV_DESC(U8500_TWD_BASE, SZ_4K), | ||
40 | __IO_DEV_DESC(U8500_SCU_BASE, SZ_4K), | ||
41 | __IO_DEV_DESC(U8500_BACKUPRAM0_BASE, SZ_8K), | ||
42 | }; | ||
43 | |||
44 | void __init u8500_map_io(void) | ||
45 | { | ||
46 | iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc)); | ||
47 | } | ||
48 | |||
49 | void __init u8500_init_irq(void) | ||
50 | { | ||
51 | gic_dist_init(0, __io_address(U8500_GIC_DIST_BASE), 29); | ||
52 | gic_cpu_init(0, __io_address(U8500_GIC_CPU_BASE)); | ||
53 | } | ||
54 | |||
55 | /* | ||
56 | * This function is called from the board init | ||
57 | */ | ||
58 | void __init u8500_init_devices(void) | ||
59 | { | ||
60 | /* Register the platform devices */ | ||
61 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); | ||
62 | |||
63 | return ; | ||
64 | } | ||
diff --git a/arch/arm/mach-ux500/headsmp.S b/arch/arm/mach-ux500/headsmp.S new file mode 100644 index 000000000000..a6be2cdf2b2f --- /dev/null +++ b/arch/arm/mach-ux500/headsmp.S | |||
@@ -0,0 +1,38 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2009 ST-Ericsson | ||
3 | * This file is based ARM Realview platform | ||
4 | * Copyright (c) 2003 ARM Limited | ||
5 | * All Rights Reserved | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | #include <linux/linkage.h> | ||
12 | #include <linux/init.h> | ||
13 | |||
14 | __INIT | ||
15 | |||
16 | /* | ||
17 | * U8500 specific entry point for secondary CPUs. | ||
18 | */ | ||
19 | ENTRY(u8500_secondary_startup) | ||
20 | mrc p15, 0, r0, c0, c0, 5 | ||
21 | and r0, r0, #15 | ||
22 | adr r4, 1f | ||
23 | ldmia r4, {r5, r6} | ||
24 | sub r4, r4, r5 | ||
25 | add r6, r6, r4 | ||
26 | dsb | ||
27 | pen: ldr r7, [r6] | ||
28 | cmp r7, r0 | ||
29 | bne pen | ||
30 | |||
31 | /* | ||
32 | * we've been released from the holding pen: secondary_stack | ||
33 | * should now contain the SVC stack for this core | ||
34 | */ | ||
35 | b secondary_startup | ||
36 | |||
37 | 1: .long . | ||
38 | .long pen_release | ||
diff --git a/arch/arm/mach-ux500/include/mach/clkdev.h b/arch/arm/mach-ux500/include/mach/clkdev.h new file mode 100644 index 000000000000..04b37a89801c --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/clkdev.h | |||
@@ -0,0 +1,7 @@ | |||
1 | #ifndef __ASM_MACH_CLKDEV_H | ||
2 | #define __ASM_MACH_CLKDEV_H | ||
3 | |||
4 | #define __clk_get(clk) ({ 1; }) | ||
5 | #define __clk_put(clk) do { } while (0) | ||
6 | |||
7 | #endif | ||
diff --git a/arch/arm/mach-ux500/include/mach/debug-macro.S b/arch/arm/mach-ux500/include/mach/debug-macro.S new file mode 100644 index 000000000000..8f21b6a95dce --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/debug-macro.S | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * Debugging macro include header | ||
3 | * | ||
4 | * Copyright (C) 2009 ST-Ericsson | ||
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 | .macro addruart,rx | ||
12 | mrc p15, 0, \rx, c1, c0 | ||
13 | tst \rx, #1 @MMU enabled? | ||
14 | moveq \rx, #0x80000000 @MMU off, Physical address | ||
15 | movne \rx, #0xF0000000 @MMU on, Virtual address | ||
16 | orr \rx, \rx, #0x7000 | ||
17 | .endm | ||
18 | |||
19 | #include <asm/hardware/debug-pl01x.S> | ||
diff --git a/arch/arm/mach-ux500/include/mach/entry-macro.S b/arch/arm/mach-ux500/include/mach/entry-macro.S new file mode 100644 index 000000000000..eece3301fef7 --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/entry-macro.S | |||
@@ -0,0 +1,89 @@ | |||
1 | /* | ||
2 | * Low-level IRQ helper macros for U8500 platforms | ||
3 | * | ||
4 | * Copyright (C) 2009 ST-Ericsson. | ||
5 | * | ||
6 | * This file is a copy of ARM Realview platform. | ||
7 | * -just satisfied checkpatch script. | ||
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 | #include <mach/hardware.h> | ||
14 | #include <asm/hardware/gic.h> | ||
15 | |||
16 | .macro disable_fiq | ||
17 | .endm | ||
18 | |||
19 | .macro get_irqnr_preamble, base, tmp | ||
20 | ldr \base, =IO_ADDRESS(U8500_GIC_CPU_BASE) | ||
21 | .endm | ||
22 | |||
23 | .macro arch_ret_to_user, tmp1, tmp2 | ||
24 | .endm | ||
25 | |||
26 | /* | ||
27 | * The interrupt numbering scheme is defined in the | ||
28 | * interrupt controller spec. To wit: | ||
29 | * | ||
30 | * Interrupts 0-15 are IPI | ||
31 | * 16-28 are reserved | ||
32 | * 29-31 are local. We allow 30 to be used for the watchdog. | ||
33 | * 32-1020 are global | ||
34 | * 1021-1022 are reserved | ||
35 | * 1023 is "spurious" (no interrupt) | ||
36 | * | ||
37 | * For now, we ignore all local interrupts so only return an | ||
38 | * interrupt if it's between 30 and 1020. The test_for_ipi | ||
39 | * routine below will pick up on IPIs. | ||
40 | * | ||
41 | * A simple read from the controller will tell us the number | ||
42 | * of the highest priority enabled interrupt. We then just | ||
43 | * need to check whether it is in the valid range for an | ||
44 | * IRQ (30-1020 inclusive). | ||
45 | */ | ||
46 | |||
47 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
48 | |||
49 | /* bits 12-10 = src CPU, 9-0 = int # */ | ||
50 | ldr \irqstat, [\base, #GIC_CPU_INTACK] | ||
51 | |||
52 | ldr \tmp, =1021 | ||
53 | |||
54 | bic \irqnr, \irqstat, #0x1c00 | ||
55 | |||
56 | cmp \irqnr, #29 | ||
57 | cmpcc \irqnr, \irqnr | ||
58 | cmpne \irqnr, \tmp | ||
59 | cmpcs \irqnr, \irqnr | ||
60 | |||
61 | .endm | ||
62 | |||
63 | /* We assume that irqstat (the raw value of the IRQ | ||
64 | * acknowledge register) is preserved from the macro above. | ||
65 | * If there is an IPI, we immediately signal end of | ||
66 | * interrupt on the controller, since this requires the | ||
67 | * original irqstat value which we won't easily be able | ||
68 | * to recreate later. | ||
69 | */ | ||
70 | |||
71 | .macro test_for_ipi, irqnr, irqstat, base, tmp | ||
72 | bic \irqnr, \irqstat, #0x1c00 | ||
73 | cmp \irqnr, #16 | ||
74 | strcc \irqstat, [\base, #GIC_CPU_EOI] | ||
75 | cmpcs \irqnr, \irqnr | ||
76 | .endm | ||
77 | |||
78 | /* As above, this assumes that irqstat and base | ||
79 | * are preserved.. | ||
80 | */ | ||
81 | |||
82 | .macro test_for_ltirq, irqnr, irqstat, base, tmp | ||
83 | bic \irqnr, \irqstat, #0x1c00 | ||
84 | mov \tmp, #0 | ||
85 | cmp \irqnr, #29 | ||
86 | moveq \tmp, #1 | ||
87 | streq \irqstat, [\base, #GIC_CPU_EOI] | ||
88 | cmp \tmp, #0 | ||
89 | .endm | ||
diff --git a/arch/arm/mach-ux500/include/mach/hardware.h b/arch/arm/mach-ux500/include/mach/hardware.h new file mode 100644 index 000000000000..6da650202dc7 --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/hardware.h | |||
@@ -0,0 +1,131 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson. | ||
3 | * | ||
4 | * U8500 hardware definitions | ||
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 | #ifndef __MACH_HARDWARE_H | ||
11 | #define __MACH_HARDWARE_H | ||
12 | |||
13 | /* macros to get at IO space when running virtually | ||
14 | * We dont map all the peripherals, let ioremap do | ||
15 | * this for us. We map only very basic peripherals here. | ||
16 | */ | ||
17 | #define U8500_IO_VIRTUAL 0xf0000000 | ||
18 | #define U8500_IO_PHYSICAL 0xa0000000 | ||
19 | |||
20 | /* this macro is used in assembly, so no cast */ | ||
21 | #define IO_ADDRESS(x) \ | ||
22 | (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + U8500_IO_VIRTUAL) | ||
23 | |||
24 | /* typesafe io address */ | ||
25 | #define __io_address(n) __io(IO_ADDRESS(n)) | ||
26 | |||
27 | /* | ||
28 | * Base address definitions for U8500 Onchip IPs. All the | ||
29 | * peripherals are contained in a single 1 Mbyte region, with | ||
30 | * AHB peripherals at the bottom and APB peripherals at the | ||
31 | * top of the region. PER stands for PERIPHERAL region which | ||
32 | * itself divided into sub regions. | ||
33 | */ | ||
34 | #define U8500_PER3_BASE 0x80000000 | ||
35 | #define U8500_PER2_BASE 0x80110000 | ||
36 | #define U8500_PER1_BASE 0x80120000 | ||
37 | #define U8500_PER4_BASE 0x80150000 | ||
38 | |||
39 | #define U8500_PER6_BASE 0xa03c0000 | ||
40 | #define U8500_PER5_BASE 0xa03e0000 | ||
41 | #define U8500_PER7_BASE 0xa03d0000 | ||
42 | |||
43 | #define U8500_SVA_BASE 0xa0100000 | ||
44 | #define U8500_SIA_BASE 0xa0200000 | ||
45 | |||
46 | #define U8500_SGA_BASE 0xa0300000 | ||
47 | #define U8500_MCDE_BASE 0xa0350000 | ||
48 | #define U8500_DMA_BASE 0xa0362000 | ||
49 | |||
50 | #define U8500_SCU_BASE 0xa0410000 | ||
51 | #define U8500_GIC_CPU_BASE 0xa0410100 | ||
52 | #define U8500_TWD_BASE 0xa0410600 | ||
53 | #define U8500_GIC_DIST_BASE 0xa0411000 | ||
54 | #define U8500_L2CC_BASE 0xa0412000 | ||
55 | |||
56 | #define U8500_TWD_SIZE 0x100 | ||
57 | |||
58 | /* per7 base addressess */ | ||
59 | #define U8500_CR_BASE (U8500_PER7_BASE + 0x8000) | ||
60 | #define U8500_MTU0_BASE (U8500_PER7_BASE + 0xa000) | ||
61 | #define U8500_MTU1_BASE (U8500_PER7_BASE + 0xb000) | ||
62 | #define U8500_TZPC0_BASE (U8500_PER7_BASE + 0xc000) | ||
63 | #define U8500_CLKRST7_BASE (U8500_PER7_BASE + 0xf000) | ||
64 | |||
65 | /* per6 base addressess */ | ||
66 | #define U8500_RNG_BASE (U8500_PER6_BASE + 0x0000) | ||
67 | #define U8500_PKA_BASE (U8500_PER6_BASE + 0x1000) | ||
68 | #define U8500_PKAM_BASE (U8500_PER6_BASE + 0x2000) | ||
69 | #define U8500_CRYPTO0_BASE (U8500_PER6_BASE + 0xa000) | ||
70 | #define U8500_CRYPTO1_BASE (U8500_PER6_BASE + 0xb000) | ||
71 | #define U8500_CLKRST6_BASE (U8500_PER7_BASE + 0xf000) | ||
72 | |||
73 | /* per5 base addressess */ | ||
74 | #define U8500_USBOTG_BASE (U8500_PER5_BASE + 0x00000) | ||
75 | #define U8500_GPIO5_BASE (U8500_PER5_BASE + 0x1e000) | ||
76 | #define U8500_CLKRST5_BASE (U8500_PER7_BASE + 0x1f000) | ||
77 | |||
78 | /* per4 base addressess */ | ||
79 | #define U8500_BACKUPRAM0_BASE (U8500_PER4_BASE + 0x0000) | ||
80 | #define U8500_BACKUPRAM1_BASE (U8500_PER4_BASE + 0x1000) | ||
81 | #define U8500_RTT0_BASE (U8500_PER4_BASE + 0x2000) | ||
82 | #define U8500_RTT1_BASE (U8500_PER4_BASE + 0x3000) | ||
83 | #define U8500_RTC_BASE (U8500_PER4_BASE + 0x4000) | ||
84 | #define U8500_SCR_BASE (U8500_PER4_BASE + 0x5000) | ||
85 | #define U8500_DMC_BASE (U8500_PER4_BASE + 0x6000) | ||
86 | #define U8500_PRCMU_BASE (U8500_PER4_BASE + 0x7000) | ||
87 | |||
88 | /* per3 base addressess */ | ||
89 | #define U8500_FSMC_BASE (U8500_PER3_BASE + 0x0000) | ||
90 | #define U8500_SSP0_BASE (U8500_PER3_BASE + 0x2000) | ||
91 | #define U8500_SSP1_BASE (U8500_PER3_BASE + 0x3000) | ||
92 | #define U8500_I2C0_BASE (U8500_PER3_BASE + 0x4000) | ||
93 | #define U8500_SDI2_BASE (U8500_PER3_BASE + 0x5000) | ||
94 | #define U8500_SKE_BASE (U8500_PER3_BASE + 0x6000) | ||
95 | #define U8500_UART2_BASE (U8500_PER3_BASE + 0x7000) | ||
96 | #define U8500_SDI5_BASE (U8500_PER3_BASE + 0x8000) | ||
97 | #define U8500_GPIO3_BASE (U8500_PER3_BASE + 0xe000) | ||
98 | #define U8500_CLKRST3_BASE (U8500_PER7_BASE + 0xf000) | ||
99 | |||
100 | /* per2 base addressess */ | ||
101 | #define U8500_I2C3_BASE (U8500_PER2_BASE + 0x0000) | ||
102 | #define U8500_SPI2_BASE (U8500_PER2_BASE + 0x1000) | ||
103 | #define U8500_SPI1_BASE (U8500_PER2_BASE + 0x2000) | ||
104 | #define U8500_PWL_BASE (U8500_PER2_BASE + 0x3000) | ||
105 | #define U8500_SDI4_BASE (U8500_PER2_BASE + 0x4000) | ||
106 | #define U8500_MSP2_BASE (U8500_PER2_BASE + 0x7000) | ||
107 | #define U8500_SDI1_BASE (U8500_PER2_BASE + 0x8000) | ||
108 | #define U8500_SDI3_BASE (U8500_PER2_BASE + 0x9000) | ||
109 | #define U8500_SPI0_BASE (U8500_PER2_BASE + 0xa000) | ||
110 | #define U8500_HSIR_BASE (U8500_PER2_BASE + 0xb000) | ||
111 | #define U8500_HSIT_BASE (U8500_PER2_BASE + 0xc000) | ||
112 | #define U8500_GPIO2_BASE (U8500_PER2_BASE + 0xe000) | ||
113 | #define U8500_CLKRST2_BASE (U8500_PER2_BASE + 0xf000) | ||
114 | |||
115 | /* per1 base addresses */ | ||
116 | #define U8500_UART0_BASE (U8500_PER1_BASE + 0x0000) | ||
117 | #define U8500_UART1_BASE (U8500_PER1_BASE + 0x1000) | ||
118 | #define U8500_I2C1_BASE (U8500_PER1_BASE + 0x2000) | ||
119 | #define U8500_MSP0_BASE (U8500_PER1_BASE + 0x3000) | ||
120 | #define U8500_MSP1_BASE (U8500_PER1_BASE + 0x4000) | ||
121 | #define U8500_SDI0_BASE (U8500_PER1_BASE + 0x6000) | ||
122 | #define U8500_I2C2_BASE (U8500_PER1_BASE + 0x8000) | ||
123 | #define U8500_SPI3_BASE (U8500_PER1_BASE + 0x9000) | ||
124 | #define U8500_SLIM0_BASE (U8500_PER1_BASE + 0xa000) | ||
125 | #define U8500_GPIO1_BASE (U8500_PER1_BASE + 0xe000) | ||
126 | #define U8500_CLKRST1_BASE (U8500_PER2_BASE + 0xf000) | ||
127 | |||
128 | /* ST-Ericsson modified pl022 id */ | ||
129 | #define SSP_PER_ID 0x01080022 | ||
130 | |||
131 | #endif /* __MACH_HARDWARE_H */ | ||
diff --git a/arch/arm/mach-ux500/include/mach/io.h b/arch/arm/mach-ux500/include/mach/io.h new file mode 100644 index 000000000000..1cf3f44ce5b2 --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/io.h | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-u8500/include/mach/io.h | ||
3 | * | ||
4 | * Copyright (C) 1997-1999 Russell King | ||
5 | * | ||
6 | * Modifications: | ||
7 | * 06-12-1997 RMK Created. | ||
8 | * 07-04-1999 RMK Major cleanup | ||
9 | */ | ||
10 | #ifndef __ASM_ARM_ARCH_IO_H | ||
11 | #define __ASM_ARM_ARCH_IO_H | ||
12 | |||
13 | #define IO_SPACE_LIMIT 0xffffffff | ||
14 | |||
15 | /* | ||
16 | * We don't actually have real ISA nor PCI buses, but there is so many | ||
17 | * drivers out there that might just work if we fake them... | ||
18 | */ | ||
19 | #define __io(a) __typesafe_io(a) | ||
20 | #define __mem_pci(a) (a) | ||
21 | |||
22 | #endif | ||
diff --git a/arch/arm/mach-ux500/include/mach/irqs.h b/arch/arm/mach-ux500/include/mach/irqs.h new file mode 100644 index 000000000000..394b5dd2200f --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/irqs.h | |||
@@ -0,0 +1,71 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 STMicroelectronics | ||
3 | * Copyright (C) 2009 ST-Ericsson. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License as published by | ||
7 | * the Free Software Foundation; either version 2 of the License, or | ||
8 | * (at your option) any later version. | ||
9 | */ | ||
10 | #ifndef ASM_ARCH_IRQS_H | ||
11 | #define ASM_ARCH_IRQS_H | ||
12 | |||
13 | #include <mach/hardware.h> | ||
14 | |||
15 | #define IRQ_LOCALTIMER 29 | ||
16 | #define IRQ_LOCALWDOG 30 | ||
17 | |||
18 | /* Shared Peripheral Interrupt (SHPI) */ | ||
19 | #define IRQ_SHPI_START 32 | ||
20 | |||
21 | /* Interrupt numbers generic for shared peripheral */ | ||
22 | #define IRQ_MTU0 (IRQ_SHPI_START + 4) | ||
23 | #define IRQ_SPI2 (IRQ_SHPI_START + 6) | ||
24 | #define IRQ_SPI0 (IRQ_SHPI_START + 8) | ||
25 | #define IRQ_UART0 (IRQ_SHPI_START + 11) | ||
26 | #define IRQ_I2C3 (IRQ_SHPI_START + 12) | ||
27 | #define IRQ_SSP0 (IRQ_SHPI_START + 14) | ||
28 | #define IRQ_MTU1 (IRQ_SHPI_START + 17) | ||
29 | #define IRQ_RTC_RTT (IRQ_SHPI_START + 18) | ||
30 | #define IRQ_UART1 (IRQ_SHPI_START + 19) | ||
31 | #define IRQ_I2C0 (IRQ_SHPI_START + 21) | ||
32 | #define IRQ_I2C1 (IRQ_SHPI_START + 22) | ||
33 | #define IRQ_USBOTG (IRQ_SHPI_START + 23) | ||
34 | #define IRQ_DMA (IRQ_SHPI_START + 25) | ||
35 | #define IRQ_UART2 (IRQ_SHPI_START + 26) | ||
36 | #define IRQ_HSIR_EXCEP (IRQ_SHPI_START + 29) | ||
37 | #define IRQ_MSP0 (IRQ_SHPI_START + 31) | ||
38 | #define IRQ_HSIR_CH0_OVRRUN (IRQ_SHPI_START + 32) | ||
39 | #define IRQ_HSIR_CH1_OVRRUN (IRQ_SHPI_START + 33) | ||
40 | #define IRQ_HSIR_CH2_OVRRUN (IRQ_SHPI_START + 34) | ||
41 | #define IRQ_HSIR_CH3_OVRRUN (IRQ_SHPI_START + 35) | ||
42 | #define IRQ_AB4500 (IRQ_SHPI_START + 40) | ||
43 | #define IRQ_DISP (IRQ_SHPI_START + 48) | ||
44 | #define IRQ_SiPI3 (IRQ_SHPI_START + 49) | ||
45 | #define IRQ_SSP1 (IRQ_SHPI_START + 52) | ||
46 | #define IRQ_I2C2 (IRQ_SHPI_START + 55) | ||
47 | #define IRQ_SDMMC0 (IRQ_SHPI_START + 60) | ||
48 | #define IRQ_MSP1 (IRQ_SHPI_START + 62) | ||
49 | #define IRQ_SPI1 (IRQ_SHPI_START + 96) | ||
50 | #define IRQ_MSP2 (IRQ_SHPI_START + 98) | ||
51 | #define IRQ_SDMMC4 (IRQ_SHPI_START + 99) | ||
52 | #define IRQ_HSIRD0 (IRQ_SHPI_START + 104) | ||
53 | #define IRQ_HSIRD1 (IRQ_SHPI_START + 105) | ||
54 | #define IRQ_HSITD0 (IRQ_SHPI_START + 106) | ||
55 | #define IRQ_HSITD1 (IRQ_SHPI_START + 107) | ||
56 | #define IRQ_GPIO0 (IRQ_SHPI_START + 119) | ||
57 | #define IRQ_GPIO1 (IRQ_SHPI_START + 120) | ||
58 | #define IRQ_GPIO2 (IRQ_SHPI_START + 121) | ||
59 | #define IRQ_GPIO3 (IRQ_SHPI_START + 122) | ||
60 | #define IRQ_GPIO4 (IRQ_SHPI_START + 123) | ||
61 | #define IRQ_GPIO5 (IRQ_SHPI_START + 124) | ||
62 | #define IRQ_GPIO6 (IRQ_SHPI_START + 125) | ||
63 | #define IRQ_GPIO7 (IRQ_SHPI_START + 126) | ||
64 | #define IRQ_GPIO8 (IRQ_SHPI_START + 127) | ||
65 | |||
66 | /* There are 128 shared peripheral interrupts assigned to | ||
67 | * INTID[160:32]. The first 32 interrupts are reserved. | ||
68 | */ | ||
69 | #define NR_IRQS 161 | ||
70 | |||
71 | #endif /*ASM_ARCH_IRQS_H*/ | ||
diff --git a/arch/arm/mach-ux500/include/mach/memory.h b/arch/arm/mach-ux500/include/mach/memory.h new file mode 100644 index 000000000000..510571a59e25 --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/memory.h | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson | ||
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 | #ifndef __ASM_ARCH_MEMORY_H | ||
10 | #define __ASM_ARCH_MEMORY_H | ||
11 | |||
12 | /* | ||
13 | * Physical DRAM offset. | ||
14 | */ | ||
15 | #define PHYS_OFFSET UL(0x00000000) | ||
16 | #define BUS_OFFSET UL(0x00000000) | ||
17 | |||
18 | #endif | ||
diff --git a/arch/arm/mach-ux500/include/mach/setup.h b/arch/arm/mach-ux500/include/mach/setup.h new file mode 100644 index 000000000000..cf0ce1687f24 --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/setup.h | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson. | ||
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 | * These symbols are needed for board-specific files to call their | ||
9 | * own cpu-specific files | ||
10 | */ | ||
11 | #ifndef __ASM_ARCH_SETUP_H | ||
12 | #define __ASM_ARCH_SETUP_H | ||
13 | |||
14 | #include <asm/mach/time.h> | ||
15 | #include <linux/init.h> | ||
16 | |||
17 | extern void u8500_map_io(void); | ||
18 | extern void u8500_init_devices(void); | ||
19 | extern void u8500_init_irq(void); | ||
20 | /* We re-use nomadik_timer for this platform */ | ||
21 | extern void nmdk_timer_init(void); | ||
22 | |||
23 | #endif /* __ASM_ARCH_SETUP_H */ | ||
diff --git a/arch/arm/mach-ux500/include/mach/smp.h b/arch/arm/mach-ux500/include/mach/smp.h new file mode 100644 index 000000000000..b59f7bc9725d --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/smp.h | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * This file is based ARM realview platform. | ||
3 | * Copyright (C) ARM Limited. | ||
4 | * | ||
5 | * This file is licensed under the terms of the GNU General Public | ||
6 | * License version 2. This program is licensed "as is" without any | ||
7 | * warranty of any kind, whether express or implied. | ||
8 | */ | ||
9 | #ifndef ASMARM_ARCH_SMP_H | ||
10 | #define ASMARM_ARCH_SMP_H | ||
11 | |||
12 | #include <asm/hardware/gic.h> | ||
13 | |||
14 | /* This is required to wakeup the secondary core */ | ||
15 | extern void u8500_secondary_startup(void); | ||
16 | |||
17 | #define hard_smp_processor_id() \ | ||
18 | ({ \ | ||
19 | unsigned int cpunum; \ | ||
20 | __asm__("mrc p15, 0, %0, c0, c0, 5" \ | ||
21 | : "=r" (cpunum)); \ | ||
22 | cpunum &= 0x0F; \ | ||
23 | }) | ||
24 | |||
25 | /* | ||
26 | * We use IRQ1 as the IPI | ||
27 | */ | ||
28 | static inline void smp_cross_call(const struct cpumask *mask) | ||
29 | { | ||
30 | gic_raise_softirq(mask, 1); | ||
31 | } | ||
32 | #endif | ||
diff --git a/arch/arm/mach-ux500/include/mach/system.h b/arch/arm/mach-ux500/include/mach/system.h new file mode 100644 index 000000000000..c0cd8006f1a2 --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/system.h | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson. | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | #ifndef __ASM_ARCH_SYSTEM_H | ||
9 | #define __ASM_ARCH_SYSTEM_H | ||
10 | |||
11 | static inline void arch_idle(void) | ||
12 | { | ||
13 | /* | ||
14 | * This should do all the clock switching | ||
15 | * and wait for interrupt tricks | ||
16 | */ | ||
17 | cpu_do_idle(); | ||
18 | } | ||
19 | |||
20 | static inline void arch_reset(char mode, const char *cmd) | ||
21 | { | ||
22 | /* yet to be implemented - TODO */ | ||
23 | } | ||
24 | |||
25 | #endif | ||
diff --git a/arch/arm/mach-ux500/include/mach/timex.h b/arch/arm/mach-ux500/include/mach/timex.h new file mode 100644 index 000000000000..d0942c174018 --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/timex.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __ASM_ARCH_TIMEX_H | ||
2 | #define __ASM_ARCH_TIMEX_H | ||
3 | |||
4 | #define CLOCK_TICK_RATE 110000000 | ||
5 | |||
6 | #endif | ||
diff --git a/arch/arm/mach-ux500/include/mach/uncompress.h b/arch/arm/mach-ux500/include/mach/uncompress.h new file mode 100644 index 000000000000..8552eb188b50 --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/uncompress.h | |||
@@ -0,0 +1,58 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #ifndef __ASM_ARCH_UNCOMPRESS_H | ||
19 | #define __ASM_ARCH_UNCOMPRESS_H | ||
20 | |||
21 | #include <asm/setup.h> | ||
22 | #include <linux/io.h> | ||
23 | #include <mach/hardware.h> | ||
24 | |||
25 | #define U8500_UART_DR 0x80007000 | ||
26 | #define U8500_UART_LCRH 0x8000702c | ||
27 | #define U8500_UART_CR 0x80007030 | ||
28 | #define U8500_UART_FR 0x80007018 | ||
29 | |||
30 | static void putc(const char c) | ||
31 | { | ||
32 | /* Do nothing if the UART is not enabled. */ | ||
33 | if (!(readb(U8500_UART_CR) & 0x1)) | ||
34 | return; | ||
35 | |||
36 | if (c == '\n') | ||
37 | putc('\r'); | ||
38 | |||
39 | while (readb(U8500_UART_FR) & (1 << 5)) | ||
40 | barrier(); | ||
41 | writeb(c, U8500_UART_DR); | ||
42 | } | ||
43 | |||
44 | static void flush(void) | ||
45 | { | ||
46 | if (!(readb(U8500_UART_CR) & 0x1)) | ||
47 | return; | ||
48 | while (readb(U8500_UART_FR) & (1 << 3)) | ||
49 | barrier(); | ||
50 | } | ||
51 | |||
52 | static inline void arch_decomp_setup(void) | ||
53 | { | ||
54 | } | ||
55 | |||
56 | #define arch_decomp_wdog() /* nothing to do here */ | ||
57 | |||
58 | #endif /* __ASM_ARCH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-ux500/include/mach/vmalloc.h b/arch/arm/mach-ux500/include/mach/vmalloc.h new file mode 100644 index 000000000000..86cdbbce1842 --- /dev/null +++ b/arch/arm/mach-ux500/include/mach/vmalloc.h | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #define VMALLOC_END 0xf0000000 | ||
diff --git a/arch/arm/mach-ux500/localtimer.c b/arch/arm/mach-ux500/localtimer.c new file mode 100644 index 000000000000..2288f6a7c518 --- /dev/null +++ b/arch/arm/mach-ux500/localtimer.c | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008-2009 ST-Ericsson | ||
3 | * Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> | ||
4 | * | ||
5 | * This file is heavily based on relaview platform, almost a copy. | ||
6 | * | ||
7 | * Copyright (C) 2002 ARM Ltd. | ||
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 | #include <linux/init.h> | ||
14 | #include <linux/smp.h> | ||
15 | #include <linux/clockchips.h> | ||
16 | |||
17 | #include <asm/irq.h> | ||
18 | #include <asm/smp_twd.h> | ||
19 | #include <asm/localtimer.h> | ||
20 | |||
21 | /* | ||
22 | * Setup the local clock events for a CPU. | ||
23 | */ | ||
24 | void __cpuinit local_timer_setup(struct clock_event_device *evt) | ||
25 | { | ||
26 | evt->irq = IRQ_LOCALTIMER; | ||
27 | twd_timer_setup(evt); | ||
28 | } | ||
diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c new file mode 100644 index 000000000000..8dfe7ca245d8 --- /dev/null +++ b/arch/arm/mach-ux500/platsmp.c | |||
@@ -0,0 +1,177 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2002 ARM Ltd. | ||
3 | * Copyright (C) 2008 STMicroelctronics. | ||
4 | * Copyright (C) 2009 ST-Ericsson. | ||
5 | * Author: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> | ||
6 | * | ||
7 | * This file is based on arm realview platform | ||
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 | #include <linux/init.h> | ||
14 | #include <linux/errno.h> | ||
15 | #include <linux/delay.h> | ||
16 | #include <linux/device.h> | ||
17 | #include <linux/smp.h> | ||
18 | #include <linux/io.h> | ||
19 | |||
20 | #include <asm/cacheflush.h> | ||
21 | #include <asm/localtimer.h> | ||
22 | #include <asm/smp_scu.h> | ||
23 | #include <mach/hardware.h> | ||
24 | |||
25 | /* | ||
26 | * control for which core is the next to come out of the secondary | ||
27 | * boot "holding pen" | ||
28 | */ | ||
29 | volatile int __cpuinitdata pen_release = -1; | ||
30 | |||
31 | static unsigned int __init get_core_count(void) | ||
32 | { | ||
33 | return scu_get_core_count(__io_address(U8500_SCU_BASE)); | ||
34 | } | ||
35 | |||
36 | static DEFINE_SPINLOCK(boot_lock); | ||
37 | |||
38 | void __cpuinit platform_secondary_init(unsigned int cpu) | ||
39 | { | ||
40 | trace_hardirqs_off(); | ||
41 | |||
42 | /* | ||
43 | * if any interrupts are already enabled for the primary | ||
44 | * core (e.g. timer irq), then they will not have been enabled | ||
45 | * for us: do so | ||
46 | */ | ||
47 | gic_cpu_init(0, __io_address(U8500_GIC_CPU_BASE)); | ||
48 | |||
49 | /* | ||
50 | * let the primary processor know we're out of the | ||
51 | * pen, then head off into the C entry point | ||
52 | */ | ||
53 | pen_release = -1; | ||
54 | |||
55 | /* | ||
56 | * Synchronise with the boot thread. | ||
57 | */ | ||
58 | spin_lock(&boot_lock); | ||
59 | spin_unlock(&boot_lock); | ||
60 | } | ||
61 | |||
62 | int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) | ||
63 | { | ||
64 | unsigned long timeout; | ||
65 | |||
66 | /* | ||
67 | * set synchronisation state between this boot processor | ||
68 | * and the secondary one | ||
69 | */ | ||
70 | spin_lock(&boot_lock); | ||
71 | |||
72 | /* | ||
73 | * The secondary processor is waiting to be released from | ||
74 | * the holding pen - release it, then wait for it to flag | ||
75 | * that it has been released by resetting pen_release. | ||
76 | */ | ||
77 | pen_release = cpu; | ||
78 | flush_cache_all(); | ||
79 | |||
80 | timeout = jiffies + (1 * HZ); | ||
81 | while (time_before(jiffies, timeout)) { | ||
82 | if (pen_release == -1) | ||
83 | break; | ||
84 | } | ||
85 | |||
86 | /* | ||
87 | * now the secondary core is starting up let it run its | ||
88 | * calibrations, then wait for it to finish | ||
89 | */ | ||
90 | spin_unlock(&boot_lock); | ||
91 | |||
92 | return pen_release != -1 ? -ENOSYS : 0; | ||
93 | } | ||
94 | |||
95 | static void __init wakeup_secondary(void) | ||
96 | { | ||
97 | /* nobody is to be released from the pen yet */ | ||
98 | pen_release = -1; | ||
99 | |||
100 | /* | ||
101 | * write the address of secondary startup into the backup ram register | ||
102 | * at offset 0x1FF4, then write the magic number 0xA1FEED01 to the | ||
103 | * backup ram register at offset 0x1FF0, which is what boot rom code | ||
104 | * is waiting for. This would wake up the secondary core from WFE | ||
105 | */ | ||
106 | #define U8500_CPU1_JUMPADDR_OFFSET 0x1FF4 | ||
107 | __raw_writel(virt_to_phys(u8500_secondary_startup), | ||
108 | (void __iomem *)IO_ADDRESS(U8500_BACKUPRAM0_BASE) + | ||
109 | U8500_CPU1_JUMPADDR_OFFSET); | ||
110 | |||
111 | #define U8500_CPU1_WAKEMAGIC_OFFSET 0x1FF0 | ||
112 | __raw_writel(0xA1FEED01, | ||
113 | (void __iomem *)IO_ADDRESS(U8500_BACKUPRAM0_BASE) + | ||
114 | U8500_CPU1_WAKEMAGIC_OFFSET); | ||
115 | |||
116 | /* make sure write buffer is drained */ | ||
117 | mb(); | ||
118 | } | ||
119 | |||
120 | /* | ||
121 | * Initialise the CPU possible map early - this describes the CPUs | ||
122 | * which may be present or become present in the system. | ||
123 | */ | ||
124 | void __init smp_init_cpus(void) | ||
125 | { | ||
126 | unsigned int i, ncores = get_core_count(); | ||
127 | |||
128 | for (i = 0; i < ncores; i++) | ||
129 | set_cpu_possible(i, true); | ||
130 | } | ||
131 | |||
132 | void __init smp_prepare_cpus(unsigned int max_cpus) | ||
133 | { | ||
134 | unsigned int ncores = get_core_count(); | ||
135 | unsigned int cpu = smp_processor_id(); | ||
136 | int i; | ||
137 | |||
138 | /* sanity check */ | ||
139 | if (ncores == 0) { | ||
140 | printk(KERN_ERR | ||
141 | "U8500: strange CM count of 0? Default to 1\n"); | ||
142 | ncores = 1; | ||
143 | } | ||
144 | |||
145 | if (ncores > num_possible_cpus()) { | ||
146 | printk(KERN_WARNING | ||
147 | "U8500: no. of cores (%d) greater than configured " | ||
148 | "maximum of %d - clipping\n", | ||
149 | ncores, num_possible_cpus()); | ||
150 | ncores = num_possible_cpus(); | ||
151 | } | ||
152 | |||
153 | smp_store_cpu_info(cpu); | ||
154 | |||
155 | /* | ||
156 | * are we trying to boot more cores than exist? | ||
157 | */ | ||
158 | if (max_cpus > ncores) | ||
159 | max_cpus = ncores; | ||
160 | |||
161 | /* | ||
162 | * Initialise the present map, which describes the set of CPUs | ||
163 | * actually populated at the present time. | ||
164 | */ | ||
165 | for (i = 0; i < max_cpus; i++) | ||
166 | set_cpu_present(i, true); | ||
167 | |||
168 | if (max_cpus > 1) { | ||
169 | /* | ||
170 | * Enable the local timer or broadcast device for the | ||
171 | * boot CPU, but only if we have more than one CPU. | ||
172 | */ | ||
173 | percpu_timer_setup(); | ||
174 | scu_enable(__io_address(U8500_SCU_BASE)); | ||
175 | wakeup_secondary(); | ||
176 | } | ||
177 | } | ||
diff --git a/arch/arm/mach-w90x900/dev.c b/arch/arm/mach-w90x900/dev.c index 2a6f98de48d2..51f17b753348 100644 --- a/arch/arm/mach-w90x900/dev.c +++ b/arch/arm/mach-w90x900/dev.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
33 | 33 | ||
34 | #include <mach/regs-serial.h> | 34 | #include <mach/regs-serial.h> |
35 | #include <mach/nuc900_spi.h> | ||
35 | #include <mach/map.h> | 36 | #include <mach/map.h> |
36 | 37 | ||
37 | #include "cpu.h" | 38 | #include "cpu.h" |
@@ -196,6 +197,18 @@ static struct platform_device nuc900_device_emc = { | |||
196 | 197 | ||
197 | /* SPI device */ | 198 | /* SPI device */ |
198 | 199 | ||
200 | static struct w90p910_spi_info nuc900_spiflash_data = { | ||
201 | .num_cs = 1, | ||
202 | .lsb = 0, | ||
203 | .txneg = 1, | ||
204 | .rxneg = 0, | ||
205 | .divider = 24, | ||
206 | .sleep = 0, | ||
207 | .txnum = 0, | ||
208 | .txbitlen = 1, | ||
209 | .bus_num = 0, | ||
210 | }; | ||
211 | |||
199 | static struct resource nuc900_spi_resource[] = { | 212 | static struct resource nuc900_spi_resource[] = { |
200 | [0] = { | 213 | [0] = { |
201 | .start = W90X900_PA_I2C + SPIOFFSET, | 214 | .start = W90X900_PA_I2C + SPIOFFSET, |
@@ -214,6 +227,9 @@ static struct platform_device nuc900_device_spi = { | |||
214 | .id = -1, | 227 | .id = -1, |
215 | .num_resources = ARRAY_SIZE(nuc900_spi_resource), | 228 | .num_resources = ARRAY_SIZE(nuc900_spi_resource), |
216 | .resource = nuc900_spi_resource, | 229 | .resource = nuc900_spi_resource, |
230 | .dev = { | ||
231 | .platform_data = &nuc900_spiflash_data, | ||
232 | } | ||
217 | }; | 233 | }; |
218 | 234 | ||
219 | /* spi device, spi flash info */ | 235 | /* spi device, spi flash info */ |
diff --git a/arch/arm/plat-nomadik/Kconfig b/arch/arm/plat-nomadik/Kconfig new file mode 100644 index 000000000000..159daf583f85 --- /dev/null +++ b/arch/arm/plat-nomadik/Kconfig | |||
@@ -0,0 +1,22 @@ | |||
1 | # We keep common IP's here for Nomadik and other similar | ||
2 | # familiy of processors from ST-Ericsson. At the moment we have | ||
3 | # just MTU, others to follow soon. | ||
4 | |||
5 | config PLAT_NOMADIK | ||
6 | bool | ||
7 | depends on ARCH_NOMADIK || ARCH_U8500 | ||
8 | default y | ||
9 | help | ||
10 | Common platform code for Nomadik and other ST-Ericsson | ||
11 | platforms. | ||
12 | |||
13 | if PLAT_NOMADIK | ||
14 | |||
15 | config HAS_MTU | ||
16 | bool | ||
17 | help | ||
18 | Support for Multi Timer Unit. MTU provides access | ||
19 | to multiple interrupt generating programmable | ||
20 | 32-bit free running decrementing counters. | ||
21 | |||
22 | endif | ||
diff --git a/arch/arm/plat-nomadik/Makefile b/arch/arm/plat-nomadik/Makefile new file mode 100644 index 000000000000..37c7cdd0f8f0 --- /dev/null +++ b/arch/arm/plat-nomadik/Makefile | |||
@@ -0,0 +1,5 @@ | |||
1 | # arch/arm/plat-nomadik/Makefile | ||
2 | # Copyright 2009 ST-Ericsson | ||
3 | # Licensed under GPLv2 | ||
4 | |||
5 | obj-$(CONFIG_HAS_MTU) += timer.o | ||
diff --git a/arch/arm/mach-nomadik/include/mach/mtu.h b/arch/arm/plat-nomadik/include/plat/mtu.h index 76da7f085330..42c907258b14 100644 --- a/arch/arm/mach-nomadik/include/mach/mtu.h +++ b/arch/arm/plat-nomadik/include/plat/mtu.h | |||
@@ -1,5 +1,8 @@ | |||
1 | #ifndef __ASM_ARCH_MTU_H | 1 | #ifndef __PLAT_MTU_H |
2 | #define __ASM_ARCH_MTU_H | 2 | #define __PLAT_MTU_H |
3 | |||
4 | /* should be set by the platform code */ | ||
5 | extern void __iomem *mtu_base; | ||
3 | 6 | ||
4 | /* | 7 | /* |
5 | * The MTU device hosts four different counters, with 4 set of | 8 | * The MTU device hosts four different counters, with 4 set of |
@@ -41,5 +44,5 @@ | |||
41 | #define MTU_PCELL2 0xff8 | 44 | #define MTU_PCELL2 0xff8 |
42 | #define MTU_PCELL3 0xffC | 45 | #define MTU_PCELL3 0xffC |
43 | 46 | ||
44 | #endif /* __ASM_ARCH_MTU_H */ | 47 | #endif /* __PLAT_MTU_H */ |
45 | 48 | ||
diff --git a/arch/arm/mach-nomadik/timer.c b/arch/arm/plat-nomadik/timer.c index d1738e7061d4..62f18ad43a28 100644 --- a/arch/arm/mach-nomadik/timer.c +++ b/arch/arm/plat-nomadik/timer.c | |||
@@ -15,19 +15,14 @@ | |||
15 | #include <linux/clockchips.h> | 15 | #include <linux/clockchips.h> |
16 | #include <linux/jiffies.h> | 16 | #include <linux/jiffies.h> |
17 | #include <asm/mach/time.h> | 17 | #include <asm/mach/time.h> |
18 | #include <mach/mtu.h> | ||
19 | 18 | ||
20 | #define TIMER_CTRL 0x80 /* No divisor */ | 19 | #include <plat/mtu.h> |
21 | #define TIMER_PERIODIC 0x40 | ||
22 | #define TIMER_SZ32BIT 0x02 | ||
23 | |||
24 | /* Initial value for SRC control register: all timers use MXTAL/8 source */ | ||
25 | #define SRC_CR_INIT_MASK 0x00007fff | ||
26 | #define SRC_CR_INIT_VAL 0x2aaa8000 | ||
27 | 20 | ||
28 | static u32 nmdk_count; /* accumulated count */ | 21 | static u32 nmdk_count; /* accumulated count */ |
29 | static u32 nmdk_cycle; /* write-once */ | 22 | static u32 nmdk_cycle; /* write-once */ |
30 | static __iomem void *mtu_base; | 23 | |
24 | /* setup by the platform code */ | ||
25 | void __iomem *mtu_base; | ||
31 | 26 | ||
32 | /* | 27 | /* |
33 | * clocksource: the MTU device is a decrementing counters, so we negate | 28 | * clocksource: the MTU device is a decrementing counters, so we negate |
@@ -93,7 +88,7 @@ static struct clock_event_device nmdk_clkevt = { | |||
93 | static irqreturn_t nmdk_timer_interrupt(int irq, void *dev_id) | 88 | static irqreturn_t nmdk_timer_interrupt(int irq, void *dev_id) |
94 | { | 89 | { |
95 | /* ack: "interrupt clear register" */ | 90 | /* ack: "interrupt clear register" */ |
96 | writel( 1 << 0, mtu_base + MTU_ICR); | 91 | writel(1 << 0, mtu_base + MTU_ICR); |
97 | 92 | ||
98 | /* we can't count lost ticks, unfortunately */ | 93 | /* we can't count lost ticks, unfortunately */ |
99 | nmdk_count += nmdk_cycle; | 94 | nmdk_count += nmdk_cycle; |
@@ -125,24 +120,14 @@ static void nmdk_timer_reset(void) | |||
125 | writel(cr | MTU_CRn_ENA, mtu_base + MTU_CR(0)); | 120 | writel(cr | MTU_CRn_ENA, mtu_base + MTU_CR(0)); |
126 | } | 121 | } |
127 | 122 | ||
128 | static void __init nmdk_timer_init(void) | 123 | void __init nmdk_timer_init(void) |
129 | { | 124 | { |
130 | u32 src_cr; | ||
131 | unsigned long rate; | 125 | unsigned long rate; |
132 | int bits; | 126 | int bits; |
133 | 127 | ||
134 | rate = CLOCK_TICK_RATE; /* 2.4MHz */ | 128 | rate = CLOCK_TICK_RATE; /* 2.4MHz */ |
135 | nmdk_cycle = (rate + HZ/2) / HZ; | 129 | nmdk_cycle = (rate + HZ/2) / HZ; |
136 | 130 | ||
137 | /* Configure timer sources in "system reset controller" ctrl reg */ | ||
138 | src_cr = readl(io_p2v(NOMADIK_SRC_BASE)); | ||
139 | src_cr &= SRC_CR_INIT_MASK; | ||
140 | src_cr |= SRC_CR_INIT_VAL; | ||
141 | writel(src_cr, io_p2v(NOMADIK_SRC_BASE)); | ||
142 | |||
143 | /* Save global pointer to mtu, used by functions above */ | ||
144 | mtu_base = io_p2v(NOMADIK_MTU0_BASE); | ||
145 | |||
146 | /* Init the timer and register clocksource */ | 131 | /* Init the timer and register clocksource */ |
147 | nmdk_timer_reset(); | 132 | nmdk_timer_reset(); |
148 | 133 | ||
@@ -150,7 +135,9 @@ static void __init nmdk_timer_init(void) | |||
150 | bits = 8*sizeof(nmdk_count); | 135 | bits = 8*sizeof(nmdk_count); |
151 | nmdk_clksrc.mask = CLOCKSOURCE_MASK(bits); | 136 | nmdk_clksrc.mask = CLOCKSOURCE_MASK(bits); |
152 | 137 | ||
153 | clocksource_register(&nmdk_clksrc); | 138 | if (clocksource_register(&nmdk_clksrc)) |
139 | printk(KERN_ERR "timer: failed to initialize clock " | ||
140 | "source %s\n", nmdk_clksrc.name); | ||
154 | 141 | ||
155 | /* Register irq and clockevents */ | 142 | /* Register irq and clockevents */ |
156 | setup_irq(IRQ_MTU0, &nmdk_timer_irq); | 143 | setup_irq(IRQ_MTU0, &nmdk_timer_irq); |
@@ -158,7 +145,3 @@ static void __init nmdk_timer_init(void) | |||
158 | nmdk_clkevt.cpumask = cpumask_of(0); | 145 | nmdk_clkevt.cpumask = cpumask_of(0); |
159 | clockevents_register_device(&nmdk_clkevt); | 146 | clockevents_register_device(&nmdk_clkevt); |
160 | } | 147 | } |
161 | |||
162 | struct sys_timer nomadik_timer = { | ||
163 | .init = nmdk_timer_init, | ||
164 | }; | ||