diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-06-20 05:27:10 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-06-20 05:27:10 -0400 |
commit | 2b1bd1ac5d4bffe3fd542bfe1784a583bd7df4fa (patch) | |
tree | 9c9840807d84cb4d9ca981fbae5093eef1c9ed12 /arch | |
parent | 027e56e68543780870fda74360ca45e392c50e1c (diff) |
sh: Preliminary support for the SH-X3 CPU.
This adds basic support for UP SH-X3.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/Kconfig | 1 | ||||
-rw-r--r-- | arch/sh/configs/shx3_defconfig | 756 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh3/entry.S | 19 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4/probe.c | 8 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/Makefile | 2 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/clock-shx3.c | 135 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-shx3.c | 85 | ||||
-rw-r--r-- | arch/sh/kernel/setup.c | 2 | ||||
-rw-r--r-- | arch/sh/kernel/timers/timer-tmu.c | 7 | ||||
-rw-r--r-- | arch/sh/mm/Kconfig | 9 |
10 files changed, 1020 insertions, 4 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index b16407c9f2c4..d82caffd1da6 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -598,6 +598,7 @@ config NR_CPUS | |||
598 | int "Maximum number of CPUs (2-32)" | 598 | int "Maximum number of CPUs (2-32)" |
599 | range 2 32 | 599 | range 2 32 |
600 | depends on SMP | 600 | depends on SMP |
601 | default "4" if CPU_SHX3 | ||
601 | default "2" | 602 | default "2" |
602 | help | 603 | help |
603 | This allows you to specify the maximum number of CPUs which this | 604 | This allows you to specify the maximum number of CPUs which this |
diff --git a/arch/sh/configs/shx3_defconfig b/arch/sh/configs/shx3_defconfig new file mode 100644 index 000000000000..219bad558b10 --- /dev/null +++ b/arch/sh/configs/shx3_defconfig | |||
@@ -0,0 +1,756 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.22-rc4 | ||
4 | # Wed Jun 20 14:09:27 2007 | ||
5 | # | ||
6 | CONFIG_SUPERH=y | ||
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
8 | CONFIG_GENERIC_BUG=y | ||
9 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
10 | CONFIG_GENERIC_HWEIGHT=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_GENERIC_IRQ_PROBE=y | ||
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
14 | CONFIG_GENERIC_TIME=y | ||
15 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
16 | CONFIG_STACKTRACE_SUPPORT=y | ||
17 | CONFIG_LOCKDEP_SUPPORT=y | ||
18 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
19 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
21 | |||
22 | # | ||
23 | # Code maturity level options | ||
24 | # | ||
25 | CONFIG_EXPERIMENTAL=y | ||
26 | CONFIG_BROKEN_ON_SMP=y | ||
27 | CONFIG_LOCK_KERNEL=y | ||
28 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
29 | |||
30 | # | ||
31 | # General setup | ||
32 | # | ||
33 | CONFIG_LOCALVERSION="" | ||
34 | CONFIG_LOCALVERSION_AUTO=y | ||
35 | CONFIG_SWAP=y | ||
36 | CONFIG_SYSVIPC=y | ||
37 | # CONFIG_IPC_NS is not set | ||
38 | CONFIG_SYSVIPC_SYSCTL=y | ||
39 | CONFIG_BSD_PROCESS_ACCT=y | ||
40 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
41 | # CONFIG_UTS_NS is not set | ||
42 | CONFIG_IKCONFIG=y | ||
43 | CONFIG_IKCONFIG_PROC=y | ||
44 | CONFIG_LOG_BUF_SHIFT=14 | ||
45 | # CONFIG_SYSFS_DEPRECATED is not set | ||
46 | # CONFIG_RELAY is not set | ||
47 | CONFIG_BLK_DEV_INITRD=y | ||
48 | CONFIG_INITRAMFS_SOURCE="" | ||
49 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
50 | CONFIG_SYSCTL=y | ||
51 | CONFIG_EMBEDDED=y | ||
52 | CONFIG_UID16=y | ||
53 | CONFIG_SYSCTL_SYSCALL=y | ||
54 | CONFIG_KALLSYMS=y | ||
55 | CONFIG_KALLSYMS_ALL=y | ||
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
57 | CONFIG_HOTPLUG=y | ||
58 | CONFIG_PRINTK=y | ||
59 | CONFIG_BUG=y | ||
60 | CONFIG_ELF_CORE=y | ||
61 | CONFIG_BASE_FULL=y | ||
62 | CONFIG_FUTEX=y | ||
63 | CONFIG_ANON_INODES=y | ||
64 | CONFIG_EPOLL=y | ||
65 | CONFIG_SIGNALFD=y | ||
66 | CONFIG_TIMERFD=y | ||
67 | CONFIG_EVENTFD=y | ||
68 | CONFIG_SHMEM=y | ||
69 | CONFIG_VM_EVENT_COUNTERS=y | ||
70 | CONFIG_SLAB=y | ||
71 | # CONFIG_SLUB is not set | ||
72 | # CONFIG_SLOB is not set | ||
73 | CONFIG_RT_MUTEXES=y | ||
74 | # CONFIG_TINY_SHMEM is not set | ||
75 | CONFIG_BASE_SMALL=0 | ||
76 | |||
77 | # | ||
78 | # Loadable module support | ||
79 | # | ||
80 | CONFIG_MODULES=y | ||
81 | CONFIG_MODULE_UNLOAD=y | ||
82 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
83 | # CONFIG_MODVERSIONS is not set | ||
84 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
85 | CONFIG_KMOD=y | ||
86 | |||
87 | # | ||
88 | # Block layer | ||
89 | # | ||
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | |||
95 | # | ||
96 | # IO Schedulers | ||
97 | # | ||
98 | CONFIG_IOSCHED_NOOP=y | ||
99 | # CONFIG_IOSCHED_AS is not set | ||
100 | # CONFIG_IOSCHED_DEADLINE is not set | ||
101 | # CONFIG_IOSCHED_CFQ is not set | ||
102 | # CONFIG_DEFAULT_AS is not set | ||
103 | # CONFIG_DEFAULT_DEADLINE is not set | ||
104 | # CONFIG_DEFAULT_CFQ is not set | ||
105 | CONFIG_DEFAULT_NOOP=y | ||
106 | CONFIG_DEFAULT_IOSCHED="noop" | ||
107 | |||
108 | # | ||
109 | # System type | ||
110 | # | ||
111 | CONFIG_CPU_SH4=y | ||
112 | CONFIG_CPU_SH4A=y | ||
113 | CONFIG_CPU_SHX3=y | ||
114 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | ||
115 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | ||
116 | # CONFIG_CPU_SUBTYPE_SH7300 is not set | ||
117 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | ||
118 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | ||
119 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | ||
120 | # CONFIG_CPU_SUBTYPE_SH7708 is not set | ||
121 | # CONFIG_CPU_SUBTYPE_SH7709 is not set | ||
122 | # CONFIG_CPU_SUBTYPE_SH7710 is not set | ||
123 | # CONFIG_CPU_SUBTYPE_SH7712 is not set | ||
124 | # CONFIG_CPU_SUBTYPE_SH7750 is not set | ||
125 | # CONFIG_CPU_SUBTYPE_SH7091 is not set | ||
126 | # CONFIG_CPU_SUBTYPE_SH7750R is not set | ||
127 | # CONFIG_CPU_SUBTYPE_SH7750S is not set | ||
128 | # CONFIG_CPU_SUBTYPE_SH7751 is not set | ||
129 | # CONFIG_CPU_SUBTYPE_SH7751R is not set | ||
130 | # CONFIG_CPU_SUBTYPE_SH7760 is not set | ||
131 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set | ||
132 | # CONFIG_CPU_SUBTYPE_ST40STB1 is not set | ||
133 | # CONFIG_CPU_SUBTYPE_ST40GX1 is not set | ||
134 | # CONFIG_CPU_SUBTYPE_SH7770 is not set | ||
135 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | ||
136 | # CONFIG_CPU_SUBTYPE_SH7785 is not set | ||
137 | CONFIG_CPU_SUBTYPE_SHX3=y | ||
138 | # CONFIG_CPU_SUBTYPE_SH73180 is not set | ||
139 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | ||
140 | # CONFIG_CPU_SUBTYPE_SH7722 is not set | ||
141 | |||
142 | # | ||
143 | # Memory management options | ||
144 | # | ||
145 | CONFIG_QUICKLIST=y | ||
146 | CONFIG_MMU=y | ||
147 | CONFIG_PAGE_OFFSET=0x80000000 | ||
148 | CONFIG_MEMORY_START=0x0c000000 | ||
149 | CONFIG_MEMORY_SIZE=0x04000000 | ||
150 | CONFIG_VSYSCALL=y | ||
151 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
152 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
153 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | ||
154 | CONFIG_MAX_ACTIVE_REGIONS=1 | ||
155 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
156 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
157 | CONFIG_PAGE_SIZE_4KB=y | ||
158 | # CONFIG_PAGE_SIZE_8KB is not set | ||
159 | # CONFIG_PAGE_SIZE_64KB is not set | ||
160 | CONFIG_HUGETLB_PAGE_SIZE_64K=y | ||
161 | # CONFIG_HUGETLB_PAGE_SIZE_256K is not set | ||
162 | # CONFIG_HUGETLB_PAGE_SIZE_1MB is not set | ||
163 | # CONFIG_HUGETLB_PAGE_SIZE_4MB is not set | ||
164 | # CONFIG_HUGETLB_PAGE_SIZE_64MB is not set | ||
165 | CONFIG_SELECT_MEMORY_MODEL=y | ||
166 | CONFIG_FLATMEM_MANUAL=y | ||
167 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
168 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
169 | CONFIG_FLATMEM=y | ||
170 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
171 | CONFIG_SPARSEMEM_STATIC=y | ||
172 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
173 | # CONFIG_RESOURCES_64BIT is not set | ||
174 | CONFIG_ZONE_DMA_FLAG=0 | ||
175 | CONFIG_NR_QUICK=2 | ||
176 | |||
177 | # | ||
178 | # Cache configuration | ||
179 | # | ||
180 | # CONFIG_SH_DIRECT_MAPPED is not set | ||
181 | # CONFIG_SH_WRITETHROUGH is not set | ||
182 | |||
183 | # | ||
184 | # Processor features | ||
185 | # | ||
186 | CONFIG_CPU_LITTLE_ENDIAN=y | ||
187 | # CONFIG_CPU_BIG_ENDIAN is not set | ||
188 | # CONFIG_SH_FPU is not set | ||
189 | # CONFIG_SH_FPU_EMU is not set | ||
190 | CONFIG_SH_DSP=y | ||
191 | CONFIG_SH_STORE_QUEUES=y | ||
192 | CONFIG_CPU_HAS_INTEVT=y | ||
193 | CONFIG_CPU_HAS_INTC2_IRQ=y | ||
194 | CONFIG_CPU_HAS_SR_RB=y | ||
195 | |||
196 | # | ||
197 | # Board support | ||
198 | # | ||
199 | |||
200 | # | ||
201 | # Timer and clock configuration | ||
202 | # | ||
203 | CONFIG_SH_TMU=y | ||
204 | CONFIG_SH_TIMER_IRQ=16 | ||
205 | CONFIG_SH_PCLK_FREQ=50000000 | ||
206 | CONFIG_TICK_ONESHOT=y | ||
207 | CONFIG_NO_HZ=y | ||
208 | CONFIG_HIGH_RES_TIMERS=y | ||
209 | |||
210 | # | ||
211 | # CPU Frequency scaling | ||
212 | # | ||
213 | # CONFIG_CPU_FREQ is not set | ||
214 | |||
215 | # | ||
216 | # DMA support | ||
217 | # | ||
218 | # CONFIG_SH_DMA is not set | ||
219 | |||
220 | # | ||
221 | # Companion Chips | ||
222 | # | ||
223 | |||
224 | # | ||
225 | # Additional SuperH Device Drivers | ||
226 | # | ||
227 | CONFIG_HEARTBEAT=y | ||
228 | # CONFIG_PUSH_SWITCH is not set | ||
229 | |||
230 | # | ||
231 | # Kernel features | ||
232 | # | ||
233 | # CONFIG_HZ_100 is not set | ||
234 | CONFIG_HZ_250=y | ||
235 | # CONFIG_HZ_300 is not set | ||
236 | # CONFIG_HZ_1000 is not set | ||
237 | CONFIG_HZ=250 | ||
238 | CONFIG_KEXEC=y | ||
239 | # CONFIG_CRASH_DUMP is not set | ||
240 | # CONFIG_PREEMPT_NONE is not set | ||
241 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
242 | CONFIG_PREEMPT=y | ||
243 | CONFIG_PREEMPT_BKL=y | ||
244 | |||
245 | # | ||
246 | # Boot options | ||
247 | # | ||
248 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 | ||
249 | CONFIG_BOOT_LINK_OFFSET=0x00800000 | ||
250 | # CONFIG_UBC_WAKEUP is not set | ||
251 | CONFIG_CMDLINE_BOOL=y | ||
252 | CONFIG_CMDLINE="console=ttySC0,115200 ip=192.168.1.2:::255.255.255.0 root=/dev/nfs nfsroot=192.168.1.1:/exports/devel/rfs/mobiler noaliencache earlyprintk=bios ignore_loglevel" | ||
253 | |||
254 | # | ||
255 | # Bus options | ||
256 | # | ||
257 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
258 | |||
259 | # | ||
260 | # PCCARD (PCMCIA/CardBus) support | ||
261 | # | ||
262 | # CONFIG_PCCARD is not set | ||
263 | |||
264 | # | ||
265 | # Executable file formats | ||
266 | # | ||
267 | CONFIG_BINFMT_ELF=y | ||
268 | # CONFIG_BINFMT_MISC is not set | ||
269 | |||
270 | # | ||
271 | # Networking | ||
272 | # | ||
273 | # CONFIG_NET is not set | ||
274 | |||
275 | # | ||
276 | # Device Drivers | ||
277 | # | ||
278 | |||
279 | # | ||
280 | # Generic Driver Options | ||
281 | # | ||
282 | CONFIG_STANDALONE=y | ||
283 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
284 | # CONFIG_FW_LOADER is not set | ||
285 | # CONFIG_DEBUG_DRIVER is not set | ||
286 | # CONFIG_DEBUG_DEVRES is not set | ||
287 | # CONFIG_SYS_HYPERVISOR is not set | ||
288 | |||
289 | # | ||
290 | # Connector - unified userspace <-> kernelspace linker | ||
291 | # | ||
292 | # CONFIG_MTD is not set | ||
293 | |||
294 | # | ||
295 | # Parallel port support | ||
296 | # | ||
297 | # CONFIG_PARPORT is not set | ||
298 | |||
299 | # | ||
300 | # Plug and Play support | ||
301 | # | ||
302 | # CONFIG_PNPACPI is not set | ||
303 | |||
304 | # | ||
305 | # Block devices | ||
306 | # | ||
307 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
308 | # CONFIG_BLK_DEV_LOOP is not set | ||
309 | CONFIG_BLK_DEV_RAM=y | ||
310 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
311 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
312 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
313 | # CONFIG_CDROM_PKTCDVD is not set | ||
314 | |||
315 | # | ||
316 | # Misc devices | ||
317 | # | ||
318 | # CONFIG_BLINK is not set | ||
319 | # CONFIG_IDE is not set | ||
320 | |||
321 | # | ||
322 | # SCSI device support | ||
323 | # | ||
324 | # CONFIG_RAID_ATTRS is not set | ||
325 | CONFIG_SCSI=y | ||
326 | # CONFIG_SCSI_TGT is not set | ||
327 | # CONFIG_SCSI_NETLINK is not set | ||
328 | CONFIG_SCSI_PROC_FS=y | ||
329 | |||
330 | # | ||
331 | # SCSI support type (disk, tape, CD-ROM) | ||
332 | # | ||
333 | CONFIG_BLK_DEV_SD=y | ||
334 | # CONFIG_CHR_DEV_ST is not set | ||
335 | # CONFIG_CHR_DEV_OSST is not set | ||
336 | # CONFIG_BLK_DEV_SR is not set | ||
337 | # CONFIG_CHR_DEV_SG is not set | ||
338 | # CONFIG_CHR_DEV_SCH is not set | ||
339 | |||
340 | # | ||
341 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
342 | # | ||
343 | # CONFIG_SCSI_MULTI_LUN is not set | ||
344 | # CONFIG_SCSI_CONSTANTS is not set | ||
345 | # CONFIG_SCSI_LOGGING is not set | ||
346 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
347 | CONFIG_SCSI_WAIT_SCAN=m | ||
348 | |||
349 | # | ||
350 | # SCSI Transports | ||
351 | # | ||
352 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
353 | # CONFIG_SCSI_FC_ATTRS is not set | ||
354 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
355 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
356 | |||
357 | # | ||
358 | # SCSI low-level drivers | ||
359 | # | ||
360 | # CONFIG_SCSI_DEBUG is not set | ||
361 | CONFIG_ATA=y | ||
362 | # CONFIG_ATA_NONSTANDARD is not set | ||
363 | CONFIG_PATA_PLATFORM=y | ||
364 | |||
365 | # | ||
366 | # Multi-device support (RAID and LVM) | ||
367 | # | ||
368 | # CONFIG_MD is not set | ||
369 | |||
370 | # | ||
371 | # ISDN subsystem | ||
372 | # | ||
373 | |||
374 | # | ||
375 | # Telephony Support | ||
376 | # | ||
377 | # CONFIG_PHONE is not set | ||
378 | |||
379 | # | ||
380 | # Input device support | ||
381 | # | ||
382 | CONFIG_INPUT=y | ||
383 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
384 | |||
385 | # | ||
386 | # Userland interfaces | ||
387 | # | ||
388 | CONFIG_INPUT_MOUSEDEV=y | ||
389 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
390 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
391 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
392 | # CONFIG_INPUT_JOYDEV is not set | ||
393 | # CONFIG_INPUT_TSDEV is not set | ||
394 | # CONFIG_INPUT_EVDEV is not set | ||
395 | # CONFIG_INPUT_EVBUG is not set | ||
396 | |||
397 | # | ||
398 | # Input Device Drivers | ||
399 | # | ||
400 | CONFIG_INPUT_KEYBOARD=y | ||
401 | CONFIG_KEYBOARD_ATKBD=y | ||
402 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
403 | # CONFIG_KEYBOARD_LKKBD is not set | ||
404 | # CONFIG_KEYBOARD_XTKBD is not set | ||
405 | # CONFIG_KEYBOARD_NEWTON is not set | ||
406 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
407 | # CONFIG_INPUT_MOUSE is not set | ||
408 | # CONFIG_INPUT_JOYSTICK is not set | ||
409 | # CONFIG_INPUT_TABLET is not set | ||
410 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
411 | # CONFIG_INPUT_MISC is not set | ||
412 | |||
413 | # | ||
414 | # Hardware I/O ports | ||
415 | # | ||
416 | CONFIG_SERIO=y | ||
417 | # CONFIG_SERIO_I8042 is not set | ||
418 | # CONFIG_SERIO_SERPORT is not set | ||
419 | CONFIG_SERIO_LIBPS2=y | ||
420 | # CONFIG_SERIO_RAW is not set | ||
421 | # CONFIG_GAMEPORT is not set | ||
422 | |||
423 | # | ||
424 | # Character devices | ||
425 | # | ||
426 | # CONFIG_VT is not set | ||
427 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
428 | |||
429 | # | ||
430 | # Serial drivers | ||
431 | # | ||
432 | # CONFIG_SERIAL_8250 is not set | ||
433 | |||
434 | # | ||
435 | # Non-8250 serial port support | ||
436 | # | ||
437 | CONFIG_SERIAL_SH_SCI=y | ||
438 | CONFIG_SERIAL_SH_SCI_NR_UARTS=2 | ||
439 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | ||
440 | CONFIG_SERIAL_CORE=y | ||
441 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
442 | CONFIG_UNIX98_PTYS=y | ||
443 | CONFIG_LEGACY_PTYS=y | ||
444 | CONFIG_LEGACY_PTY_COUNT=256 | ||
445 | |||
446 | # | ||
447 | # IPMI | ||
448 | # | ||
449 | # CONFIG_IPMI_HANDLER is not set | ||
450 | # CONFIG_WATCHDOG is not set | ||
451 | CONFIG_HW_RANDOM=y | ||
452 | # CONFIG_R3964 is not set | ||
453 | # CONFIG_RAW_DRIVER is not set | ||
454 | |||
455 | # | ||
456 | # TPM devices | ||
457 | # | ||
458 | # CONFIG_TCG_TPM is not set | ||
459 | # CONFIG_I2C is not set | ||
460 | |||
461 | # | ||
462 | # SPI support | ||
463 | # | ||
464 | # CONFIG_SPI is not set | ||
465 | # CONFIG_SPI_MASTER is not set | ||
466 | |||
467 | # | ||
468 | # Dallas's 1-wire bus | ||
469 | # | ||
470 | # CONFIG_W1 is not set | ||
471 | # CONFIG_HWMON is not set | ||
472 | |||
473 | # | ||
474 | # Multifunction device drivers | ||
475 | # | ||
476 | # CONFIG_MFD_SM501 is not set | ||
477 | |||
478 | # | ||
479 | # Multimedia devices | ||
480 | # | ||
481 | # CONFIG_VIDEO_DEV is not set | ||
482 | # CONFIG_DAB is not set | ||
483 | |||
484 | # | ||
485 | # Graphics support | ||
486 | # | ||
487 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
488 | |||
489 | # | ||
490 | # Display device support | ||
491 | # | ||
492 | # CONFIG_DISPLAY_SUPPORT is not set | ||
493 | # CONFIG_VGASTATE is not set | ||
494 | # CONFIG_FB is not set | ||
495 | |||
496 | # | ||
497 | # Sound | ||
498 | # | ||
499 | # CONFIG_SOUND is not set | ||
500 | |||
501 | # | ||
502 | # HID Devices | ||
503 | # | ||
504 | # CONFIG_HID is not set | ||
505 | |||
506 | # | ||
507 | # USB support | ||
508 | # | ||
509 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
510 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
511 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
512 | |||
513 | # | ||
514 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
515 | # | ||
516 | |||
517 | # | ||
518 | # USB Gadget Support | ||
519 | # | ||
520 | # CONFIG_USB_GADGET is not set | ||
521 | # CONFIG_MMC is not set | ||
522 | |||
523 | # | ||
524 | # LED devices | ||
525 | # | ||
526 | # CONFIG_NEW_LEDS is not set | ||
527 | |||
528 | # | ||
529 | # LED drivers | ||
530 | # | ||
531 | |||
532 | # | ||
533 | # LED Triggers | ||
534 | # | ||
535 | |||
536 | # | ||
537 | # InfiniBand support | ||
538 | # | ||
539 | |||
540 | # | ||
541 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
542 | # | ||
543 | |||
544 | # | ||
545 | # Real Time Clock | ||
546 | # | ||
547 | CONFIG_RTC_LIB=y | ||
548 | CONFIG_RTC_CLASS=y | ||
549 | CONFIG_RTC_HCTOSYS=y | ||
550 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
551 | # CONFIG_RTC_DEBUG is not set | ||
552 | |||
553 | # | ||
554 | # RTC interfaces | ||
555 | # | ||
556 | CONFIG_RTC_INTF_SYSFS=y | ||
557 | CONFIG_RTC_INTF_PROC=y | ||
558 | CONFIG_RTC_INTF_DEV=y | ||
559 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
560 | # CONFIG_RTC_DRV_TEST is not set | ||
561 | |||
562 | # | ||
563 | # I2C RTC drivers | ||
564 | # | ||
565 | |||
566 | # | ||
567 | # SPI RTC drivers | ||
568 | # | ||
569 | |||
570 | # | ||
571 | # Platform RTC drivers | ||
572 | # | ||
573 | # CONFIG_RTC_DRV_DS1553 is not set | ||
574 | # CONFIG_RTC_DRV_DS1742 is not set | ||
575 | # CONFIG_RTC_DRV_M48T86 is not set | ||
576 | # CONFIG_RTC_DRV_V3020 is not set | ||
577 | |||
578 | # | ||
579 | # on-CPU RTC drivers | ||
580 | # | ||
581 | CONFIG_RTC_DRV_SH=y | ||
582 | |||
583 | # | ||
584 | # DMA Engine support | ||
585 | # | ||
586 | # CONFIG_DMA_ENGINE is not set | ||
587 | |||
588 | # | ||
589 | # DMA Clients | ||
590 | # | ||
591 | |||
592 | # | ||
593 | # DMA Devices | ||
594 | # | ||
595 | |||
596 | # | ||
597 | # File systems | ||
598 | # | ||
599 | CONFIG_EXT2_FS=y | ||
600 | # CONFIG_EXT2_FS_XATTR is not set | ||
601 | # CONFIG_EXT2_FS_XIP is not set | ||
602 | CONFIG_EXT3_FS=y | ||
603 | CONFIG_EXT3_FS_XATTR=y | ||
604 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
605 | # CONFIG_EXT3_FS_SECURITY is not set | ||
606 | # CONFIG_EXT4DEV_FS is not set | ||
607 | CONFIG_JBD=y | ||
608 | # CONFIG_JBD_DEBUG is not set | ||
609 | CONFIG_FS_MBCACHE=y | ||
610 | # CONFIG_REISERFS_FS is not set | ||
611 | # CONFIG_JFS_FS is not set | ||
612 | # CONFIG_FS_POSIX_ACL is not set | ||
613 | # CONFIG_XFS_FS is not set | ||
614 | # CONFIG_GFS2_FS is not set | ||
615 | # CONFIG_MINIX_FS is not set | ||
616 | # CONFIG_ROMFS_FS is not set | ||
617 | CONFIG_INOTIFY=y | ||
618 | CONFIG_INOTIFY_USER=y | ||
619 | # CONFIG_QUOTA is not set | ||
620 | CONFIG_DNOTIFY=y | ||
621 | # CONFIG_AUTOFS_FS is not set | ||
622 | # CONFIG_AUTOFS4_FS is not set | ||
623 | # CONFIG_FUSE_FS is not set | ||
624 | |||
625 | # | ||
626 | # CD-ROM/DVD Filesystems | ||
627 | # | ||
628 | # CONFIG_ISO9660_FS is not set | ||
629 | # CONFIG_UDF_FS is not set | ||
630 | |||
631 | # | ||
632 | # DOS/FAT/NT Filesystems | ||
633 | # | ||
634 | # CONFIG_MSDOS_FS is not set | ||
635 | # CONFIG_VFAT_FS is not set | ||
636 | # CONFIG_NTFS_FS is not set | ||
637 | |||
638 | # | ||
639 | # Pseudo filesystems | ||
640 | # | ||
641 | CONFIG_PROC_FS=y | ||
642 | CONFIG_PROC_KCORE=y | ||
643 | CONFIG_PROC_SYSCTL=y | ||
644 | CONFIG_SYSFS=y | ||
645 | CONFIG_TMPFS=y | ||
646 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
647 | CONFIG_HUGETLBFS=y | ||
648 | CONFIG_HUGETLB_PAGE=y | ||
649 | CONFIG_RAMFS=y | ||
650 | # CONFIG_CONFIGFS_FS is not set | ||
651 | |||
652 | # | ||
653 | # Miscellaneous filesystems | ||
654 | # | ||
655 | # CONFIG_ADFS_FS is not set | ||
656 | # CONFIG_AFFS_FS is not set | ||
657 | # CONFIG_HFS_FS is not set | ||
658 | # CONFIG_HFSPLUS_FS is not set | ||
659 | # CONFIG_BEFS_FS is not set | ||
660 | # CONFIG_BFS_FS is not set | ||
661 | # CONFIG_EFS_FS is not set | ||
662 | # CONFIG_CRAMFS is not set | ||
663 | # CONFIG_VXFS_FS is not set | ||
664 | # CONFIG_HPFS_FS is not set | ||
665 | # CONFIG_QNX4FS_FS is not set | ||
666 | # CONFIG_SYSV_FS is not set | ||
667 | # CONFIG_UFS_FS is not set | ||
668 | |||
669 | # | ||
670 | # Partition Types | ||
671 | # | ||
672 | # CONFIG_PARTITION_ADVANCED is not set | ||
673 | CONFIG_MSDOS_PARTITION=y | ||
674 | |||
675 | # | ||
676 | # Native Language Support | ||
677 | # | ||
678 | # CONFIG_NLS is not set | ||
679 | |||
680 | # | ||
681 | # Profiling support | ||
682 | # | ||
683 | CONFIG_PROFILING=y | ||
684 | # CONFIG_OPROFILE is not set | ||
685 | |||
686 | # | ||
687 | # Kernel hacking | ||
688 | # | ||
689 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
690 | CONFIG_PRINTK_TIME=y | ||
691 | # CONFIG_ENABLE_MUST_CHECK is not set | ||
692 | CONFIG_MAGIC_SYSRQ=y | ||
693 | # CONFIG_UNUSED_SYMBOLS is not set | ||
694 | CONFIG_DEBUG_FS=y | ||
695 | # CONFIG_HEADERS_CHECK is not set | ||
696 | CONFIG_DEBUG_KERNEL=y | ||
697 | # CONFIG_DEBUG_SHIRQ is not set | ||
698 | CONFIG_DETECT_SOFTLOCKUP=y | ||
699 | # CONFIG_SCHEDSTATS is not set | ||
700 | # CONFIG_TIMER_STATS is not set | ||
701 | CONFIG_DEBUG_SLAB=y | ||
702 | CONFIG_DEBUG_SLAB_LEAK=y | ||
703 | CONFIG_DEBUG_PREEMPT=y | ||
704 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
705 | # CONFIG_RT_MUTEX_TESTER is not set | ||
706 | CONFIG_DEBUG_SPINLOCK=y | ||
707 | CONFIG_DEBUG_MUTEXES=y | ||
708 | CONFIG_DEBUG_LOCK_ALLOC=y | ||
709 | # CONFIG_PROVE_LOCKING is not set | ||
710 | CONFIG_LOCKDEP=y | ||
711 | CONFIG_DEBUG_LOCKDEP=y | ||
712 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
713 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
714 | CONFIG_STACKTRACE=y | ||
715 | # CONFIG_DEBUG_KOBJECT is not set | ||
716 | CONFIG_DEBUG_BUGVERBOSE=y | ||
717 | # CONFIG_DEBUG_INFO is not set | ||
718 | CONFIG_DEBUG_VM=y | ||
719 | # CONFIG_DEBUG_LIST is not set | ||
720 | CONFIG_FRAME_POINTER=y | ||
721 | CONFIG_FORCED_INLINING=y | ||
722 | # CONFIG_RCU_TORTURE_TEST is not set | ||
723 | # CONFIG_FAULT_INJECTION is not set | ||
724 | CONFIG_SH_STANDARD_BIOS=y | ||
725 | # CONFIG_EARLY_SCIF_CONSOLE is not set | ||
726 | CONFIG_EARLY_PRINTK=y | ||
727 | # CONFIG_DEBUG_BOOTMEM is not set | ||
728 | CONFIG_DEBUG_STACKOVERFLOW=y | ||
729 | CONFIG_DEBUG_STACK_USAGE=y | ||
730 | # CONFIG_4KSTACKS is not set | ||
731 | # CONFIG_SH_KGDB is not set | ||
732 | |||
733 | # | ||
734 | # Security options | ||
735 | # | ||
736 | # CONFIG_KEYS is not set | ||
737 | # CONFIG_SECURITY is not set | ||
738 | |||
739 | # | ||
740 | # Cryptographic options | ||
741 | # | ||
742 | # CONFIG_CRYPTO is not set | ||
743 | |||
744 | # | ||
745 | # Library routines | ||
746 | # | ||
747 | CONFIG_BITREVERSE=y | ||
748 | # CONFIG_CRC_CCITT is not set | ||
749 | # CONFIG_CRC16 is not set | ||
750 | # CONFIG_CRC_ITU_T is not set | ||
751 | CONFIG_CRC32=y | ||
752 | # CONFIG_LIBCRC32C is not set | ||
753 | CONFIG_PLIST=y | ||
754 | CONFIG_HAS_IOMEM=y | ||
755 | CONFIG_HAS_IOPORT=y | ||
756 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/sh/kernel/cpu/sh3/entry.S b/arch/sh/kernel/cpu/sh3/entry.S index b0b59d4a33ca..d8e122971c3e 100644 --- a/arch/sh/kernel/cpu/sh3/entry.S +++ b/arch/sh/kernel/cpu/sh3/entry.S | |||
@@ -340,8 +340,27 @@ ENTRY(vbr_base) | |||
340 | general_exception: | 340 | general_exception: |
341 | mov.l 1f, k2 | 341 | mov.l 1f, k2 |
342 | mov.l 2f, k3 | 342 | mov.l 2f, k3 |
343 | #ifdef CONFIG_CPU_SUBTYPE_SHX3 | ||
344 | mov.l @k2, k2 | ||
345 | |||
346 | ! Is EXPEVT larger than 0x800? | ||
347 | mov #0x8, k0 | ||
348 | shll8 k0 | ||
349 | cmp/hs k0, k2 | ||
350 | bf 0f | ||
351 | |||
352 | ! then add 0x580 (k2 is 0xd80 or 0xda0) | ||
353 | mov #0x58, k0 | ||
354 | shll2 k0 | ||
355 | shll2 k0 | ||
356 | add k0, k2 | ||
357 | 0: | ||
358 | bra handle_exception | ||
359 | nop | ||
360 | #else | ||
343 | bra handle_exception | 361 | bra handle_exception |
344 | mov.l @k2, k2 | 362 | mov.l @k2, k2 |
363 | #endif | ||
345 | .align 2 | 364 | .align 2 |
346 | 1: .long EXPEVT | 365 | 1: .long EXPEVT |
347 | 2: .long ret_from_exception | 366 | 2: .long ret_from_exception |
diff --git a/arch/sh/kernel/cpu/sh4/probe.c b/arch/sh/kernel/cpu/sh4/probe.c index fab2eb07196b..66c3f75647b2 100644 --- a/arch/sh/kernel/cpu/sh4/probe.c +++ b/arch/sh/kernel/cpu/sh4/probe.c | |||
@@ -141,6 +141,14 @@ int __init detect_cpu_and_cache_system(void) | |||
141 | current_cpu_data.flags |= CPU_HAS_LLSC; | 141 | current_cpu_data.flags |= CPU_HAS_LLSC; |
142 | } | 142 | } |
143 | break; | 143 | break; |
144 | case 0x4000: /* 1st cut */ | ||
145 | case 0x4001: /* 2nd cut */ | ||
146 | current_cpu_data.type = CPU_SHX3; | ||
147 | current_cpu_data.icache.ways = 4; | ||
148 | current_cpu_data.dcache.ways = 4; | ||
149 | current_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_PERF_COUNTER | | ||
150 | CPU_HAS_LLSC; | ||
151 | break; | ||
144 | case 0x8000: | 152 | case 0x8000: |
145 | current_cpu_data.type = CPU_ST40RA; | 153 | current_cpu_data.type = CPU_ST40RA; |
146 | current_cpu_data.flags |= CPU_HAS_FPU; | 154 | current_cpu_data.flags |= CPU_HAS_FPU; |
diff --git a/arch/sh/kernel/cpu/sh4a/Makefile b/arch/sh/kernel/cpu/sh4a/Makefile index ab7422f8f820..400623286487 100644 --- a/arch/sh/kernel/cpu/sh4a/Makefile +++ b/arch/sh/kernel/cpu/sh4a/Makefile | |||
@@ -9,6 +9,7 @@ obj-$(CONFIG_CPU_SUBTYPE_SH7785) += setup-sh7785.o | |||
9 | obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o | 9 | obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o |
10 | obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o | 10 | obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o |
11 | obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o | 11 | obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o |
12 | obj-$(CONFIG_CPU_SUBTYPE_SHX3) += setup-shx3.o | ||
12 | 13 | ||
13 | # Primary on-chip clocks (common) | 14 | # Primary on-chip clocks (common) |
14 | clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o | 15 | clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o |
@@ -17,5 +18,6 @@ clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o | |||
17 | clock-$(CONFIG_CPU_SUBTYPE_SH7785) := clock-sh7785.o | 18 | clock-$(CONFIG_CPU_SUBTYPE_SH7785) := clock-sh7785.o |
18 | clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o | 19 | clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o |
19 | clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7722.o | 20 | clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7722.o |
21 | clock-$(CONFIG_CPU_SUBTYPE_SHX3) := clock-shx3.o | ||
20 | 22 | ||
21 | obj-y += $(clock-y) | 23 | obj-y += $(clock-y) |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-shx3.c b/arch/sh/kernel/cpu/sh4a/clock-shx3.c new file mode 100644 index 000000000000..c630b29e06a8 --- /dev/null +++ b/arch/sh/kernel/cpu/sh4a/clock-shx3.c | |||
@@ -0,0 +1,135 @@ | |||
1 | /* | ||
2 | * arch/sh/kernel/cpu/sh4/clock-shx3.c | ||
3 | * | ||
4 | * SH-X3 support for the clock framework | ||
5 | * | ||
6 | * Copyright (C) 2006-2007 Renesas Technology Corp. | ||
7 | * Copyright (C) 2006-2007 Renesas Solutions Corp. | ||
8 | * Copyright (C) 2006-2007 Paul Mundt | ||
9 | * | ||
10 | * This file is subject to the terms and conditions of the GNU General Public | ||
11 | * License. See the file "COPYING" in the main directory of this archive | ||
12 | * for more details. | ||
13 | */ | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/kernel.h> | ||
16 | #include <asm/clock.h> | ||
17 | #include <asm/freq.h> | ||
18 | #include <asm/io.h> | ||
19 | |||
20 | static int ifc_divisors[] = { 1, 2, 4 ,6 }; | ||
21 | static int bfc_divisors[] = { 1, 1, 1, 1, 1, 12, 16, 18, 24, 32, 36, 48 }; | ||
22 | static int pfc_divisors[] = { 1, 1, 1, 1, 1, 1, 1, 18, 24, 32, 36, 48 }; | ||
23 | static int cfc_divisors[] = { 1, 1, 4, 6 }; | ||
24 | |||
25 | #define IFC_POS 28 | ||
26 | #define IFC_MSK 0x0003 | ||
27 | #define BFC_MSK 0x000f | ||
28 | #define PFC_MSK 0x000f | ||
29 | #define CFC_MSK 0x0003 | ||
30 | #define BFC_POS 16 | ||
31 | #define PFC_POS 0 | ||
32 | #define CFC_POS 20 | ||
33 | |||
34 | static void master_clk_init(struct clk *clk) | ||
35 | { | ||
36 | clk->rate *= pfc_divisors[(ctrl_inl(FRQCR) >> PFC_POS) & PFC_MSK]; | ||
37 | } | ||
38 | |||
39 | static struct clk_ops shx3_master_clk_ops = { | ||
40 | .init = master_clk_init, | ||
41 | }; | ||
42 | |||
43 | static void module_clk_recalc(struct clk *clk) | ||
44 | { | ||
45 | int idx = ((ctrl_inl(FRQCR) >> PFC_POS) & PFC_MSK); | ||
46 | clk->rate = clk->parent->rate / pfc_divisors[idx]; | ||
47 | } | ||
48 | |||
49 | static struct clk_ops shx3_module_clk_ops = { | ||
50 | .recalc = module_clk_recalc, | ||
51 | }; | ||
52 | |||
53 | static void bus_clk_recalc(struct clk *clk) | ||
54 | { | ||
55 | int idx = ((ctrl_inl(FRQCR) >> BFC_POS) & BFC_MSK); | ||
56 | clk->rate = clk->parent->rate / bfc_divisors[idx]; | ||
57 | } | ||
58 | |||
59 | static struct clk_ops shx3_bus_clk_ops = { | ||
60 | .recalc = bus_clk_recalc, | ||
61 | }; | ||
62 | |||
63 | static void cpu_clk_recalc(struct clk *clk) | ||
64 | { | ||
65 | int idx = ((ctrl_inl(FRQCR) >> IFC_POS) & IFC_MSK); | ||
66 | clk->rate = clk->parent->rate / ifc_divisors[idx]; | ||
67 | } | ||
68 | |||
69 | static struct clk_ops shx3_cpu_clk_ops = { | ||
70 | .recalc = cpu_clk_recalc, | ||
71 | }; | ||
72 | |||
73 | static struct clk_ops *shx3_clk_ops[] = { | ||
74 | &shx3_master_clk_ops, | ||
75 | &shx3_module_clk_ops, | ||
76 | &shx3_bus_clk_ops, | ||
77 | &shx3_cpu_clk_ops, | ||
78 | }; | ||
79 | |||
80 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | ||
81 | { | ||
82 | if (idx < ARRAY_SIZE(shx3_clk_ops)) | ||
83 | *ops = shx3_clk_ops[idx]; | ||
84 | } | ||
85 | |||
86 | static void shyway_clk_recalc(struct clk *clk) | ||
87 | { | ||
88 | int idx = ((ctrl_inl(FRQCR) >> CFC_POS) & CFC_MSK); | ||
89 | clk->rate = clk->parent->rate / cfc_divisors[idx]; | ||
90 | } | ||
91 | |||
92 | static struct clk_ops shx3_shyway_clk_ops = { | ||
93 | .recalc = shyway_clk_recalc, | ||
94 | }; | ||
95 | |||
96 | static struct clk shx3_shyway_clk = { | ||
97 | .name = "shyway_clk", | ||
98 | .flags = CLK_ALWAYS_ENABLED, | ||
99 | .ops = &shx3_shyway_clk_ops, | ||
100 | }; | ||
101 | |||
102 | /* | ||
103 | * Additional SHx3-specific on-chip clocks that aren't already part of the | ||
104 | * clock framework | ||
105 | */ | ||
106 | static struct clk *shx3_onchip_clocks[] = { | ||
107 | &shx3_shyway_clk, | ||
108 | }; | ||
109 | |||
110 | static int __init shx3_clk_init(void) | ||
111 | { | ||
112 | struct clk *clk = clk_get(NULL, "master_clk"); | ||
113 | int i; | ||
114 | |||
115 | for (i = 0; i < ARRAY_SIZE(shx3_onchip_clocks); i++) { | ||
116 | struct clk *clkp = shx3_onchip_clocks[i]; | ||
117 | |||
118 | clkp->parent = clk; | ||
119 | clk_register(clkp); | ||
120 | clk_enable(clkp); | ||
121 | } | ||
122 | |||
123 | /* | ||
124 | * Now that we have the rest of the clocks registered, we need to | ||
125 | * force the parent clock to propagate so that these clocks will | ||
126 | * automatically figure out their rate. We cheat by handing the | ||
127 | * parent clock its current rate and forcing child propagation. | ||
128 | */ | ||
129 | clk_set_rate(clk, clk_get_rate(clk)); | ||
130 | |||
131 | clk_put(clk); | ||
132 | |||
133 | return 0; | ||
134 | } | ||
135 | arch_initcall(shx3_clk_init); | ||
diff --git a/arch/sh/kernel/cpu/sh4a/setup-shx3.c b/arch/sh/kernel/cpu/sh4a/setup-shx3.c new file mode 100644 index 000000000000..70683ea12b83 --- /dev/null +++ b/arch/sh/kernel/cpu/sh4a/setup-shx3.c | |||
@@ -0,0 +1,85 @@ | |||
1 | /* | ||
2 | * SH-X3 Setup | ||
3 | * | ||
4 | * Copyright (C) 2007 Paul Mundt | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #include <linux/platform_device.h> | ||
11 | #include <linux/init.h> | ||
12 | #include <linux/serial.h> | ||
13 | #include <linux/io.h> | ||
14 | #include <asm/sci.h> | ||
15 | |||
16 | static struct plat_sci_port sci_platform_data[] = { | ||
17 | { | ||
18 | .mapbase = 0xffc30000, | ||
19 | .flags = UPF_BOOT_AUTOCONF, | ||
20 | .type = PORT_SCIF, | ||
21 | .irqs = { 40, 41, 43, 42 }, | ||
22 | }, { | ||
23 | .mapbase = 0xffc40000, | ||
24 | .flags = UPF_BOOT_AUTOCONF, | ||
25 | .type = PORT_SCIF, | ||
26 | .irqs = { 44, 45, 47, 46 }, | ||
27 | }, { | ||
28 | .mapbase = 0xffc50000, | ||
29 | .flags = UPF_BOOT_AUTOCONF, | ||
30 | .type = PORT_SCIF, | ||
31 | .irqs = { 48, 49, 51, 50 }, | ||
32 | }, { | ||
33 | .mapbase = 0xffc60000, | ||
34 | .flags = UPF_BOOT_AUTOCONF, | ||
35 | .type = PORT_SCIF, | ||
36 | .irqs = { 52, 53, 55, 54 }, | ||
37 | }, { | ||
38 | .flags = 0, | ||
39 | } | ||
40 | }; | ||
41 | |||
42 | static struct platform_device sci_device = { | ||
43 | .name = "sh-sci", | ||
44 | .id = -1, | ||
45 | .dev = { | ||
46 | .platform_data = sci_platform_data, | ||
47 | }, | ||
48 | }; | ||
49 | |||
50 | static struct platform_device *shx3_devices[] __initdata = { | ||
51 | &sci_device, | ||
52 | }; | ||
53 | |||
54 | static int __init shx3_devices_setup(void) | ||
55 | { | ||
56 | return platform_add_devices(shx3_devices, | ||
57 | ARRAY_SIZE(shx3_devices)); | ||
58 | } | ||
59 | __initcall(shx3_devices_setup); | ||
60 | |||
61 | static struct intc2_data intc2_irq_table[] = { | ||
62 | { 16, 0, 0, 0, 1, 2 }, /* TMU0 */ | ||
63 | { 40, 4, 0, 0x20, 0, 3 }, /* SCIF0 ERI */ | ||
64 | { 41, 4, 0, 0x20, 1, 3 }, /* SCIF0 RXI */ | ||
65 | { 42, 4, 0, 0x20, 2, 3 }, /* SCIF0 BRI */ | ||
66 | { 43, 4, 0, 0x20, 3, 3 }, /* SCIF0 TXI */ | ||
67 | }; | ||
68 | |||
69 | static struct intc2_desc intc2_irq_desc __read_mostly = { | ||
70 | .prio_base = 0xfe410000, | ||
71 | .msk_base = 0xfe410820, | ||
72 | .mskclr_base = 0xfe410850, | ||
73 | |||
74 | .intc2_data = intc2_irq_table, | ||
75 | .nr_irqs = ARRAY_SIZE(intc2_irq_table), | ||
76 | |||
77 | .chip = { | ||
78 | .name = "INTC2-SHX3", | ||
79 | }, | ||
80 | }; | ||
81 | |||
82 | void __init init_IRQ_intc2(void) | ||
83 | { | ||
84 | register_intc2_controller(&intc2_irq_desc); | ||
85 | } | ||
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 765f83c1bca4..de8e6e2f2c87 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c | |||
@@ -285,7 +285,7 @@ static const char *cpu_name[] = { | |||
285 | [CPU_SH7770] = "SH7770", [CPU_SH7780] = "SH7780", | 285 | [CPU_SH7770] = "SH7770", [CPU_SH7780] = "SH7780", |
286 | [CPU_SH7781] = "SH7781", [CPU_SH7343] = "SH7343", | 286 | [CPU_SH7781] = "SH7781", [CPU_SH7343] = "SH7343", |
287 | [CPU_SH7785] = "SH7785", [CPU_SH7722] = "SH7722", | 287 | [CPU_SH7785] = "SH7785", [CPU_SH7722] = "SH7722", |
288 | [CPU_SH_NONE] = "Unknown" | 288 | [CPU_SHX3] = "SH-X3", [CPU_SH_NONE] = "Unknown" |
289 | }; | 289 | }; |
290 | 290 | ||
291 | const char *get_cpu_subtype(struct sh_cpuinfo *c) | 291 | const char *get_cpu_subtype(struct sh_cpuinfo *c) |
diff --git a/arch/sh/kernel/timers/timer-tmu.c b/arch/sh/kernel/timers/timer-tmu.c index 2d997e2a5b6c..097ebd49f1bf 100644 --- a/arch/sh/kernel/timers/timer-tmu.c +++ b/arch/sh/kernel/timers/timer-tmu.c | |||
@@ -30,7 +30,7 @@ | |||
30 | 30 | ||
31 | static int tmu_timer_start(void) | 31 | static int tmu_timer_start(void) |
32 | { | 32 | { |
33 | ctrl_outb(ctrl_inb(TMU_TSTR) | 0x3, TMU_TSTR); | 33 | ctrl_outb(ctrl_inb(TMU_012_TSTR) | 0x3, TMU_012_TSTR); |
34 | return 0; | 34 | return 0; |
35 | } | 35 | } |
36 | 36 | ||
@@ -52,7 +52,7 @@ static void tmu0_timer_set_interval(unsigned long interval, unsigned int reload) | |||
52 | 52 | ||
53 | static int tmu_timer_stop(void) | 53 | static int tmu_timer_stop(void) |
54 | { | 54 | { |
55 | ctrl_outb(ctrl_inb(TMU_TSTR) & ~0x3, TMU_TSTR); | 55 | ctrl_outb(ctrl_inb(TMU_012_TSTR) & ~0x3, TMU_012_TSTR); |
56 | return 0; | 56 | return 0; |
57 | } | 57 | } |
58 | 58 | ||
@@ -174,7 +174,8 @@ static int tmu_timer_init(void) | |||
174 | 174 | ||
175 | #if !defined(CONFIG_CPU_SUBTYPE_SH7300) && \ | 175 | #if !defined(CONFIG_CPU_SUBTYPE_SH7300) && \ |
176 | !defined(CONFIG_CPU_SUBTYPE_SH7760) && \ | 176 | !defined(CONFIG_CPU_SUBTYPE_SH7760) && \ |
177 | !defined(CONFIG_CPU_SUBTYPE_SH7785) | 177 | !defined(CONFIG_CPU_SUBTYPE_SH7785) && \ |
178 | !defined(CONFIG_CPU_SUBTYPE_SHX3) | ||
178 | ctrl_outb(TMU_TOCR_INIT, TMU_TOCR); | 179 | ctrl_outb(TMU_TOCR_INIT, TMU_TOCR); |
179 | #endif | 180 | #endif |
180 | 181 | ||
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig index 6fc5550c4ba1..ea1d2716fdb3 100644 --- a/arch/sh/mm/Kconfig +++ b/arch/sh/mm/Kconfig | |||
@@ -36,6 +36,9 @@ config CPU_SUBTYPE_ST40 | |||
36 | config CPU_SHX2 | 36 | config CPU_SHX2 |
37 | bool | 37 | bool |
38 | 38 | ||
39 | config CPU_SHX3 | ||
40 | bool | ||
41 | |||
39 | choice | 42 | choice |
40 | prompt "Processor sub-type selection" | 43 | prompt "Processor sub-type selection" |
41 | 44 | ||
@@ -193,6 +196,12 @@ config CPU_SUBTYPE_SH7785 | |||
193 | select CPU_SHX2 | 196 | select CPU_SHX2 |
194 | select CPU_HAS_INTC2_IRQ | 197 | select CPU_HAS_INTC2_IRQ |
195 | 198 | ||
199 | config CPU_SUBTYPE_SHX3 | ||
200 | bool "Support SH-X3 processor" | ||
201 | select CPU_SH4A | ||
202 | select CPU_SHX3 | ||
203 | select CPU_HAS_INTC2_IRQ | ||
204 | |||
196 | # SH4AL-DSP Processor Support | 205 | # SH4AL-DSP Processor Support |
197 | 206 | ||
198 | config CPU_SUBTYPE_SH73180 | 207 | config CPU_SUBTYPE_SH73180 |