diff options
author | Andrea Adami <andrea.adami@gmail.com> | 2015-04-18 23:20:58 +0200 |
---|---|---|
committer | Andrea Adami <andrea.adami@gmail.com> | 2015-04-18 23:58:06 +0200 |
commit | 3f29b22a550afda263eb48c6d81f05c3f82456d9 (patch) | |
tree | 88e5ebcedfe0dd9837c8dab6fb591f1ad2d74560 | |
parent | 824b971f8abc45a8ac8bca784a43d371f05325e5 (diff) | |
download | meta-handheld-3f29b22a550afda263eb48c6d81f05c3f82456d9.tar.gz |
jornada: remove unmaintained machines and kernels
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
13 files changed, 0 insertions, 59865 deletions
diff --git a/conf/machine/jornada56x.conf b/conf/machine/jornada56x.conf deleted file mode 100644 index 645f128..0000000 --- a/conf/machine/jornada56x.conf +++ /dev/null @@ -1,17 +0,0 @@ -#@TYPE: Machine -#@NAME: HP Jornada 56x -#@DESCRIPTION: Machine configuration for the SA1100 based HP Jornada 56x palmtop computer - -PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6" -PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross" -BOOTSTRAP_EXTRA_RDEPENDS = "kernel kernel-modules module-init-tools" - -JFFS2_ERASEBLOCK = "0x40000" -# For NOR flash we need the cleanmarkers so override the defaults -EXTRA_IMAGECMD_jffs2 = "-p -l -e ${JFFS2_ERASEBLOCK}" - -SERIAL_CONSOLE = "115200 ttySA0" - -MACHINE_FEATURES_append_jornada56x = " qvga" - -require conf/machine/include/tune-strongarm1100.inc diff --git a/conf/machine/jornada6xx.conf b/conf/machine/jornada6xx.conf deleted file mode 100644 index 5afecbf..0000000 --- a/conf/machine/jornada6xx.conf +++ /dev/null @@ -1,13 +0,0 @@ -#@TYPE: Machine -#@NAME: HP Jornada 680 -#@DESCRIPTION: Machine configuration for the HITACHI SH3 based HP Jornada 6xx palmtop computer - -require conf/machine/include/tune-sh3.inc - -MACHINE_FEATURES = "alsa pcmcia irda keyboard touchscreen screen vfat" -MACHINE_EXTRA_RRECOMMENDS = " kernel-modules" - -PREFERRED_PROVIDER_virtual/kernel = "linux-jlime-jornada6xx" -PREFERRED_VERSION_linux-jlime-jornada6xx = "2.6.17" - -SYSVINIT_ENABLED_GETTYS = "1 2" diff --git a/conf/machine/jornada7xx.conf b/conf/machine/jornada7xx.conf deleted file mode 100644 index c988694..0000000 --- a/conf/machine/jornada7xx.conf +++ /dev/null @@ -1,20 +0,0 @@ -#@TYPE: Machine -#@NAME: HP Jornada 7xx -#@DESCRIPTION: Machine configuration for the SA1110 based HP Jornada 7xx palmtop computer - -require conf/machine/include/tune-strongarm1100.inc - -PREFERRED_PROVIDER_virtual/kernel = "linux-jlime-jornada7xx" -MACHINE_FEATURES = "apm alsa pcmcia irda keyboard touchscreen screen vfat" -MACHINE_EXTRA_RDEPENDS = "kernel-modules bluez-dtl1-workaround" - -JFFS2_ERASEBLOCK = "0x40000" -# For NOR flash we need the cleanmarkers so override the defaults -EXTRA_IMAGECMD_jffs2 = "-p -l -e ${JFFS2_ERASEBLOCK}" - -#screeninfo -MACHINE_GUI_CLASS = "smallscreen" -MACHINE_DISPLAY_WIDTH_PIXELS = "640" -MACHINE_DISPLAY_HEIGHT_PIXELS = "240" - -SYSVINIT_ENABLED_GETTYS = "1 2 3 4 5 6" diff --git a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/LinuxSH-2.6.17.patch b/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/LinuxSH-2.6.17.patch deleted file mode 100644 index 8c4b54d..0000000 --- a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/LinuxSH-2.6.17.patch +++ /dev/null @@ -1,56290 +0,0 @@ -diff -ruN linux-2.6.17-vanilla/CVS/Entries linux-2.6.17/CVS/Entries ---- linux-2.6.17-vanilla/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/CVS/Entries 2006-07-12 16:54:18.000000000 +0000 -@@ -0,0 +1,21 @@ -+/.cvsignore/1.1/Wed May 12 13:52:16 2004/-ko/ -+/ChangeLog-1999/1.1.1.1/Mon Oct 15 20:44:29 2001// -+/ChangeLog-2000/1.1.1.1/Mon Oct 15 20:44:31 2001// -+/ChangeLog-2001/1.1/Mon Jan 7 03:57:47 2002/-ko/ -+/ChangeLog-2002/1.3/Sun May 4 19:29:45 2003// -+/ChangeLog-2003/1.2/Sun Jan 4 18:29:21 2004// -+/ChangeLog-2004/1.1/Mon Jan 31 12:17:59 2005/-ko/ -+/ChangeLog-2005/1.1/Fri Jan 27 16:07:15 2006/-ko/ -+D/Documentation//// -+D/arch//// -+D/drivers//// -+D/include//// -+D/lib//// -+D/mm//// -+D/net//// -+D/scripts//// -+D/sound//// -+/AGAINST-2.6.17/1.1/Wed Jul 5 08:46:47 2006/-ko/ -+/ChangeLog/1.366/Wed Jul 5 07:19:04 2006/-ko/ -+/Makefile/1.102/Wed Jul 5 14:49:57 2006/-ko/ -+/localversion-sh/1.1/Wed Jul 5 07:22:47 2006/-ko/ -diff -ruN linux-2.6.17-vanilla/CVS/Entries.Log linux-2.6.17/CVS/Entries.Log ---- linux-2.6.17-vanilla/CVS/Entries.Log 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/CVS/Entries.Log 2006-07-12 16:54:18.000000000 +0000 -@@ -0,0 +1,6 @@ -+A D/fs//// -+A D/init//// -+A D/kernel//// -+R D/kernel//// -+R D/init//// -+R D/fs//// -diff -ruN linux-2.6.17-vanilla/CVS/Repository linux-2.6.17/CVS/Repository ---- linux-2.6.17-vanilla/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/CVS/Repository 2006-07-12 16:54:18.000000000 +0000 -@@ -0,0 +1 @@ -+linux -diff -ruN linux-2.6.17-vanilla/CVS/Root linux-2.6.17/CVS/Root ---- linux-2.6.17-vanilla/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/CVS/Root 2006-07-12 16:54:18.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/ChangeLog linux-2.6.17/ChangeLog ---- linux-2.6.17-vanilla/ChangeLog 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/ChangeLog 2006-07-12 16:54:18.000000000 +0000 -@@ -0,0 +1,19 @@ -+2006-06-05 Adrian McMenamin <adrian@mcmen.demon.co.uk> -+ -+ Dreamcast AICA driver tidy -+ -+ * sound/sh/aica.c: code tidying of whitespace and returns -+ * sound/sh/Kconfig: tidying -+ -+ -+2006-06-04 Adrian McMenamin <adrian@mcmen.demon.co.uk> -+ -+ Dreamcast AICA sound support added -+ -+ * sound/Kconfig: Added here and updated to support ALSA SH devices -+ * sound/Makefile: Added here and updated to support ALSA SH devices -+ * sound/sh: New directory to hold ALSA files for SH devices -+ * sound/sh/aica.c: New file to add AICA sound support -+ * sound/sh/aica.h: Header to upport AICA sound -+ * sound/sh/Kconfig: New file to add AICA sound support -+ * sound/sh/Makefile: New file required to add AICA sound support -diff -ruN linux-2.6.17-vanilla/ChangeLog-1999 linux-2.6.17/ChangeLog-1999 ---- linux-2.6.17-vanilla/ChangeLog-1999 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/ChangeLog-1999 2006-07-12 16:54:18.000000000 +0000 -@@ -0,0 +1,902 @@ -+1999-12-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/sys_sh.c (do_mmap2, old_mmap, sys_mmap2): Follow -+ the change of 2.3.32. -+ -+ * arch/sh/kernel/head.S (_start): Change the name of label from _stext. -+ -+ * include/linux/linkage.h: Dont prepend "_" for label. -+ * arch/sh/vmlinux.lds.S: Likewise. -+ * include/asm-sh/system.h (switch_to): Likewise. -+ -+ * include/asm-sh/stat.h: Follow the change of 2.3.34. -+ -+ * arch/sh/kernel/entry.S: Added getrlimit, mmap2, truncate64, -+ ftruncate64, stat64, lstat64, and fstat64. -+ * include/asm-sh/unistd.h: Likewise. -+ -+1999-12-22 John Hassey <hassey@gte.net> -+ -+ * arch/sh/kernel/irq_onchip.c (init_IRQ): Initialize the interrupt -+ controller. -+ -+1999-12-19 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/defconfig: Updated. -+ * arch/sh/config.in (CONFIG_SUPERH): Defined. -+ (CONFIG_CF_ENABLER): New config. -+ -+ * arch/sh/kernel/irq_imask.c: New file. -+ * arch/sh/kernel/entry.S (restore_all): Inherit IMASK of SR. -+ * arch/sh/kernel/Makefile: Use CONFIG_CF_ENABLER. -+ * arch/sh/kernel/cf-enabler.c: New file. -+ -+ * include/asm-sh/irq.h (TIMER_PRIORITY): Changed from 1. -+ The reason is for my board. Should consider later. -+ -+1999-12-14 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/string.h (struct_cpy): Follow the changes of -+ 2.3.32. -+ * arch/sh/kernel/process.c (copy_thread): Use struct_cpy. -+ -+1999-12-12 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/config.in: Added PCI support configuration. -+ * arch/sh/kernel/time.c (get_cpu_mhz): New function. -+ -+1999-12-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/cache.h: Follow the change of 2.3.30. -+ -+1999-12-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/irq.h (TIMER_IPR_OFFSET): Spell fixed. -+ -+1999-12-07 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h: Updated for 2.3.30. -+ * include/asm-sh/pgtable-2level.h (set_pte, set_pmd, set_pgd): Added. -+ * include/asm-sh/page.h (__pte, __pmd, __pgd): Added. -+ * include/asm-sh/hardirq.h: Follow the change of 2.3.30. -+ -+ * arch/sh/mm/init.c (__handle_bad_pmd, __handle_bad_pmd_kernel, -+ get_pte_kernel_slow, get_pte_slow): Use set_pmd. -+ * include/asm-sh/pgalloc.h (pte_alloc_kernel, pte_alloc): Ditto. -+ -+1999-11-30 Toshiharu Nozawa <nozawat@hitachi-ul.co.jp> -+ -+ * arch/sh/kernel/time.c (time_init): Implement better mesurement -+ using RTC interrupt. -+ -+1999-11-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/setup.c (setup_arch): Updated for 2.3.30. -+ * include/asm-sh/io.h (IO_SPACE_LIMIT): Added for 2.3.30. -+ (inw_p, outw_p): Added. -+ -+ * include/asm-sh/ide.h (ide_default_io_base): Changed for my board. -+ * include/asm-sh/hdreg.h (ide_ioreg_t): Changed to unsigend int. -+ -+ * arch/sh/config.in: Added block device configuration. -+ -+1999-11-26 Toshiharu Nozawa <nozawat@hitachi-ul.co.jp> -+ -+ * drivers/char/sh-scif.c (sci_receive_chars): Add dummy read -+ before clearing flag. -+ -+ * arch/sh/kernel/time.c (time_init): Implement better mesurement. -+ -+1999-11-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgalloc.h: New file. -+ * include/asm-sh/pgalloc-2level.h: New file. -+ * arch/sh/kernel/pci-sh.c: New file. -+ * include/asm-sh/pci.h: New file. -+ * arch/sh/kernel/irq.c: Follow the changes of 2.3.29. -+ * arch/sh/mm/init.c, arch/sh/mm/fault.c, arch/sh/mm/ioremap.c: -+ Likewise. -+ -+ * include/asm-sh/highmem.h: Removed. -+ -+1999-11-23 Toshiharu Nozawa <nozawat@hitachi-ul.co.jp> -+ -+ * arch/sh/kernel/time.c (time_init): Implement getting clock -+ (system clock and module clock) information. -+ -+1999-11-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/{sh-scif.c,sh-sci.c}: Avoid race conditions. -+ Don't initialize the module if c_cflags is same. -+ -+1999-11-17 Toshiharu Nozawa <nozawat@hitachi-ul.co.jp> -+ -+ * drivers/char/sh-scif.c: Use ctrl_in, ctrl_out for SCSCR, SCSMR -+ and SCFCR. It's accessed as byte for SH-3. -+ -+1999-11-16 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/io.h (ctrl_in, ctrl_out): New macro. -+ -+1999-11-15 Sugioka Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/entry.S (system_call): Bug fix. Change -+ cmp/ge --> cmp/hs. -+ -+1999-11-14 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/irq_onchip.c: Include <linux/config.h>. -+ -+ * include/asm-sh/dma.h: Include <asm/io.h>. -+ -+ * include/asm-sh/div64.h: New file. -+ -+ * arch/sh/kernel/process.c (get_wchan): New function. -+ -+ * arch/sh/mm/init.c (paging_init,mem_init,si_meminfo): Follow the -+ changes of 2.2.27. -+ * include/asm-sh/processor.h (KSTK_EIP, KSTK_ESP): Ditto. -+ -+ * drivers/char/sh-scif.c: Incorporate changes of sh-sci.c, -+ to be real TTY support. -+ -+1999-11-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (__flush_page_to_ram): Renamed from -+ flush_page_to_ram. -+ -+ * include/asm-sh/dma.h (MAX_DMA_ADDRESS): Add __MEMORY_START. -+ * include/asm-sh/pgtable.h (page_pte_prot): Removed. -+ (__flush_page_to_ram): Renamed from flush_page_to_ram. -+ (flush_page_to_ram): New Macro. -+ -+1999-11-10 YAEGASHI Takeshi <yaegashi@ma.kcom.ne.jp> -+ -+ * include/asm-sh/pgtable.h (_PAGE_CHG_MASK, PAGE_NONE, -+ PAGE_SHARED, PAGE_COPY, PAGE_READONLY, PAGE_KERNEL, -+ PAGE_KERNEL_RO): Add _PAGE_CACHABLE. -+ -+1999-11-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/mmu_context.h (set_asid): Don't change -+ the value of other part of PTEH. -+ -+ * include/asm-sh/shmparam.h (SHMLBA): Incorporate the changes -+ of pre-2.3.26-2. -+ -+1999-11-05 YAEGASHI Takeshi <yaegashi@ma.kcom.ne.jp> -+ -+ * arch/sh/kernel/sys_sh.c (sys_mmap): Bug fix for arguments. -+ -+1999-11-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/page.h (__pa,__va,MAP_NR): Changed not using -+ __PAGE_OFFSET. -+ -+ * arch/sh/kernel/setup.c (parse_mem_cmdline): Followed the changes -+ of __pa and __va. -+ -+ * include/asm-sh/pgtable-2level.h (SWP_ENTRY): Moved to pgtable.h. -+ * include/asm-sh/page.h (__pte,__pmd,__pgd): Removed. -+ -+ Do we need getrlimit changes? -+ -+1999-10-31 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (__flush_tlb_page): Bug fix. Set ASID before -+ doing the flush of TLB. -+ -+ Cosmetic changes around SuperH MM. -+ * arch/sh/mm/fault.c (update_mmu_cache): Don't set PTEH register. -+ -+ * arch/sh/kernel/process.c (copy_thread): Removed setting -+ p->mm->context. It's done in copy_mm. -+ * include/asm-sh/mmu_context.h (destroy_context): Don't -+ need to reset mm->context. -+ -+1999-10-30 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c: Handle TLB miss of vmalloc area. -+ -+ * drivers/char/sh-sci.c: Include serialP.h, not include -+ serial_reg.h. -+ (sci_transmit_chars): Bug fix. Clear GS_TX_INTEN flag -+ when clearing TIE flag. -+ -+1999-10-29 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/resource.h (INIT_RLIMITS): Follow the change -+ of 2.3.24. -+ * include/asm-sh/pgtable-2level.h (pgd_clear): Do nothing. -+ * arch/sh/kernel/setup.c (setup_arch): Follow the changes of -+ 2.3.24. -+ -+ * include/asm-sh/uaccess.h (__strnlen_user): Minor fix. -+ -+1999-10-28 YAEGASHI Takeshi <yaegashi@ma.kcom.ne.jp> -+ -+ * arch/sh/lib/checksum.S: Bug fix. Change bf/s --> bt/s. -+ -+1999-10-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/uaccess.h (__strnlen_user): Bug fix. Don't -+ fetch the memory over the boundary. -+ (strnlen_user): Bug fix. 'n ' could be large value when it's -+ used through strlen_user. Don't use access_ok with 'n'. -+ -+1999-10-27 YAEGASHI Takeshi <yaegashi@ma.kcom.ne.jp> -+ -+ * arch/sh/kernel/irq_onchip.c: Support extended on-chip I/O. -+ * include/asm-sh/irq.h (NR_IRQS): Ditto. -+ -+ * include/asm-sh/io.h (outsb,outsw,outsl,insb,insw,insl): Added. -+ -+ * drivers/char/sh-scif.c: Add SH-3 support. -+ -+ * arch/sh/kernel/time.c (do_timer_interrupt): Increment the -+ register. -+ -+ * arch/sh/kernel/entry.S (INTEVT): Use INTEVTE2 for SH7709. -+ -+ * arch/sh/config.in: Introduce CONFIG_CPU_SUBTYPE. -+ Config added for Network device drivers. -+ -+1999-10-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/string.h (memscan): Bug fix. Use memchr. -+ -+ * include/asm-sh/bitops.h (ext2_set_bit and others): Little -+ endian support. -+ -+ * arch/sh/kernel/head.S: Remove entry for MEMORY_END, followed -+ changes of setup.c. Reported by Jiu Zheng. -+ -+1999-10-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/spinlock.h: This file is used only for SMP. -+ Reported by Manfred Spraul. -+ -+1999-10-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/ioctls.h -+ (TCGETS,TCSETS,TCSETSW,TCSETSF,TIOCGLCKTRMIOS,TIOCSLCKTRMIOS): Use -+ Immediate 0x54XX value as struct termios is different between -+ kernel and glibc. -+ -+ * arch/sh/kernel/entry.S (system_call): Add debug output to LED. -+ -+ * drivers/char/sh-sci.c (sci_set_real_termios): Bug fix. -+ Enable receive interrupt, or we lose inputs. -+ -+1999-10-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (pte_pagenr): substract the offset -+ __MEMORY_START. -+ (mk_pte): add the offset __MEMORY_START. -+ -+1999-10-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/setup.c (setup_arch): Follow the change of 2.3.23. -+ * arch/sh/mm/init.c (show_mem, pageing_init, mem_init, and bad -+ page handling): Follow the change of 2.3.23. -+ * include/asm-sh/highmem.h, include/asm-sh/pgtable-2level.h: New -+ headers. -+ * include/asm-sh/dma.h (MAX_DMA_ADDRESS): Defined. -+ * include/asm-sh/pgtable.h: Follow the changes of 2.3.23. -+ * drivers/char/{sh-scif.c,sh-sci.c} (serial_console_init): -+ Follow the interface change of 2.3.23. -+ -+ * arch/sh/kernel/setup.c (MEMORY_END): Removed. -+ -+1999-10-21 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (restore_all, debug): Bug fix. Fix SSR -+ race condition (SSR could be modified by interrupts). -+ -+1999-10-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/system.h (__sti,__cli,__save_and_cli): Relax the -+ register constraints. -+ (__save_and_cli): Improve a bit. -+ -+1999-10-19 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/{sh-scif.c,sh-sci.c}: Bug fix. FLAGS is long -+ instead of short. Fix typo for cli (not cil). -+ Thanks to Alexei Minayev and Jiu Zheng. -+ -+ * arch/sh/kernel/irq_onchip.c (disable_onChip_irq, -+ enable_onChip_irq): Protect critical regions. -+ -+1999-10-17 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/string.h (__HAVE_ARCH_MEMCHR): Defined. -+ * arch/sh/lib/memchr.S: New file. -+ -+ * include/asm-sh/spinlock.h: Merged with Kaz'. -+ -+ * arch/sh/kernel/setup.c (setup_arch): Set command_line. -+ -+ * arch/sh/kernel/entry.S (exception_handling_table): Set -+ 'none' for entry #0, to avoid spurious interrupt. Questionable. -+ -+1999-10-16 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/{sh-scif.c,sh-sci.c}: Protect critical regions. -+ Bug fix for sci_chars_in_buffer (it's for *transmit* not receive). -+ -+1999-10-15 Tetsuya Okada <okayan@c-creators.co.jp> -+ -+ * arch/sh/config.in, arch/sh/kernel/time.c (set_rtc_time): -+ Implemented. -+ -+1999-10-14 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (system_call): Bug fix of the case -+ with arguments on the stack. -+ -+1999-10-12 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/uaccess.h (__strnlen_user,strnlen_user): Changed -+ from {__,}strlen_user. -+ -+ * arch/sh/kernel/entry.S (sys_call_table): sys_mmap. -+ * arch/sh/kernel/sys_sh.c (sys_mmap): Implemented. -+ -+1999-10-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/{sh-scif.c,sh-sci.c} (gdb_detach): -+ Conditionalize the interaction with the value of in_gdb. -+ -+ * arch/sh/mm/init.c (paging_init): Initialize asid. -+ -+ * arch/sh/kernel/irq_onchip.c (no_irq_type): Moved to irq.c. -+ -+ * include/asm-sh/checksum.h (ip_fast_csum): cmp/eq works only -+ for register "r0". -+ Thanks to Mikhail Sogrine <sogrine@Informatik.Uni-Tuebingen.De> -+ and Tetsuya Okada <okayan@c-creators.co.jp> -+ -+1999-10-10 Tetsuya Okada <okayan@c-creators.co.jp> -+ -+ * arch/sh/kernel/time.c (get_rtc_time): Implemented for on chip -+ RTC. -+ -+1999-10-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (none): Do nothing for NMI. -+ -+ * drivers/char/sh-scif.c (sci_transmit_chars,sci_receive_chars): -+ Bug fix for counting room. -+ -+1999-10-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/{signal.h,socket.h,termbits.h,termios.h,types.h}: -+ Updated. -+ -+ * include/asm-sh/smplock.h: Merge Kaz's. And rename it from -+ smp_lock.h. -+ -+1999-10-05 Sugioka Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/init.c: Initialized to MMU_CONTEXT_FIRST_VERSION. -+ -+1999-10-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/vmlinux.lds.S: New section ".empty_zero_page". -+ -+ * drivers/char/sh-scif.c (gdb_detach): Change trap #. -+ (SCSCR_INIT): New macro. -+ (SCI_IRP_OFFSET): Bug fix. -+ -+ * arch/sh/kernel/entry.S (fixup_syscall_argerr): Implemented. -+ -+ * include/asm-sh/uaccess.h: Use .balign. -+ -+1999-10-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/sh-sci.c: Implement TTY. -+ -+ * drivers/char/sh-scif.c (sci_enable_tx_interrupts): Handle -+ interrupt request flag correctly. -+ (sci_interrupt): Call sci_enable_tx_interrupts. -+ -+1999-10-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/irq_onchip.c -+ (enable_onChip_irq,disable_onChip_irq): Fixed the address -+ calculation. -+ -+1999-10-02 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/ioctls.h (TIOCMBIS,TIOCMBIC,TIOCMSET): Fixed the -+ typo of type. -+ -+ * arch/sh/kernel/entry.S (handle_exception): Fixed the entry -+ position. -+ -+ * drivers/char/sh-scif.c: Implement serial TTY. -+ -+1999-10-01 Tetsuya Okada <okayan@c-creators.co.jp> -+ -+ * drivers/char/sh-scif.c: Conditionalize with -+ CONFIG_DEBUG_KERNEL_WITH_GDB_STUB. -+ -+1999-09-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/config.in(CONFIG_MEMORY_END): Removed. -+ -+ * arch/sh/vmlinux.lds.S (section .data.disk_image): Removed. -+ -+ * arch/sh/kernel/test-img.c: Removed. -+ * arch/sh/kernel/Makefile(O_OBJS): Remove test-img.o. -+ -+ * arch/sh/kernel/signal.c (setup_frame,setup_rt_frame): Bug fix -+ for little endian machine. -+ -+ * arch/sh/lib/memcpy.S: Bug fix: CONFIG_LITTLE_ENDIAN --> -+ __LITTLE_ENDIAN__. -+ -+1999-09-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/defconfig: Updated. -+ -+ * arch/sh/kernel/head.S: Assumes arguments come with register R4&R5. -+ * arch/sh/kernel/setup.c (setup_arch): Introduce new boot interface -+ "BabeFace". -+ -+ * include/asm-sh/bugs.h (check_bugs): Set loops_per_sec, and display -+ CPU type. -+ -+ * include/asm-sh/processor.h: New enumeration for CPU type. -+ -+ * arch/sh/mm/cache.c (detect_cpu_and_cache_system): New function. -+ -+ * arch/sh/config.in: Follow the change of the name of sh-sci.c and -+ sh-scif.c. -+ -+ * driver/char/{sh-sci.c,sh-scif.c}: Renamed since they're -+ almost same between SH-3 and SH-4. -+ Thanks to Mikhail Sogrine <sogrine@Informatik.Uni-Tuebingen.De>. -+ -+1999-09-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S, include/asm-sh/ptrace.h: Stack layout change. -+ (error): Bug fix. -+ -+ * arch/sh/kernel/signal.c, arch/sh/kernel/process.c: Follow the -+ interface change of ptrace.h. -+ -+ * include/asm-sh/ptrace.h: Rename the member u_regs to regs. -+ Introduce new member "sp". -+ -+ * include/asm-sh/sigcontext.h(struct sigcntext): Rename the members. -+ -+ * include/asm-sh/elf.h (ELF_PLAT_INIT): Taken from Kaz' -+ Implementation. Don't know if it's really needed or not. -+ -+1999-09-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/head.S: Set SR register. -+ -+ * arch/sh/mm/cache.c (flush_icache_range): Bug fix. Tag address -+ for IC Address Array is virtual address, not physical. -+ (flush_cache_range): Likewise. -+ (cache_flush_area): Likewise. -+ (follow_page): Removed. -+ -+1999-09-21 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/process.c (show_regs): Format change a bit. -+ -+ * include/asm-sh/delay.h (__delay,__udelay): Kaz' Implementatin. -+ -+ * arch/sh/lib/memmove.S: Don't include <linux/config.h>, use -+ __LITTLE_ENDIAN__ instead. -+ * arch/sh/lib/memcpy.S: Likewise. -+ * arch/sh/kernel/signal.c: Likewise. -+ * include/asm-sh/elf.h: Likewise. -+ * include/asm-sh/byteorder.h: Likewise. -+ * include/asm-sh/checksum.h: Likewise. -+ (csum_tcpudp_nofold,csum_ipv6_magic): Improve a bit. (Don't branch) -+ (ip_fast_csum,csum_fold): Merge Kaz' Implementation. -+ -+1999-09-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/{atomic.h,bitops.h}: Use save_and_cli. -+ -+1999-09-19 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (ret_from_irq): Just return when -+ interrupted from kernel space. -+ -+ * arch/sh/kernel/irq.c (do_IRQ): set syscall_nr = -1. -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Flush icache when needed. -+ -+ * arch/sh/kernel/process.c (show_regs): Display TEA value. -+ * arch/sh/kernel/traps.c (show_registers): Removed. -+ -+1999-09-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (system_call): Bug fix: TRA contains -+ the value = imm x 4. -+ -+ * arch/sh/mm/init.c (paging_init): Use ctrl_outl. -+ -+ * arch/sh/config.in (CONFIG_MEMORY_END): New config variable. -+ -+ * arch/sh/kernel/{entry.S,head.S,irq_onchip.c,setup.c,time.c}, -+ arch/sh/mm/{cache.c,fault.c}: Use __sh3__ and __SH4__ to -+ distinguish CPU. -+ -+ * include/asm-sh/addrspace.h, include/asm-sh/cache.h, -+ include/asm-sh/elf.h, include/asm-sh/mmu_context.h, -+ include/asm-sh/pgtable.h: Likewise. -+ -+ * arch/sh/Makefile (AFLAGS): Add processor specific flag. -+ -+ * arch/sh/kernel/head.S: Merge Kaz' implementation of SH-4 FPU -+ initialization. -+ -+ * arch/sh/kernel/time.c: SH-4 Support. -+ -+ * drivers/char/sh4scif.c: New file. -+ -+ * include/asm-sh/io.h (ctrl_in{b,w,l},ctrl_out{b,w,l}): New -+ Interfaces for memory mapped control register access. -+ -+1999-09-17 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (__flush_tlb_page): SH-4 Support. -+ -+ * arch/sh/kernel/signal.c (setup_frame, setup_rt_frame): -+ Add flush_icache_range. -+ -+ * arch/sh/mm/cache.c: SH-4 Support. -+ -+1999-09-15 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/mmu_context.h (MMU_TTB): Change for SH-4. -+ * arch/sh/kernel/entry.S (MMU_TEA): Change for SH-4. -+ -+ * arch/sh/Makefile (LIBS): Nuke the 'gniibe' dependency. -+ Suggested by Mikhail Sogrine <sogrine@Informatik.Uni-Tuebingen.De>. -+ -+1999-09-13 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/traps.c, include/asm-sh/semaphore.h, -+ include/asm-sh/spinlock.h: Updated to 2.3.18. -+ -+ * arch/sh/Makefile (HOSTCC): Removed. -+ Suggested by Mikhail Sogrine <sogrine@Informatik.Uni-Tuebingen.De>. -+ -+1999-09-12 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S: Add SH-4 Support. -+ -+1999-09-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/hardirq.h (synchronize_irq): barrier. -+ -+1999-09-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/delay.h (__delay): Fixed. -+ -+ * include/asm-sh/checksum.h (csum_tcpudp_nofold): Support both -+ endianess. -+ -+ * include/asm-sh/bugs.h, arch/sh/mm/fault.c, -+ arch/sh/kernel/traps.c, arch/sh/kernel/time.c, -+ arch/sh/kernel/ptrace.c, arch/sh/kernel/irq_onchip.c: -+ Update to 2.3.17. -+ -+1999-09-07 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/atomic.h (__atomic_fool_gcc): Add "volatile". -+ -+ SH4 Merge. Phase #1. -+ * include/asm-sh/io.h,arch/sh/Makefile: Merged. -+ -+ * include/asm-sh/addrspace.h: Replaced to Kaz's Implementation. -+ -+ * arch/sh/kernel/process.c (dump_thread,dump_fpu): Use Kaz's -+ Implementation. -+ (copy_thread,flush_thread,exit_thread): Merged. -+ (last_task_used_math): New Variable. -+ -+1999-09-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (cache_flush_all): Rename from -+ __fluch_cache_all, to distinguish the cache-flush-function for TLB -+ handling. This is the mere function to flush cache, with no -+ relation to TLB handling. -+ (cache_flush_area,cache_purge_area,cache_wback_area): Implemented, -+ not works as expected on SH7708S, though. -+ -+ * include/asm-sh/cache.h -+ (cache_flush_area,cache_purge_areacache_wback_area): -+ Add declarations. -+ -+ * include/asm-sh/io.h (dma_cache_inv,dma_cache_wback, -+ dma_cache_wback_inv): Define appropriate functions. -+ -+1999-09-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/checksum.h (ip_fast_csum): Fix bug. -+ -+ * arch/sh/kernel/head.S: Call cache_init. -+ -+ * arch/sh/mm/cache.c: New file. -+ -+ * arch/sh/vmlinux.lds.S: Include <linux/config.h>. -+ * arch/sh/Makefile: Don't use -imacros. -+ -+ * arch/sh/lib/memmove.S: New Implementation. -+ * arch/sh/lib/wordcopy.S: Removed. -+ -+1999-09-04 Toshi Morita <tm2@best.com> -+ -+ * include/asm-sh/unistd.h (_syscall0,1,2,3,4): Add "memory" clobber. -+ -+1999-09-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/system.h (switch_to): Save/restore GBR, so that -+ driver can use GBR. Suggested by Toshi Morita <tm2@best.com>. -+ -+ * include/asm-sh/{hdreg.h,ide.h}: New file (Updated to 2.3.16). -+ * arch/sh/kernel/irq.c (free_irq): Update to 2.3.16 (of i386 -+ version). -+ * include/asm-sh/uaccess.h (__range_ok: SIZE): Coerce to interger. -+ * include/asm-sh/system.h (__xchg): Add volatile qualifier for PTR. -+ -+ * include/asm-sh/bugs.h (check_bugs): Use __init instead of -+ __initfunc. -+ -+ * arch/sh/lib/memcpy.S: New implementation. -+ * arch/sh/lib/memset.S: New implementation. -+ -+1999-09-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/sys_sh.c (sys_oldmmap, sys_oldselect, -+ sys_olduname): Removed. -+ -+ * arch/sh/kernel/head.S: Implement SH4 cache initialization. -+ When clearing BSS, utilize predecrement feature of SuperH. -+ -+1999-09-03 John Hassey <hassey@gte.net> -+ -+ * arch/sh/kernel/head.S (CACHE_INIT): Fix to appropriate value 0xd. -+ -+1999-09-02 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/Makefile (archmrproper): Delete vmlinux.lds on "mrproper". -+ -+1999-09-01 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/checksum.h, arch/sh/lib/checksum.S: -+ Implemented with the interface of i386 version. -+ * arch/sh/lib/csum_partial_copy.c, arch/sh/lib/checksum.c: Removed. -+ -+1999-08-29 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/processor.h (thread_saved_pc): Implemented. -+ -+ * arch/sh/kernel/entry.S (interrupt_table): Fill `do_IRQ'. -+ -+1999-08-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/sh3sci.c (put_char): Wow! GCC 2.95.1 does super -+ optimization! Introduce barrier between asm statement. -+ -+ * arch/sh/kernel/test-img.c: New image. -+ * arch/sh/kernel/setup.c (setup_arch): Set initrd_end to -+ __bss_start. -+ -+ New System Call Interface. Thanks to YAEGASHI Takeshi for -+ the discussion. -+ * arch/sh/kernel/entry.S (system_call): Implement systemcall -+ which has more than five arguments. -+ -+ * include/asm-sh/unistd.h (_syscall0,1,2,3,4): Use trapa #0. -+ * arch/sh/kernel/process.c (kernel_thread): Ditto. -+ * arch/sh/kernel/signal.c (setup_frame, setup_rt_frame): Ditto. -+ -+ * arch/sh/kernel/entry.S -+ (general_exception,tlb_miss,interrupt,handle_exception): Avoid -+ potential races. We should stay BL=1 to avoid breakage of -+ hardware registers (such as TRA, MMU_TEA, k2, or k3). -+ -+ * arch/sh/kernel/traps.c (DO_ERROR): Add STI. -+ -+ New IRQ Programming Interface. -+ * arch/sh/kernel/irq.c, include/asm-sh/irq.h: Implemented. -+ * arch/sh/kernel/irq_onchip.c: New file. -+ -+ * arch/sh/kernel/time.c (time_init): Use new scheme. -+ -+1999-08-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/Makefile (arch/sh/vmlinux.lds): Add support for -+ a generation of the ldscript. -+ -+ * arch/sh/vmlinux.lds.S: Renemed from vmlinux.lds.S, and -+ introduce using CONFIG_MEMORY_START, and CONFIG_LITTLE_ENDIAN. -+ -+ * include/asm-sh/elf.h (EM_SH): Delete and... -+ * include/linux/elf.h (EM_SH): Add here. -+ -+ Updated to 2.3.15. -+ * include/asm/sh/pgtable.h (io_remap_page_range): Added. -+ -+1999-08-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * asm-sh/pgtable.h (SET_PAGE_DIR): Removed. -+ -+ * mm/fault.c (do_page_fault): Store the address to thread -+ structure. -+ -+ * asm-sh/processor.h (start_thread): Make it macro, instead of -+ inline function to avoid inclusion of ptrace.h. -+ Add the member "address" to store the memory address to be paged. -+ -+ * asm-sh/system.h (rmb, wmb): Added. -+ -+ * defconfig: New file. -+ * config.in: Add processor type selection, endianness, and memory -+ start address. -+ -+1999-08-25 John Hassey <hassey@gte.net> -+ -+ * asm-sh/byteorder.h: Add little endian support. -+ -+ * kernel/head.S: Check if cache is enabled already. -+ Don't flush it, if it is the case. -+ -+ * vmlinux.lds(___bss_start,__end): Aligned to 4-byte. -+ -+1999-08-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * asm-sh/elf.h (ELF_DATA): Support little endian. -+ -+ * drivers/block/rd.c (rd_request): Add minimum hack to -+ support ramdisk for root filesystem. -+ -+1999-08-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * mm/init.c (mem_init): Bug fix for counting datapages. -+ -+ * asm-sh/string.h (strncpy,strncmp): Clean up. -+ * asm-sh/system.h (xchg_u32): Bug fix. -+ * kernel/process.c (__switch_to, copy_thread): Handle the case where -+ mm == 0. -+ -+ * kernel/head.S(_stext:1): Fixed to correct mask value. -+ Reported by John Hassey <hassey@gte.net>. -+ -+1999-08-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * asm-sh/cache.h, asm-sh/hardirq.h, asm-sh/init.h, asm-sh/io.h, -+ asm-sh/mmu_context.h, asm-sh/page.h, asm-sh/pgtable.h, -+ asm-sh/processor.h, asm-sh/semaphore.h, asm-sh/softirq.h, -+ asm-sh/spinlock.h, asm-sh/system.h, asm-sh/unistd.h: -+ Update to 2.3.14. -+ -+ * asm-sh/hw_irq.h: New file (2.3.14). -+ -+ * kernel/entry.S (sys_idle), kernel/process.c (sys_idle): Removed -+ (Update to 2.3.14). -+ -+ * mm/init.c, mm/fault.c, kernel/init_task.c: Updated to 2.3.14. -+ * kernel/signal.c (do_signal): Update to 2.3.14. -+ * kernel/traps.c (DO_ERROR): Updated to 2.3.14. -+ -+ * config.in: Remove support of JAVA binaries. -+ -+1999-08-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * kernel/entry.S (signal_return): Revert the changes of 08-19. -+ (DO_FAULT): Remove unblocking of interrupt (not needed). -+ (interrupt): Set return address ret_from_irq, instead of -+ ret_from_syscall. -+ -+ * string.h (strncpy): Fix uninitialized __limit. -+ -+ * kernel/signal.c (setup_frame,setup_rt_frame): Support both endians. -+ -+1999-08-19 Niibe Yutaka <gniibe@m17n.org> -+ -+ * Second version, named "OSHIDASHI". -+ Linux 2.2.11. -+ -+ * system.h (__sti, __cli, __save_and_cli): Bug fix. -+ * kernel/entry.S (signal_return, DO_FAULT): Bug fix. -+ -+ * string.h: Remove useless "earlyclobber" constraints from asm -+ statements. -+ * uaccess.h,string.h,system.h: Don't write "r0" directly, instead -+ use %n specification. -+ -+ * socket.h, pgtable.h (ZERO_PAGE), mm/ioremap.c (__ioremap), mm/init.c -+ (show_mem): Updated to 2.2.11. -+ -+ * kernel/traps.c: Implement exception handling for address error, -+ reserved instruction and illegal slot instruction. -+ -+ * kernel/test-img.c (root_fs_image): compressed by GNU zip. -+ * kernel/setup.c (setup_arch), kernel/test-img.c: New root file -+ system image which includes executable using signal. -+ -+ * kernel/entry.S (ret_with_reschedule): Bug fix for access -+ tsk->sigpending. -+ (nmi, debug): Removed (because this is only for my board). -+ -+ * kernel/entry.S (exception_handling_table): set sys_ni_syscall -+ for ioperm, iopl, and vm86. -+ * kernel/ioport.c, kernel/vm86.c: Removed. -+ -+ * sigcontext.h, kernel/signal.c: Signal handling implemented. -+ -+ * sh3sci.c (put_char): Clean up a bit. -+ -+1999-08-18 Niibe Yutaka <gniibe@m17n.org> -+ -+ * Initial version, named "YORIKIRI". -+ -+ It boots! It runs ELF executable! It forks! -+ -+ Environment: -+ Linux 2.2.10. -+ Kyoto Micro Computer's SH-3 Evaluation Board (SH7708 60MHz). -+ GDB 4.18 with patch for the board. -+ GNU binutils snapshot 1999-08-17. -+ EGCS 1.1.2. -+ -+ Start writing ChangeLog: -+ * vmlinux.lds: Linker script for vmlinux. -+ -+ * kernel/vm86.c, kernel/traps.c, kernel/time.c, kernel/sys_sh.c, -+ kernel/sh_ksyms.c, kernel/setup.c, kernel/irq.c, -+ kernel/ioport.c, kernel/init_task.c, kernel/head.S, -+ kernel/entry.S, kernel/signal.c, kernel/ptrace.c, -+ kernel/process.c: It works! -+ -+ * kernel/test-img.c: Root fs image with -+ /dev/console --> /dev/tty0 (4,0) -+ /linuxrc printing "Hello World!. -+ -+ * lib/checksum.c, lib/csum_partial_copy.c, lib/delay.c, lib/memcpy.S, -+ lib/memmove.S, lib/memset.S, lib/old-checksum.c, lib/wordcopy.S: -+ Taken from GCC outputs, newlib-1.8.0, and other part of Linux. -+ -+ * mm/extable.c, mm/fault.c, mm/init.c, mm/ioremap.c: -+ Implement SH-3 MMU. -+ -+ * semaphore-helper.h, atomic.h, current.h, mman.h, processor.h, -+ unistd.h, bugs.h, softirq.h, user.h, bitops.h, shmparam.h, -+ namei.h, elf.h, ioctls.h, posix_types.h, statfs.h, termios.h, -+ termbits.h, signal.h, siginfo.h, unaligned.h, semaphore.h, -+ uaccess.h, system.h, cache.h, pgtable.h: Header files. -+ -+ * mmu_context.h: New file. Idea taken from MIPS Implementation. -+ -+Little History: -+ -+I've started the project which ports Linux to SuperH in the summer of -+1998. Got the CPU programming manual and hardware manual from -+Hitachi, prepared GNU tool-chains (binutils, gcc) on my Intel box. -+ -+I've asked Hitachi for hardware information of thier Windows CE -+machine, but it seemed that it was difficult for Hitachi to disclose -+the information (NDA wrt Microsoft???). Anyway, I've started writing -+some code with Linux version 2.1.63. -+ -+As there's no platform running the code, I got bored. Hence, in June -+1999, I bought "SH-3 Evaluation Kit" made by Kyoto Micro Computer, -+which is available from CQ publishing company (in Japan). At first, -+I've port GDB for that board, it helps me much for understanding the -+CPU. Then, I port Linux 2.2.10. -+ -+ -- Niibe Yutaka -+ at ETL, Tsukuba, Japan. -+ 1999-08-18 -diff -ruN linux-2.6.17-vanilla/ChangeLog-2000 linux-2.6.17/ChangeLog-2000 ---- linux-2.6.17-vanilla/ChangeLog-2000 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/ChangeLog-2000 2006-07-12 16:54:18.000000000 +0000 -@@ -0,0 +1,2069 @@ -+2000-12-28 Mitch Davis <mdavis@pocketpenguins.com> -+ -+ * Changelog, arch/sh/kernel/Makefile, -+ arch/sh/kernel/mach_foobar.c: Replaced FOOBAR with DMIDA. -+ -+2000-12-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/Makefile: Added CONFIG_SH_DREAMCAST. -+ * drivers/char/maple.{h,c}: New files. -+ * drivers/char/dc_keyb.c: New file. -+ -+ * drivers/video/Config.in (CONFIG_FB_DC): Added. -+ * drivers/video/Makefile (obj-$(CONFIG_FB_DC)): Added. -+ * drivers/video/dcfb.c: New file. -+ * drivers/video/fbmem.c: Added CONFIG_FB_DC. -+ -+ * include/asm-sh/io.h: Added CONFIG_SH_DREAMCAST. -+ * include/asm-sh/io_dc.h: New file. -+ * include/asm-sh/machvec.h: Added MACH_DREAMCAST. -+ * include/asm-sh/keyboard.h (kbd_init_hw): Added code for -+ MACH_DREAMCAST. -+ -+ * arch/sh/kernel/Makefile (obj-$(CONFIG_SH_DREAMCAST)): Added. -+ * arch/sh/kernel/setup_dc.c: New file. -+ * arch/sh/kernel/io_dc.c: New file. -+ * arch/sh/kernel/mach_dc.c: New file. -+ -+ * arch/sh/config.in: Added Dreamcast support, whatever it means. -+ -+2000-12-25 Philipp Rumpf <prumpf@tux.org> -+ -+ * arch/sh/kernel/rtc.c, include/asm-sh/rtc.h: New files. -+ * arch/sh/config.in [CONFIG_SH_RTC]: made SH onchip RTC support -+ conditional. -+ * arch/sh/kernel/Makefile [CONFIG_SH_RTC]: Likewise. -+ * arch/sh/kernel/mach_dmida.c, arch/sh/kernel/mach_se.c, -+ arch/sh/kernel/mach_hp600.c, arch/sh/kernel/mach_unknown.c: Likewise. -+ * arch/sh/kernel/time.c (get_timer_frequency): modified to work with -+ non-standard RTCs. -+ (do_timer_interrupt): Likewise. -+ (set_rtc_time) (get_rtc_time): removed functions -+ -+2000-12-25 Philipp Rumpf <prumpf@tux.org> -+ -+ * arch/sh/kernel/mach_ec3104.c, arch/sh/kernel/io_ec3104.c, -+ arch/sh/kernel/setup_ec3104.c, include/asm-sh/ec3104.h, -+ include/asm-sh/io_ec3104.h, include/asm-sh/serial-ec3104.h, -+ include/asm-sh/keyboard-ec3104.h, -+ drivers/char/ec3104_keyb.c: New files -+ -+ * arch/sh/config.in, arch/sh/kernel/Makefile, include/asm-sh/io.h, -+ include/asm-sh/irq.h, include/asm-sh/machvec.h: Added support for -+ the EC3104 companion chip. -+ -+ * include/asm-sh/serial.h [CONFIG_SH_EC3104]: Use alternate header -+ file for EC3104. -+ * include/asm-sh/keyboard.h [CONFIG_SH_EC3104]: Likewise. -+ -+2000-12-25 Philipp Rumpf <prumpf@tux.org> -+ -+ * drivers/video/epson1355fb.c: New file -+ * drivers/video/Config.in, drivers/video/Makefile, -+ drivers/video/fbmem.c: added epson 1355 support -+ -+2000-12-24 Philipp Rumpf <prumpf@tux.org> -+ -+ * arch/sh/boot/compressed/head.S (init_sr): initialize imask to 15 -+ * arch/sh/kernel/fpu.c: Remove '$' for register specification. -+ -+2000-12-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/Makefile, arch/sh/mm/Makefile, arch/sh/lib/Makefile -+ arch/sh/overdrive/Makefile: New style Makefile. -+ -+ * Updated to 2.4.0-test13-pre4. -+ -+ * Updated to 2.4.0-test12. Mostyly done by Greg Banks. -+ -+2000-11-26 Takashi Yoshii <yoshii-takashi@hitachi-ul.co.jp> -+ -+ * arch/sh/boot/compressed/head.S (fake_headers_as_bzImage): Added. -+ -+2000-11-23 David Howells <dhowells@redhat.com> -+ -+ * arch/sh/kernel/traps.c (handle_unaligned_ins): -+ Use copy_from_user, copy_to_user (were __copy_user). -+ (handle_unaligned_delayslot): Likewise. -+ (do_address_error): Likewise. -+ -+2000-11-23 David Howells <dhowells@redhat.com> -+ -+ * arch/sh/kernel/traps.c: New Variable. -+ (die_if_no_fixup): Return integer. -+ (handle_unaligned_ins): Retern integer. -+ (handle_unaligned_delayslot, handle_unaligned_access): New -+ functions. -+ -+2000-11-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.4.0-test11. -+ * arch/sh/kernel/time.c (set_rtc_time): Add declaration of abs. -+ (time_init): Remove unused variable 'i'. -+ * arch/sh/kernel/setup_hd64461.c (setup_hd64461): Ifdef-out -+ access of INTC_ICR1. -+ -+ * include/asm-sh/pgtable.h(module_map, module_umap): Removed. -+ * include/asm-sh/xor.h, include/asm-sh/module.h: New files. -+ * arch/sh/config.in (CONFIG_EISA, CONFIG_MCA): Added. -+ -+2000-11-17 YAEGASHI Takeshi <yaegashi@ma.kcom.ne.jp> -+ -+ * arch/sh/config.in: Add HP620/680/690 support. -+ -+ * include/asm-sh/machvec.h, arch/sh/kenrnel/mach_hp600.c: Add -+ HP620/680/690 machine vectors. -+ -+ * arch/sh/kernel/setup.c: Add struct screen_info. -+ -+ * drivers/char/scan_keyb.[ch], drivers/char/hp600_keyb.c: Add HP620 -+ keyboard support. Reverse bit order of scan table. Use kernel -+ timer instead of task queue. -+ -+ * drivers/net/smc9194.c: Bug fix. -+ -+ * drivers/video/hitfb.c: API clean up. Add 8bpp support for HP620. -+ -+ * include/asm-sh/ide.h, arch/sh/kernel/io_hd64461.c: Add ide1 ports. -+ -+ * include/asm-sh/hd64461.h: Add more register definitions. -+ -+2000-11-15 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/time.c (time_init): clock calculation bug fixed. -+ -+ * arch/sh/io_generic.c: Follow the change of I/O func. -+ -+2000-11-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/Makefile (CFLAGS, AFLAGS): Use -m4-nofpu. -+ -+ * arch/sh/kernel/io.c, arch/sh/kernel/io_generic.c, -+ arch/sh/kernel/io_hd64461.c, arch/sh/kernel/io_hd64465.c, -+ arch/sh/kernel/io_se.c, arch/sh/kernel/setup_hd64461.c, -+ arch/sh/overdrive/io.c, include/asm-sh/io.h, -+ include/asm-sh/io_generic.h, include/asm-sh/io_hd64461.h, -+ include/asm-sh/io_hd64465.h, include/asm-sh/io_od.h, -+ include/asm-sh/io_se.h, include/asm-sh/io_unknown.h, -+ include/asm-sh/machvec.h: Clean up the API. -+ arch/sh/kernel/process.c: Follow the change of I/O func. -+ -+ * include/asm-sh/pgtable-2level.h (pgd_none, pgd_bad, pgd_present, -+ pmd_offset): Make them static inline. -+ * include/asm-sh/pgtable.h (pte_read, pte_exec, pte_dirty, -+ pte_young, pte_write, pte_shared, pte_rdprotect, pte_exprotect, -+ pte_mkclean, pte_mkold, pte_wrprotect, pte_mkread, pte_mkexec, -+ pte_mkdirty, pte_mkyoung, pte_mkwrite, pte_modify): Likewise. -+ * include/asm-sh/siginfo.h (copy_siginfo): Likewise. -+ * include/asm-sh/uaccess.h (verify_area): Likewise. -+ -+ * include/asm-sh/io.h(___raw_readq, ___raw_writeq): Removed. -+ -+ * arch/sh/kernel/entry.S (call_dae): Remove STI(). -+ * arch/sh/kernel/traps.c (handle_unaligned): Use __LITTLE_ENDIAN__ -+ instead. -+ -+2000-11-11 Jesper Skov <jskov@redhat.com> -+ -+ * arch/sh/kernel/traps.c (handle_unaligned, do_address_error): -+ New functions. -+ Added bad alignment handling, based on original code by Philipp -+ Rumpf, bug fixed, and enhanced to handle r0-indexed access as well. -+ (DO_ERROR(7), DO_ERROR(8)): Removed. -+ (trap_init): Dont' set exception_handling_table[7] and [8]. -+ * arch/sh/kernel/entry.S (address_error_load, address_error_store, -+ call_dae): New entries. -+ -+2000-11-11 Philipp Rumpf <prumpf@parcelfarce.linux.theplanet.co.uk> -+ -+ * arch/sh/kernel/time.c (get_cpu_mhz, rtc_interrupt, irq1): Removed. -+ (get_timer_frequency): New function. -+ (time_init): New way of get the frequency. -+ -+2000-11-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/Makefile (arch/sh/vmlinux.lds): Add -traditional. -+ (O_OBJS): Add io_generic.o unconditionally. -+ -+2000-11-11 Jesper Skov <jskov@redhat.com> -+ -+ * arch/sh/kernel/entry.S, arch/sh/kernel/head.S, -+ arch/sh/kernel/irq.c, arch/sh/kernel/irq_imask.c, -+ arch/sh/kernel/process.c, arch/sh/kernel/traps.c, -+ arch/sh/lib/checksum.S, include/asm-sh/current.h, -+ include/asm-sh/delay.h, include/asm-sh/processor.h, -+ include/asm-sh/system.h: Remove '$' for register specification. -+ * arch/sh/lib/checksum.S (SRC, DST): Use "..." for CPP. -+ * arch/sh/kernel/Makefile (.S.o): Remove -traditional flag. -+ * arch/sh/lib/Makefile: Ditto. -+ -+2000-11-07 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/irq_ipr.c (ipr_irq_demux): Set port mode register -+ before read data register. -+ -+ * include/asm-sh/irq.h (PORT_PxCR): Defined. -+ -+2000-11-04 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/time.c (do_gettimeoffset): Implemented. -+ (time_init): TMU0 counter value changed. -+ -+ * include/asm-sh/timex.h (CLOCK_TICK_RATE) Changed. -+ -+2000-11-03 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/irq_ipr.c Add PINT interrupt hanlers. -+ (ipr_irq_demux): IPR/PINT interrupt demux added. -+ (pint_irq_type, pint_map): Added. -+ (init_IRQ): Add PINT initializer. -+ (*_IPR_*): Fixed typo. -+ -+ * arch/sh/kernel/setup_hd64461.c (hd64461_irq_demux): use __irq_demux -+ -+ * include/asm-sh/irq.h (NR_IRQS): changed. -+ (irq_demux): Changed. -+ (__irq_demux): Defined. -+ (PINT_IRQ_BASE, PINT0_IRQ, PINT8_IRQ, PINT0_IPR_ADDR, PINT8_IPR_ADDR, -+ PINT0_IPR_POS, PINT8_IPR_POS, PINT0_PRIORITY, PINT8_PRIORITY): added. -+ (PORT_PADR, PORT_PBDR, PORT_PCDR, PORT_PFDR): added. -+ (*_IPR_*): Fixed typo. -+ -+2000-11-02 Takashi Yoshii <yoshii-takashi@hitachi-ul.co.jp> -+ -+ * arch/sh/kernel/dma.c: New file. -+ -+ * include/asm-sh/dma.h (SH_MAX_DMA_CHANNELS): Added. -+ (SAR, DAR, DMATCR, CHCR, DMAOR, DMTE_IRQ, DMA_MODE_READ, -+ DMA_MODE_WRITE, DMA_AUTOINIT, REQ_L, REQ_E, RACK_H, RACK_L, ACK_R, -+ ACK_W, ACK_H, ACK_L, DM_INC, DM_DEC, SM_INC, SM_DEC, RS_DUAL, RS_IN, -+ RS_OUT, TM_BURST, TS_8, TS_16, TS_32, TS_64, TS_BLK, CHCR_DE, -+ CHCR_TE, CHCR_IE, DMAOR_COD, DMAOR_AE, DMAOR_NMIF, DMAOR_DME): -+ Added. -+ (struct dma_info_t): defined. -+ (clear_dma_ff, claim_dma_lock, release_dma_lock, setup_dma, -+ enable_dma,disable_dma, set_dma_mode, set_dma_addr, set_dma_count, -+ get_dma_residue): Declared. -+ -+ * include/asm-sh/irq.h (DMTE0_IRQ, DMTE1_IRQ, DMTE2_IRQ, DMTE3_IRQ, -+ DMAE_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY): Added macros. -+ -+2000-11-02 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.4.0-test10. -+ * include/asm-sh/ptrace.h (PTRACE_SETOPTIONS): Added -+ (PTRACE_O_TRACESYSGOOD): Added. -+ * include/asm-sh/param.h (CLOCKS_PER_SEC): Added. -+ * arch/sh/kernel/ptrace.c (sys_ptrace:PTRACE_DETACH): Set -+ child->ptrace =0. -+ (sys_ptrace): Add the case of PTRACE_SETOPTIONS. -+ (syscall_trace): Handle ptrace flag 0x80. -+ -+2000-10-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/mach_unknown.c (mv_ioremap_nocache): Removed. -+ * arch/sh/kernel/mach_se.c (mv_ioremap_nocache): Removed. -+ * arch/sh/kernel/io_unknown.c (ioremap_nocache): Removed. -+ * arch/sh/kernel/io_generic.c (generic_ioremap_nocache): Removed. -+ -+ * include/asm-sh/io_unknown.h (unknown_ioremap_nocache, -+ __ioremap_nocache): Removed. -+ * include/asm-sh/io_se.h (__ioremap_nocache): Removed. -+ * include/asm-sh/io_od.h (__ioremap_nocache): Removed. -+ * include/asm-sh/io_hd64465.h (__ioremap_nocache): Removed. -+ * include/asm-sh/io_generic.h (generic_ioremap_nocache): Removed. -+ * include/asm-sh/io.h (__ioremap_nocache): Removed. -+ * include/asm-sh/io.h (ioremap_nocache): Removed. -+ * include/asm-sh/machvec.h (struct sh_machine_vector): Removed -+ ioremap_nocache. -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): SH-3 doesn't have PTEA. -+ -+2000-10-27 Bryan Rittmeyer <bryan@ixiacom.com> -+ -+ * arch/sh/kernel/setup.c (setup_arch): Declare mv_unknown. -+ * arch/sh/kernel/sh_ksyms.c: Removed comment for memcmp. -+ -+2000-10-27 David Woodhouse <dwmw2@infradead.org> -+ -+ * arch/sh/kernel/time.c (get_cpu_mhz): Add .align 2 for speed -+ detection. -+ -+2000-10-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (__do_page_fault): Removed (now it's call_dpf -+ in entry.S). -+ (__do_page_fault): Rename from __do_page_fault1. -+ -+ * arch/sh/kernel/entry.S (call_dpf): New entry. -+ (tlb_miss_load, tlb_miss_store, initial_page_write, -+ tlb_protection_violation_load, tlb_protection_violation_store): Use -+ call_dpf. -+ -+ * include/asm-sh/pgalloc-2level.h (get_pmd_fast, free_pmd_fast, -+ free_pmd_slow, pmd_alloc): Make them static inline. -+ -+ * arch/sh/mm/ioremap.c (remap_area_pages): Use pgd_offset_k. -+ (remap_area_pte): Use _PAGE_HW_SHARED. -+ (remap_area_pages): Remove set_pgdir. -+ -+ * include/asm-sh/pgalloc.h (set_pgdir): Removed. -+ (get_pgd_slow, get_pgd_fast, free_pgd_fast, free_pgd_slow, -+ get_pte_fast, free_pte_fast, free_pte_slow, pte_alloc_kernel, -+ pte_alloc, pmd_free, flush_tlb_pgtables): Make them static inline. -+ (get_pgd_slow, free_pgd_slow): Use 2KB PGD. -+ -+2000-10-13 Greg Banks <gbanks@pocketpenguins.com> -+ -+ * arch/sh/config.in: HD64465 PCMCIA support. These changes -+ needed for the PCMCIA host bridge driver currently submitted -+ to the PCMCIA maintainer. -+ * arch/sh/kernel/io_hd64465.c: IO routines for HD64465. -+ * arch/sh/kernel/mach_dmida.c: Added machine DMIDA. -+ * arch/sh/kernel/Makefile: Added machine DMIDA. Added HD64465. -+ Reorged how O_OBJS list is built. -+ * arch/sh/kernel/setup_hd64465.c: Setup and IRQ handling for HD64465. -+ * arch/sh/kernel/sh_ksyms.c: Exported various symbols to make -+ PCMCIA modules work. -+ * arch/sh/mm/fault.c: TLB miss handler sets TC/SA bits of -+ PTEA according to bits in PTE. -+ * include/asm-sh/hd64465.h: Register defines for HD64465. -+ * include/asm-sh/io.h: Added machine DMIDA -+ * include/asm-sh/io_hd64461.h: Function declaration. -+ * include/asm-sh/io_hd64465.h: IO declarations for HD64465. -+ * include/asm-sh/machvec.h: HD64465 support. -+ * include/asm-sh/mmu_context.h: PTEA define. -+ * include/asm-sh/pgtable.h: PAGE_KERNEL_PCC(slot, type) is a -+ pgprot_t which can be used to setup SH7750 PCMCIA space mappings. -+ -+2000-09-29 Bryan Rittmeyer <bryan@ixiacom.com> -+ -+ * arch/sh/kernel/sh_ksyms.c (memcpy, memset, memmove, memcmp, -+ flush_dcache_page): Added. -+ -+2000-09-29 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/unistd.h (setup): Removed. -+ -+2000-09-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/system.h (switch_to): Add T-flag to the clobber -+ list of asm statements. -+ -+2000-09-28 Jesper Skov <jskov@redhat.com> -+ -+ * include/asm-sh/string.h: Add T-flag to the clobber list of asm -+ statements. -+ * include/asm-sh/delay.h: Same. -+ * include/asm-sh/checksum.h: Same. -+ * include/asm-sh/bitops.h: Same. -+ * arch/sh/kernel/time.c: Same. -+ * arch/sh/kernel/irq_imask.c: Same. -+ * arch/sh/kernel/process.c: Same. -+ * include/asm-sh/uaccess.h: Same. Plus clobber memory in -+ copy_to_user and clear_user. -+ -+2000-09-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (sys_fcntl64): Added. -+ * include/asm/unistd.h (__NR_fcntl64): Added. -+ -+2000-09-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm/unistd.h (_syscall0, _syscall1, _syscall2, _syscall3, -+ _syscall4, _syscall5): Don't put "$" prefix for register name. -+ * include/asm-sh/system.h (switch_to): Likewise. -+ * arch/sh/kernel/sh_bios.c (sh_bios_call): Likewise. -+ * arch/sh/kernel/process.c (kernel_thread): Likewise. -+ Use __sc0 and __sc3. -+ -+ * arch/sh/lib/checksum.S (SRC, DST): Don't use variable arguments. -+ -+ * drivers/char/sh-sci.c (sci_set_termios_cflag): Call init_pins -+ AFTER setting baud. -+ -+2000-09-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/system.h (smp_mb, smp_rmb, smp_wmb): Use CONFIG_SMP -+ instead of __SMP__. -+ -+2000-09-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/system.h (smp_mb, smp_rmb, smp_wmb): New macros. -+ (__sti, __cli, (xchg_u32, xchg_u8): Make them static inline. -+ -+ * include/asm-sh/bitops.h (set_bit, clear_bit, change_bit, -+ test_and_set_bit, test_and_clear_bit, test_and_change_bit, test_bit, -+ ffz, find_next_zero_bit, ext2_set_bit, ext2_clear_bit, -+ ext2_test_bit, ext2_find_next_zero_bit): Make them static inline. -+ (smp_mb__before_clear_bit, smp_mb__after_clear_bit): New macros. -+ -+ * include/asm-sh/atomic.h (atomic_t): Use volatile int member -+ regardless of CONFIG_SMP or not. -+ (__atomic_fool_gcc): Removed. -+ (atomic_add, atomic_sub, atomic_add_return, atomic_sub_return, -+ atomic_clear_mask, atomic_set_mask): Make them static inline. -+ -+2000-09-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the change of test9-pre6. -+ * include/asm-sh/resource.h (RLIMIT_LOCKS): Added. -+ (INIT_RLIMITS): Added new entry for LOCKS. -+ -+ * include/asm-sh/fcntl.h (F_INPROGRESS, LOCK_MAND, LOCK_READ, -+ LOCK_WRITE, LOCK_RW, F_LINUX_SPECIFIC_BASE): Added. -+ -+2000-09-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pci.h (pcibios_set_master, -+ pcibios_penalize_isa_irq, (pci_map_single, pci_unmap_single, -+ pci_map_sg, pci_unmap_sg, pci_dma_sync_single, pci_dma_sync_sg): -+ Make them static. -+ -+2000-09-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/setup_cqreek.c: Remove mv_port_2addr. -+ * include/asm/io_hd64461.h (__isa_port2addr, __ioremap, __iounmap): -+ Added. -+ -+2000-09-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow new cache handling scheme. Because now is the transition -+ time (I think it's not fully changed to use "flush_dcache_page"), -+ let's leave flush_page_to_ram. -+ -+ * arch/sh/mm/cache.c (clear_user_page, copy_user_page): Implemented. -+ (__flush_page_to_ram): New function. -+ (flush_page_to_ram): Use __flush_page_to_ram. -+ -+ * include/asm-sh/page.h (clear_user_page, copy_user_page): Define -+ function for SH-4. -+ -+ Revert the changes of 2000-09-09. -+ * arch/sh/mm/cache.c (flush_cache_page): Reverted. -+ * include/asm-sh/pgtable.h (flush_cache_page): Ditto. -+ -+2000-09-18 YAEGASHI Takeshi <yaegashi@ma.kcom.ne.jp> -+ -+ SCI error handling(frame/parity/overrun error, BREAK) -+ -+ * include/asm-sh/irq.h: Add *_BRI_IRQ definitions. -+ -+ * arch/sh/kernel/irq_ipr.c (init_IRQ): Add make_ipr_irq() calls for -+ *_BRI_IRQ. -+ -+ * drivers/char/sh-sci.h : Add BRI to irq table, new macros. -+ -+ * drivers/char/sh-sci.h (sci_handle_errors, sci_handle_breaks, -+ sci_br_interrupt): added. -+ (sci_receive_chars): Add error handling for SCIF(checking SCxSR). -+ (sci_er_interrupt): Add error handling for SCI(sci_handle_errors). -+ (sci_init): Add BRI initialization. -+ -+2000-09-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (flush_cache_page): Do nothing. -+ * arch/sh/mm/cache.c (flush_cache_page): Removed. -+ -+2000-09-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/irq_imask.c (startup_imask_irq, -+ shutdown_imask_irq): Don't do anything. When used with -+ proble_irq, interrupt may be masked. -+ NOTE: For IMASK, default is "all enabled" -+ -+ * arch/sh/kernel/irq_ipr.c (make_ipr_irq): Revert the changes on -+ 09-05. It's done with disable_irq_nosync. -+ -+2000-09-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the changes of 2.4.0-test8-pre5. -+ -+ * arch/sh/kernel/process.c (copy_thread): Add "unused" argument. -+ It's "stack_top" from do_fork. -+ (sys_fork, sys_clone, sys_vfork): Add last argument 0. -+ -+2000-09-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/irq_ipr.c (make_ipr_irq): Initialize status, action -+ and depth field. -+ -+2000-09-04 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * drivers/char/sh-sci.h (SCIF_ORER): Added. -+ * drivers/char/sh-sci.c (sci_er_interrupt): Handle overrun error -+ for SH-4 SCIF. -+ (sci_set_baud): Set SCSMR bit0,1(clock select) every time. -+ -+2000-09-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the changes of 2.4.0-test8-pre3. -+ -+ * arch/sh/kernel/signal.c (do_signal): Use pending.signal, instead -+ of signal (taskstruct structure chane for siganal). -+ -+ * include/asm-sh/uaccess.h (put_user_ret, get_user_ret, -+ __put_user_ret, __get_user_ret, copy_to_user_ret, -+ __copy_to_user_ret, copy_from_user_ret, __copy_from_user_ret): -+ Removed. -+ -+2000-09-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (cache_init): Re-initialize the cache system, -+ even if it's already initialized. -+ (detect_cpu_and_cache_system): Be conservative. -+ -+2000-09-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (_PAGE_PRESENT): Use hardware V-bit. -+ (_PAGE_U0_SHARED): New macro to implement user space shared page. -+ (_PAGE_HW_SHARED): We need this hardware setting. -+ (_PAGE_FLAGS_HARDWARE_DEFAULT): Removed. -+ (_PAGE_FLAGS_HARDWARE_MASK): Include SZ-bit, SH-bit and WT-bit. -+ (_PAGE_FLAGS_HARD): Hardware PTE flags setting (for SZ=4KB). -+ (_PAGE_SHARED): Use U0_SHARED for SH-4, HW_SHARED for SH-3, because -+ there's alias issue on SH-4. -+ (PAGE_NONE, PAGE_SHARED, PAGE_COPY, PAGE_READONLY, PAGE_KERNEL, -+ PAGE_KERNEL_RO): Includd _PAGE_FLAGS_HARD. -+ -+ (PAGE_KERNEL, PAGE_KERNEL_RO): Include _PAGE_HW_SHARED. -+ -+ (_PAGE_ACCESSED, _PAGE_PROTNONE): Layout changed. -+ (SWP_TYPE, SWP_OFFSET, SWP_ENTRY): Likewise. -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Don't OR the hardware value -+ to PTE. It's now already included. -+ -+2000-08-31 Jesper Skov <jskov@redhat.com> -+ -+ * arch/sh/mm/fault.c (__do_page_fault): Fixed bug that caused -+ infinite cycle of faults when writing to a page for the first time. -+ -+2000-08-30 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/head.S: Move the alignment expression before .text -+ directive. -+ -+2000-08-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.0-test7. -+ -+2000-08-25 Jesper Skov <jskov@redhat.com> -+ -+ * arch/sh/vmlinux.lds.S: Discard .exitcalls from modules. -+ -+ * Documentation/Configure.help: Fixed CPU selection description. -+ -+2000-08-24 Bryan Rittmeyer <bryan@ixiacom.com> -+ -+ * drivers/char/sh-sci.h (BPS_57600): Added. -+ * drivers/char/sh-sci.c (sci_set_baud): Support 57600 baud. -+ -+2000-08-24 Toshinobu Sugioka <sugioka@itonet.co.jp> -+ -+ * net/ipv4/ip_sockglue.c: Include -+ <linux/netfilter_ipv4/ipchains_core.h>. -+ -+2000-08-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * net/ipv4/ip_sockglue.c (ip_setsockopt): Bug fix. Ipchains didn't -+ work. When IP_FW_XXX command is invoked, we don't need to get the -+ VAL with get_user, it might got EFAULT when the optval is not -+ aligned as 4-byte. (Ipchains uses string as OPTVAL). -+ -+2000-08-23 Greg Banks <gbanks@pocketpenguins.com> -+ -+ (These entries were written by gniibe.) -+ * arch/sh/kernel/entry.S (system_call): Remove setting of return -+ value. -+ -+ * arch/sh/kernel/sh_ksyms.c (strlen): Exported. -+ (DECLARE_EXPORT): New macro. -+ (__udivsi3_i4, __sdivsi3_i4, __movstr_i4_even, __movstr_i4_odd, -+ __ashrdi3, __ashldi3): Exported. -+ -+2000-08-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the change of 2.4.0-test7-pre7. -+ * include/asm-sh/fcntl.h (F_GETLK64, F_SETLK64, F_SETLKW64): New -+ macros. -+ (flock64): Added. -+ -+ Updated to 2.4.0-test7-pre7. -+ * include/asm-sh/unistd.h (__NR_getdents64): Added. -+ * include/asm-sh/mmu_context.h (init_new_context): Return 0. -+ -+ * arch/sh/kernel/mach_se.c: Include <linux/config.h>. -+ * arch/sh/kernel/mach_unknown.c: Likewise. -+ * arch/sh/kernel/setup_cqreek.c: Likewise. -+ * include/asm-sh/dma.h: Likewise. -+ * include/asm-sh/machvec_init.h: Likewise. -+ -+ * arch/sh/kernel/entry.S (sys_getdents64): Added. -+ -+ * arch/sh/kernel/cf-enabler.c: Don't include <linux/config.h>. -+ * arch/sh/kernel/io.c: Ditto. -+ * arch/sh/kernel/io_generic.c: Likewise. -+ -+2000-08-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Bug fix. This routine -+ is called by ptrace when PTE does not have information. -+ -+2000-08-19 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/setup_cqreek.c (setup_cqreek): Work around. -+ Let it not sleep. -+ -+ * arch/sh/kernel/setup_cqreek.c (struct cqreek_irq_data): New -+ structure. -+ (disable_cqreek_irq, enable_cqreek_irq, mask_and_ack_cqreek, -+ init_cqreek_IRQ): Generalized to handle both cases of IDE and ISA. -+ -+ * mm/vmscan.c (try_to_swap_out): We need to call flush_page_to_ram. -+ -+ * arch/sh/mm/cache.c (flush_page_to_ram): Semantics change. -+ We invalidate the cache line too. -+ (flush_cache_page): No need to do any for physically tagged cache. -+ -+ * mm/memory.c (break_cow, do_anonymous_page, do_no_page): Revert the -+ changes of 2000-08-17. NOTE: In fact, we need to flush I-cache at -+ break_cow and do_anonymous_page, but it's buggy software if it's -+ goes fetch the instruction from that page... -+ (do_swap_page): flush_page_to_ram instead of flush_dcache_page. -+ -+2000-08-17 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * mm/memory.c (do_anonymous_page): We need to flush I-cache and -+ D-cache here, as it's newly allocated page. -+ (do_no_page): We need to flush D-cache. -+ (do_swap_page): Flush D-cache & I-cache here. There're cases -+ where read_swap_cache is called asynchronously and pages are -+ cached. -+ -+ * Revert the change for fs/buffer.c (end_buffer_io_async). It's -+ more than needed. We only need to flush when kernel WRITES to the -+ page (from I/O), not READ (to I/O). -+ -+ * Revert the changes for mm/memory.c (do_wp_page: case 1): We have -+ valid PTE here (it's read-only but works). -+ -+2000-08-16 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * fs/buffer.c (end_buffer_io_async): Flush D-cache. When kernel -+ writes to the page, we should flush USER cache so that USER doesn't -+ read stale data. -+ -+ * mm/memory.c (do_swap_page): Bug fix. We need to flush D-cache. -+ For newly allocated page, D-cache may contain stale USER data. -+ (break_cow): Likewise. Note that flush_cache_page is not good for -+ physically tagged architecture. (For old implementation, flushing -+ routine was called before setting PTE.) -+ (do_wp_page: case 1): Likewise. -+ -+2000-08-13 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * mm/memory.c (break_cow): Bug fix. We need to flush I-cache. -+ For newly allocated page, I-cache may contain stale USER data. -+ -+ * arch/sh/mm/init.c (mem_init): Flush empty_zero_page. -+ -+2000-08-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (check_cache_page): Renamed from -+ check_dcache_page. -+ -+2000-08-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.0-test6. -+ -+ * arch/sh/mm/cache.c (check_dcache_page): New debug function. -+ * arch/sh/kernel/traps.c (dump_stack): Only output call trace. -+ -+ Cosmetic changes for TLB handling. -+ * arch/sh/mm/fault.c (__flush_tlb_page): First argument is ASID now -+ (instead of MM). -+ (__flush_tlb_page): Don't take MM as argument. -+ (handle_vmalloc_fault): Removed. -+ (do_page_fault): Don't call handle_vmalloc_fault. -+ (__do_page_fault1, __do_page_fault): New functions. -+ (update_mmu_cache): Use pte_shared. -+ (flush_tlb_page): Handle the case where MM != CURRENT->MM. -+ (flush_tlb_range): Likewise. -+ -+ * include/asm-sh/pgtable.h (pte_shared): New inline function. -+ (_PAGE_SHARED): New macro. -+ (PAGE_SHARED): Added _PAGE_SHARED. -+ -+ * arch/sh/kernel/entry.S (tlb_miss_load, tlb_miss_store, -+ initial_page_write, tlb_protection_violation_load, -+ tlb_protection_violation_store): Call __do_page_fault. -+ Don't call STI(). -+ -+ Follow the change of 2.4.0-test6-pre10. -+ * include/asm-sh/page.h (virt_to_page, VALID_PAGE): New macro. -+ (MAP_NR): Removed. -+ -+2000-08-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.0-test6-pre9. -+ -+ * arch/sh/mm/cache.c (flush_cache_page): Call flush_dcache_page. -+ (flush_cache_range): Call flush_cache_all. -+ (flush_dcache_page): New function. Flush D-cache for the page. -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Use flush_dcache_page. -+ -+ * arch/sh/mm/cache.c (flush_icache_page, flush_page_to_ram): Revert -+ the changes on 08-05. -+ -+ * include/asm-sh/pgtable.h (flush_dcache_page): Added declaration -+ for SH-4. -+ -+ Import changes from 2.4.0-test6-pre8. -+ * arch/sh/mm/init.c: Use virt_to_page to get page. -+ * include/asm-sh/processor.h: Likewise. -+ * include/asm-sh/pgtable.h (ZERO_PAGE): Likewise. -+ (pte_pagenr): Removed. -+ -+2000-08-09 Toshinobu Sugioka <sugioka@itonet.co.jp>. -+ -+ * arch/sh/kernel/signal.c (save_sigcontext_fpu): Bug fix. -+ We can't use immediate value for __copy_to_user. -+ -+2000-08-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Import changes from 2.4.0-test6-pre7. (by Keith Owens) -+ * include/asm-sh/hardirq.h (irq_cpustat_t, in_interrupt, in_irq, -+ hardirq_trylock, irq_enter, irq_exit): Clean them up. -+ * include/asm-sh/softirq.h (cpu_bh_disable, cpu_bh_enable, -+ in_softirq): Likewise. -+ * arch/sh/kernel/irq.c: Likewise. -+ * arch/sh/kernel/entry.S (ret_from_syscall): Use __irq_stat. -+ -+ Import changes from 2.4.0-test6-pre7. (Perhaps, by David S. Miller) -+ * include/asm-sh/pgtable.h (flush_dcache_page): Added. -+ (page_address): Remove debug functionality. -+ * include/asm-sh/system.h: Remove set_rmb. -+ -+2000-08-05 Jesper Skov <jskov@redhat.com> -+ -+ Changes to use SCI/F for PPP. -+ * drivers/char/sh-sci.c (sci_sched_event, do_softint): Added. -+ (sci_transmit_chars): Call sci_sched_event. -+ (SCI_EVENT_WRITE_WAKEUP): New definition. -+ (sci_port): Added members 'tqueue' and 'event'. -+ -+ Cosmetic changes. -+ * include/asm-sh/irq.h (SCIF_ERI_IRQ and others): Add condition for -+ CONFIG_CPU_SUBTYPE_SH7707. -+ * arch/sh/kernel/semaphore.c (semaphore_wake_lock): Added. -+ * arch/sh/config.in (CONFIG_GDB_STUB_VBR): We need this regardless -+ of CONFIG_DEBUG_KERNEL_WITH_GDB_STUB. -+ -+2000-08-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (flush_page_to_ram): Use save_and_cli. -+ (flush_icache_page, flush_icache_range): Ditto. -+ -+2000-08-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (icache_purge_range, flush_cache_range): -+ Use of A-bit was wrong. We need better way to handle this... -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Bug fix. Don't deref -+ vma, when it's NULL. -+ (handle_vmalloc_fault): Work around. Don't call __flush_tlb_page -+ when mm==NULL. -+ -+2000-08-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Machvec support. -+ * arch/sh/kernel/setup.c: Remove WEAK references. -+ (get_mv_byname): Use .macvec.init. section. -+ * include/asm-sh/machvec_init.h (__initmv): Use -+ .macvec.init. section. -+ * arch/sh/vmlinux.lds.S (.machvec.init): Added new section for -+ Machine Vector. -+ -+ CqREEK support. -+ * arch/sh/config.in: Added CONFIG_SH_CQREEK. -+ * arch/sh/kernel/Makefile (O_OBJS): Added CqREEK Bridge support. -+ * arch/sh/kernel/setup_cqreek.c: New file. -+ -+2000-08-02 Stuart Menefy <stuart.menefy@st.com> -+ -+ (These entries were written by gniibe.) -+ * arch/sh/kernel/Makefile: Add io_generic.o for UNKNOWN. -+ -+ * arch/sh/kernel/io_generic.c (generic_io_base): New variable. -+ (generic_inw_p, generic_inl_p, generic_outw_p, generic_outl_p): -+ New functions. -+ * include/asm-sh/io_generic.h: Likewise. -+ -+ * arch/sh/kernel/io_unknown.c: Remove unused inclusions. -+ * arch/sh/kernel/setup.c (parse_cmdline): Added I/O base and -+ MMIO enable feature. -+ -+ * include/asm-sh/machvec_init.h: UNKNOWN could use GENERIC feature. -+ -+2000-08-01 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/overdrive/io.c: Include <asm/processor.h>. -+ -+ * arch/sh/kernel/irq_ipr.c (init_IRQ): Remove the variable 'i'. -+ * arch/sh/kernel/setup_se.c (init_se_IRQ): Likewise. -+ -+ * include/asm-sh/machvec.h (struct sh_machine_vector): Bit field -+ int should be unsigned. -+ -+ * include/asm-sh/ide.h (ide_default_irq_hp600, -+ ide_default_io_base_hp600): Make them static. No reason for -+ "static", matter of taste, but all other functions in this -+ file use "static". -+ -+ * include/asm-sh/keyboard.h: Added "extern" qualifier. Removed -+ __init for declaration. Remove <linux/config.h>. -+ -+ * include/asm-sh/irq.h (irq_demux, hd64461_irq_demux): Make them -+ extern. -+ -+ * include/asm-sh/{io_hd64461.h,io_od.h,io_generic.h,io_se.h, -+ io_unknown.h}: Added "extern" qualifier. -+ -+ * arch/sh/kernel/mach_hp600.c (hd64461_irq_demux): Removed. -+ Include asm/irq.h. -+ -+ * arch/sh/defconfig: Updated. -+ -+2000-08-01 Jesper Skov <jskov@redhat.com> -+ -+ * arch/sh/config.in: Add SH7707 support. -+ * arch/sh/defconfig: Ditto. -+ * arch/sh/kernel/entry.S: Ditto. -+ * arch/sh/kernel/irq_ipr.c: Ditto. -+ * drivers/char/sh-sci.c: Ditto. -+ * drivers/char/sh-sci.h: Ditto. -+ * include/asm-sh/bugs.h: Ditto. -+ * include/asm-sh/irq.h: Ditto. -+ * include/asm-sh/processor.h: Ditto. -+ -+2000-08-01 YAEGASHI Takeshi <yaegashi@ma.kcom.ne.jp> -+ -+ * arch/sh/config.in, arch/sh/kernel/entry.S, -+ Documentation/Concigure.help: Add CONFIG_GDB_STUB_VBR. -+ -+ * include/asm-sh/delay.h: Fix __udelay_val. -+ -+ * drivers/video/hitfb.c (hitfb_encode_fix): Add break; -+ -+ * drivers/char/hp600_keyb.c, drivers/char/scan_keyb.c: Fix key scan -+ tables and routines. -+ -+2000-08-01 Stuart Menefy <stuart.menefy@st.com> -+ -+ (These entries were written by gniibe.) -+ * Documentation/sh/new-machine.txt, arch/sh/kernel/io.c, -+ arch/sh/kernel/io_unknown.c, arch/sh/kernel/led_se.c, -+ arch/sh/kernel/mach_hp600.c, arch/sh/kernel/mach_se.c, -+ arch/sh/kernel/mach_unknown.c, arch/sh/lib/strcasecmp.c, -+ include/asm-sh/io_generic.h, include/asm-sh/io_hp600.h, -+ include/asm-sh/io_od.h, include/asm-sh/io_se.h, -+ include/asm-sh/io_unknown.h, include/asm-sh/machvec.h, -+ include/asm-sh/machvec_init.h: New files. -+ -+ Overdrive support. -+ * arch/sh/overdrive/Makefile, arch/sh/overdrive/fpga.c, -+ arch/sh/overdrive/fpga.h, arch/sh/overdrive/galileo.c, -+ arch/sh/overdrive/gt64111.h, arch/sh/overdrive/io.c, -+ arch/sh/overdrive/irq.c, arch/sh/overdrive/led.c, -+ arch/sh/overdrive/mach.c, arch/sh/overdrive/overdrive.h, -+ arch/sh/overdrive/overdrive.ttf, arch/sh/overdrive/pcidma.c -+ arch/sh/overdrive/setup.c: New files -+ -+ arch/sh/Makefile: Added support for OverDrive. -+ -+ arch/sh/config.in: Remove CONFIG_IOPORT_START. -+ Added CONFIG_HEARTBEAT. -+ -+ arch/sh/kernel/Makefile: Set O_OBJS for each machines. -+ -+ arch/sh/kernel/cf-enabler.c (cf_init): Make it static. -+ arch/sh/kernel/io_generic.c: Make the functions generic. -+ arch/sh/kernel/io_hd64461.c: Make the functions specific. -+ arch/sh/kernel/io_se.c: Likewise. -+ -+ arch/sh/kernel/irq.c (do_IRQ): Call irq_demux. -+ -+ arch/sh/kernel/irq_imask.c (disable_imask_irq): Make it static. -+ arch/sh/kernel/irq_ipr.c: (disable_ipr_irq) Likewise. -+ -+ arch/sh/kernel/pci-sh.c (pcibios_init, pcibios_setup): New functions. -+ -+ arch/sh/kernel/setup.c (sh_mv): New variable. -+ (parse_cmdline): Support machine selection. -+ -+ arch/sh/kernel/setup_hd64461.c (hd64461_irq_demux): New function. -+ -+ arch/sh/kernel/setup_se.c (init_se_IRQ): Use new make_ipr_irq. -+ -+ arch/sh/kernel/time.c: Support CONFIG_HEARTBEAT. Check MACH_HP600 -+ at runtime. -+ -+ arch/sh/lib/Makefile: Don't add -D__ASSEMBLY__. Add strcasecmp.o. -+ -+ arch/sh/lib/checksum.S: Alignment fix. -+ -+ arch/sh/mm/Makefile: Don't include ioremap.o. -+ -+ include/asm-sh/dma.h: Added isa_dma_bridge_buggy. -+ -+ include/asm-sh/hd64461.h: Added CONFIG_HD64461_IRQ. -+ include/asm-sh/ide.h: Added _hp600 functions. -+ -+ include/asm-sh/io.h: Introduce Alpha convention. -+ -+ include/asm-sh/irq.h: Added ACTUAL_NR_IRQS. -+ -+ include/asm-sh/keyboard.h: Use MACH_HP600. -+ -+ include/asm-sh/pci.h: Updated. -+ -+ drivers/char/sh-sci.c, drivers/char/sh-sci.h: Counter support. -+ Don't set IPR in the driver. -+ -+ drivers/net/Config.in: Remove condition CONFIG_SH_SOLUTION_ENGINE -+ for CONFIG_STNIC. -+ -+ drivers/net/stnic.c: Check MACH_SE at runtime. -+ -+ drivers/pci/pci.ids: Add GT-64111. -+ include/linux/pci_ids.h: Likewise. -+ -+2000-07-31 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/bugs.h (check_bugs): Distinguish CPU type. -+ -+2000-07-30 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.4.0-test5. -+ -+2000-07-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.4.0-test5-pre6. -+ -+ * include/asm-sh/sh_bios.h: Don't include -+ <config/sh/standard/bios.h>. -+ -+2000-07-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.4.0-test5-pre5. -+ -+ * include/asm-sh/mmu_context.h (switch_mm): Setting the bit only -+ when prev != next. -+ -+ * arch/sh/kernel/sh_bios.c: Include <linux/config.h> instead of -+ <config/sh/standard/bios.h>. -+ -+ * arch/sh/kernel/setup.c: We (already) include <linux/console.h>, -+ don't need including for CONFIG_SH_EARLY_PRINTK again. -+ -+ * include/asm-sh/checksum.h: Include <linux/config.h>. -+ -+ * include/asm-sh/serial.h: Not include <linux/config.h>. -+ -+ * mm/mmap.c (exit_mmap): Flushing TLB is not needed. -+ -+2000-07-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.4.0-test5-pre4. -+ -+ * drivers/char/sh-sci.c: IRDA is for SH7709 only. -+ -+2000-07-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (debug_trap, debug_kernel): -+ #ifdef/#endif change, this is needed for SH BIOS call too. -+ -+ * arch/sh/boot/compressed/head.S (init_sr): Set Block=0, -+ so that we can use BIOS call. -+ -+2000-07-21 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Documentation/Configure.help (CONFIG_CPU_SUBTYPE_SH7708, -+ CONFIG_CF_ENABLER, CONFIG_SH_SCI): Updated. -+ -+ (CONFIG_SH_SCIF): Removed. -+ -+ * arch/sh/defconfig (CONFIG_SH_EARLY_PRINTK): Updated. -+ -+ * drivers/char/tty_io.c (console_init): Don't call -+ sh_console_unregister. -+ -+ * drivers/char/sh-sci.c (sci_console_init): Call -+ sh_console_unregister here, instead. -+ -+2000-07-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the changes of 2.4.0-test5-pre3. -+ * arch/sh/defconfig: Updated. -+ -+2000-07-20 YAEGASHI Takeshi <yaegashi@ma.kcom.ne.jp> -+ -+ * sh-sci.h (PORT_IRDA, SH3_IRDA_IRQS): New definition. -+ (SCI_INIT, SCI_NPORTS): Fixed for CONFIG_CPU_SUBTYPE_SH7708. -+ -+ * sh-sci.c (sci_init_pins_irda): New Function. -+ -+2000-07-19 Hiroshi Ito <ito@mlb.co.jp> -+ -+ * arch/sh/mm/cache.c (detect_cpu_and_cache_system): Add __init -+ attribute. -+ * arch/sh/mm/cache.c (cache_system_info) Initialize it. -+ -+2000-07-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Bug fix. Avoid aliases -+ for shared page. -+ Reported by Stuart Menefy <stuart.menefy@st.com> on June 23th. -+ -+ * arch/sh/mm/fault.c (__flush_tlb_phys): New function. Flush -+ TLB which corresponds the PHYS physical page. -+ -+ * include/asm-sh/mmu_context.h (MMU_ITLB_DATA_ARRAY, -+ MMU_UTLB_DATA_ARRAY, MMU_UTLB_ENTRIES, MMU_U_ENTRY_SHIFT, -+ MMU_UTLB_VALID, MMU_ITLB_ENTRIES, MMU_U_ENTRY_SHIFT, -+ MMU_ITLB_VALID): New definition. -+ -+2000-07-18 Stuart Menefy <stuart.menefy@st.com> -+ -+ * mm/mmap.c (exit_mmap): Bug fix. Added flush_cache_range and -+ flush_tlb_range. -+ -+ * arch/sh/kernel/entry.S (restore_all): Bug fix. Correct the -+ handling IMASK-bits. -+ -+2000-07-13 Yutarou Ebihara <ebiharaml@si-linux.com> -+ -+ * arch/sh/kernel/io_generic.c (insw, insl, outsw, outsl): Work -+ around implemented. -+ -+2000-07-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/boot/compressed/Makefile (ZIMAGE_OFFSET): Add more -+ 64KB for the use of program loader which loads the image from -+ second storage. -+ -+ Follow the changes of test3-pre9. -+ * arch/sh/kernel/time.c (do_settimeofday): Updated. -+ (do_gettimeofday): Use wall_jiffies. -+ -+ * arch/sh/kernel/process.c (cpu_idle): Follow the change of -+ 2.4.0-test3-pre9. -+ -+ * include/asm-sh/timex.h (cycles_t): Type changed to long long. -+ -+ * arch/sh/kernel/entry.S (tsk_ptrace): Change the offset value, -+ following the change of linux/sched.h:(struct task_struct). -+ -+2000-07-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/sh_ksyms.c (drive_info): Removed. -+ It's x86 specific code. -+ -+ Follow the change of test3-pre5. -+ * include/asm-sh/bitops.h (minix_test_and_set_bit): Added. -+ * arch/sh/kernel/process.c (sys_execve): Remove lock_kernel and -+ unlock_kernel. -+ * arch/sh/kernel/signal.c (do_signal): Likewise. -+ -+2000-07-07 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/bitops.h (set_bit, clear_bit, change_bit, -+ test_and_set_bit, test_and_clear_bit, test_and_change_bit, -+ test_bit, ext2_set_bit, ext2_clear_bit, ext2_test_bit): -+ Add qualifier `volatile'. -+ -+2000-07-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the change of test3-pre4. -+ * arch/sh/kernel/sys_sh.c (do_mmap2): Remove -+ lock_kernel/unlock_kernel. -+ (sys_pipe): Likewise. -+ -+2000-07-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Use CONFIG_CPU_LITTLE_ENDIAN (it's used for MIPS). -+ * Documentation/Configure.help: Merge the help message. -+ * arch/sh/Makefile: Use CONFIG_CPU_LITTLE_ENDIAN, instead of -+ CONFIG_LITTLE_ENDIAN. -+ * arch/sh/defconfig: Likewise. -+ * arch/sh/vmlinux.lds.S: Likewise. -+ -+ Follow the chane of test3-pre2. -+ * arch/sh/kernel/setup.c (rom_resources): Removed. -+ -+ * include/asm-sh/softirq.h (in_softirq, cpu_bh_disable, -+ cpu_bh_enable): Use __local_bh_count and __local_irq_count. -+ -+ * include/asm-sh/hardirq.h (local_irq_count, local_bh_count): -+ Define Macros. -+ -+ * arch/sh/kernel/sh_ksyms.c (local_bh_count, local_irq_count): -+ Removed. -+ -+ * arch/sh/kernel/irq.c (__local_bh_count): Renamed from -+ local_bh_count. -+ (__local_irq_count): Renamed from local_irq_count. -+ -+2000-06-27 Yutarou Ebihara <ebiharaml@si-linux.com> -+ -+ * arch/sh/kernel/cf-enabler.c (cf_init): Use ctrl_outw instead -+ of outw. -+ -+2000-06-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the change of 2.4.0-test2. -+ * arch/sh/kernel/time.c: Include <linux/config.h>. -+ * include/asm-sh/keyboard.h: Likewise. -+ * arch/sh/defconfig: Updated. -+ -+2000-06-22 Stuart Menefy <stuart.menefy@st.com> -+ -+ * driver/char/{sh-sci.c,sh-sci.h}, include/asm-sh/io.h: Changes to -+ support multiple SCI/SCIF ports concurrently. NOTE: new major device -+ number for on-chip serial ports. -+ -+ * drivers/char/{Makefile,tty_io.c}, include/asm-sh/serial.h, -+ arch/sh/config.in, arch/sh/kernel/serup_se.c: Add support for 16550 -+ compatible UARTS. -+ -+2000-06-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/boot/compressed/misc.c (puts): Don't call put_string. -+ -+ * arch/sh/Makefile (tool_prefix): Renamed from tool-prefix. -+ -+ * include/asm/checksum.h (csum_ipv6_magic): Define only when -+ CONFIG_IPV6 is enabled. -+ -+ Follow the change of 2.4.0-test1-ac20. -+ * arch/sh/kernel/setup.c (memparse): Removed. -+ -+2000-06-17 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/defconfig: Updated. -+ -+ Follow the change of 2.4.0-test1-ac19. -+ * arch/sh/kernel/entry.S (tsk_ptrace): Use ptrace field and -+ PT_TRACESYS. -+ * arch/sh/kernel/ptrace.c (sys_ptrace, syscall_trace): Likewise. -+ * arch/sh/kernel/signal.c (do_signal): Likewise. -+ * arch/sh/kernel/process.c (sys_execve): Likewise. -+ -+2000-06-13 Stuart Menefy <stuart.menefy@st.com> -+ -+ * include/asm-sh/uaccess.h: Fixed __copy_user to return the number -+ of bytes not copied rather than EFAULT when an error occurs. -+ -+ * arch/sh/config.in, arch/sh/kernel/Makefile, -+ arch/sh/kernel/setup_od.c: -+ Added STMicroelectronics Overdrive support. -+ -+ * arch/sh/kernel/setup.c, arch/sh/kernel/time.c, -+ drivers/char/sh-sci.h, include/asm-sh/processor.h: -+ Added recording of the various clock frequencies, and use the -+ module clock frequency when setting the serial port baud rate. -+ -+ * drivers/char/sh-sci.c: Modifications to set the baud rate -+ when used as the console. -+ -+2000-06-11 YAEGASHI Takeshi <yaegashi@ma.kcom.ne.jp> -+ -+ * include/asm-sh/linux_logo.h: Needed for the frame buffer console. -+ Would anyone design and contribute our logo? :-> -+ -+ * net/ipv4/ipconfig.c: Remove inclusion of <asm/segment.h>. -+ -+ * drivers/char/Makefile, include/asm-sh/keyboard.h, -+ drivers/char/scan_keyb.c, drivers/char/scan_keyb.h, -+ drivers/char/hp600_keyb.c: Add generic scan keyboard driver and -+ HP690 scan code table. -+ -+ * arch/sh/kernel/Makefile, arch/sh/kernel/irq.c, -+ arch/sh/kernel/io_hd64461.c, arch/sh/kernel/setup_hd64461.c, -+ include/asm-sh/hd64461.h,: Add support for HD64461 companion chip. -+ -+ * drivers/video/Config.in, drivers/video/Makefile, -+ drivers/video/fbmem.c, drivers/video/hitfb.c: Add support for -+ HD64461 frame buffer. -+ -+ * drivers/char/vt.c: Add !defined(__sh__) to the #if conditionals to -+ avoid sys_ioperm(). -+ -+ * arch/sh/kernel/time.c, drivers/char/sh-sci.h, -+ include/asm-sh/ide.h: ad hoc work around for HP690... -+ -+ * arch/sh/config.in: introduce new configs: CONFIG_SH_HP600, -+ CONFIG_HD64461, and so on. -+ -+ * arch/sh/boot/compressed/Makefile: my kernel is now bigger than -+ 1MB... -+ -+2000-06-09 Tadashi Kadowaki <kadowaki@white.plala.or.jp> -+ -+ * arch/sh/Makefile (CFLAGS, AFLAGS, LDFLAGS): Support big endian. -+ -+2000-06-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/ptrace.c (sys_ptrace): Bug fix. Change the -+ last argument of access_process_vm. -+ -+ (ubc_set_tracing): Handle SH7709's UBC. I don't know it's right. -+ I see SH7729 manual. -+ -+2000-06-08 YAEGASHI Takeshi <yaegashi@ma.kcom.ne.jp> -+ -+ * include/asm-sh/pgtable.h (mk_pte_phys): Don't add + __MEMORY_START. -+ 2000-05-18 change is wrong. -+ -+2000-06-07 Toshiharu Nozawa <nozawat@hitachi-ul.co.jp> -+ -+ Compact Flash Support for SolutionEngine. -+ * arch/sh/kernel/cf-enabler.c (cf_init): Implemented for -+ SolutionEngine. -+ -+ * include/asm-sh/hitachi_se.h (PA_MRSHPC_*, MRSHPC_*): Added. -+ -+ * arch/sh/config.in: SolutionEngine may use enabler. -+ -+2000-06-02 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (Throughout): Use ".align 2" instead -+ of ".balign 4". -+ (debug_kernel): Renamed from "debug". -+ (debug_trap): Implemented. -+ (system_call): Call debug_trap. -+ -+ * arch/sh/kernel/process.c (break_point_trap_software): New -+ function. -+ (break_point_trap): Define arguments. -+ -+ * arch/sh/kernel/entry.S (system_call): Push/Pop registers -+ against syscall_trace, those may be clobbered. -+ -+2000-06-01 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * net/sunrpc/clnt.c, fs/nfs/read.c, fs/nfs/proc.c, -+ fs/nfs/nfs3proc.c, fs/nfs/file.c, fs/nfs/dir.c: Remove inclusion -+ of <asm/segment.h>, as Trond agreed to do that. -+ -+ * drivers/net/stnic.c (stnic_reset): Add last "\n". -+ (stnic_block_output): Added magic curses from oaknet.c. -+ -+2000-05-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the change of pre10-2. -+ * include/asm-sh/ide.h (ide_init_hwif_ports): set IDE_IRQ_OFFSET=0. -+ -+2000-05-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/Makefile (OBJCOPY): Added -R .stab and -R .stabstr too. -+ -+ * arch/sh/vmlinux.lds.S: Fill nop (=0x0009) for .text section. -+ (.empty_zero_page): Make it independent section. -+ -+ * arch/sh/boot/compressed/Makefile: Remove setting of CFLAGS here. -+ (ZIMAGE_OFFSET): Calculate the value by shell. -+ (piggy.o: OBJCOPY): Added -R .empty_zero_page. -+ -+ * arch/sh/boot/compressed/head.S (kernel_start_addr): Use _text. -+ Remove __ASSEMBLY__ for newer kernel. -+ -+ * arch/sh/boot/compressed/misc.c (decompress_kernel): Return type -+ changed to void (was: int). -+ (memcpy): Let it return value. -+ (memset): Ditto. -+ (HEAP_SIZE): Make it big enough. -+ (decompress_kernel): Use _text for initialization of output_ptr. -+ -+ * drivers/char/sh-sci.c (put_char, put_string, get_char, -+ handle_error, lowhex, highhex, hexchars): Moved to ... -+ drivers/char/sh-sci.h: ...here. -+ drivers/char/sh-sci.c (gdb_detach): Added __init qualifier. -+ -+ Bug fix. -+ * include/asm-sh/uaccess.h (__copy_user): Bug fix for __N == 0. -+ Reported by Toshinobu Sugioka <sugioka@itonet.co.jp>. -+ -+2000-05-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (mk_pte_phys): Bug fix. Added -+ __MEMORY_START. -+ -+ Bug fixes for swap entry encoding and pte encoding. -+ (_PAGE_FLAGS_HARDWARE_MASK): Mask V-bit. -+ (_PAGE_FLAGS_HARDWARE_DEFAULT): Enable V-bit. -+ Make _PAGE_PRESENT as software flag, and let it be the b0-bit. -+ -+2000-05-17 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): We don't need to call -+ __flush_tlb_page. See the implementation of establish_pte in -+ mm/memory.c. -+ (handle_vmalloc_fault): Instead, call __flush_tlb_page here. -+ (update_mmu_cache): Conditionalize the setting of PTEH. -+ (handle_vmalloc_fault): Change the first argument type. -+ -+2000-05-16 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/boot/compressed/Makefile (head.o): Remove dependency -+ to $(TOPDIR)/include/linux/tasks.h. -+ -+ * arch/sh/boot/compressed/head.S: Removed #include <asm/segment.h>. -+ -+2000-05-16 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Compressed vmlinux support by Stuart Menefy. -+ ftp.uk.linux.org:/pub/superh/linux-2.2.13-shpatch-0.03.gz -+ * arch/sh/boot/Makefile, -+ arch/sh/boot/compressed/Makefile, -+ arch/sh/boot/compressed/misc.c, -+ arch/sh/boot/compressed/install.sh, -+ arch/sh/boot/compressed/head.S: New files imported. -+ -+2000-05-14 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/lib/checksum.S (csum_partial): Improved a bit. -+ * include/asm-sh/checksum.h (ip_fast_csum): Improved implementation -+ for both of code size and speed. -+ (csum_fold): Removed last line: "extu.w %0, %0". It's not needed, -+ as it always cast to unsigned short. Caution: the result value as -+ "unsigned int" is different. -+ -+2000-05-13 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/time.c (time_init): Bug fix for SH-3's CPG. -+ Not fully implementation yet. -+ -+ * include/asm-sh/smc37c93x.h (GPIO46_INDEX, GPIO47_INDEX): Added. -+ * arch/sh/kernel/setup_se.c (init_smsc): Added setting of -+ nIO{R,W}OP. Suggested by Toshiharu Nozawa <nozawat@hitachi-ul.co.jp>. -+ -+ * include/asm-sh/unistd.h (_syscall5): Bug fix. -+ -+ * arch/sh/kernel/irq.c (init_irq_proc): Added. -+ -+2000-05-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/lib/checksum.S: Bug fix for big endian. -+ -+ * arch/sh/kernel/ptrace.c (sys_ptrace): Follow the change of -+ 2.3.99-pre7-6. -+ * arch/sh/mm/fault.c (do_page_fault): Likewise. -+ -+2000-05-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/net/stnic.c: New file by Kazumoto Kojima. -+ (stnic_probe): Changed the prototype. -+ (stnic_probe): Use new style probing API. -+ -+ * include/asm-sh/hitachi_se.h (IRQ_STNIC): Added. -+ -+ * arch/sh/kernel/time.c (time_init): New variable `bus_clock'. -+ -+2000-05-08 Toshinobu Sugioka <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/checksum.h (csum_fold): Change the implementation -+ for readability and in case it is used with no cast to ushort. -+ -+ * arch/sh/lib/checksum.S: Shift 8-bit when it's big endian. -+ -+2000-05-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm/io.h (outb, outb_p, outw, outl): Fix the prototype. -+ * arch/sh/kernel/io_se.c (outb, outb_p, outw, outl): Follow the -+ change of io.h. -+ -+ * arch/sh/kernel/io_generic.c (inb, inb_p, inw, inl, insb, insw, -+ insl, outb, outb_p, outw, outl, outsb, outsw, outsl): Fix the -+ prototype. -+ -+ * arch/sh/kernel/setup_se.c (init_smsc): Removed setting of -+ POWER_CONTROL, since it is done by ACTIVATE. -+ -+2000-05-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/sh-sci.h (SCI_IPR_ADDR): Fixed typo. -+ * arch/sh/kernel/setup_se.c (init_se_IRQ): Fixed the value, it is -+ inverted. -+ -+2000-05-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/irq.c (do_IRQ): Don't call sti. -+ -+ * arch/sh/kernel/irq_ipr.c (make_ipr_irq): Don't enable it at this -+ time. It will be enabled when request_irq is called. -+ -+ Fixes for I/O handling. -+ * arch/sh/kernel/setup_se.c (smsc_config): Use outb_p. -+ (init_smsc): Set Power Control register. -+ -+ * include/asm-sh/io.h (inb_p, outb_p): Added. -+ (inb, inw, inl): Fix the return value type. -+ -+ * arch/sh/kernel/io_generic.c (delay, inb_p, outb_p): New functions. -+ * arch/sh/kernel/io_se.c (delay, inb_p, outb_p): New functions. -+ -+ * include/asm/irq.h (INTC_IPRB): Fix typo. -+ -+2000-05-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ New I/O handling. -+ * arch/sh/kernel/io_generic.c: New file. -+ -+ * arch/sh/config.in (CONFIG_IOPORT_START): New CONFIG variable. -+ (CONFIG_CF_ENABLER): Conditionalize it (Not for SolutionEngine). -+ -+ * include/asm-sh/ide.h (ide_default_irq, ide_default_io_base): -+ Use PORT, instead of ADDR. -+ -+ * include/asm-sh/io.h (inb_local, outb_local): Removed. -+ (inb,inw,inl,insb,insw,insl,outb,outw,outl,outsb,outsw,outsl): -+ Make them real function. -+ (sh_isa_slot,isa_readb,isa_readw,isa_readl,isa_writeb, -+ isa_writew,isa_writel,isa_memset_io,isa_memcpy_fromio): Added. -+ -+ SolutionEngine support. -+ * include/asm-sh/smc37c93x.h: New file by Kazumoto Kojima. -+ * arch/sh/kernel/setup_se.c: New file by Kazumoto Kojima. -+ * include/asm-sh/hitachi_se.h: Ditto. -+ -+ * arch/sh/kernel/Makefile (O_OBJS): Added irq_ipr.o, removing -+ irq_onchip.c. Added setup_se.c. -+ -+2000-05-02 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (do_page_fault): Bug fix. When "Oops", we -+ don't try to follow the page handling data when PGDIR==0. -+ -+ * arch/sh/kernel/time.c (time_init): Removed IPR setting. -+ * arch/sh/kernel/irq_ipr.c (init_IRQ): ... moved to here. -+ -+ * drivers/char/sh-sci.c (sci_init): Use new calling of set_ipr_data. -+ * drivers/char/sh-sci.h (SCI_IPR_POS, SCI_IPR_ADDR): New macros. -+ (SCI_IPR_OFFSET): Removed. -+ -+ * arch/sh/kernel/irq_ipr.c (startup_ipr_irq, ipr_irq_type, -+ disable_ipr_irq, enable_ipr_irq, make_ipr_irq, mask_and_ack_ipr, -+ end_ipr_irq): Renamed from *_onChip_*. -+ (struct ipr_data): Added member POS. Remove OFFSET, and added ADDR. -+ (startup_onChip2_irq, onChip2_irq_type, disable_onChip2_irq, -+ enable_onChip2_irq, mask_and_ack_onChip2, end_onChip2_irq): Removed. -+ -+ * include/asm-sh/irq.h (make_ipr_irq): Renamed from make_onChip_irq. -+ (set_ipr_data): Change the prototype for address. -+ -+ * arch/sh/kernel/irq_ipr.c: Renamed from irq_onchip.c. -+ -+2000-05-01 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Support of SH7709A. -+ * arch/sh/kernel/time.c (do_timer_interrupt): Remove Takeshi's -+ debugging code (output to Port C). -+ -+ * drivers/char/sh-sci.h (PCLK): Added value for my SH7709A board. -+ * drivers/char/sh-sci.c (sci_set_termios_cflag): Added SH7709's -+ SCPCR/SCPDR handling. -+ (put_char, get_char): Added dummy read of SC_SR, Without this, some -+ garbage characters would appear on SH7709A. -+ -+2000-04-30 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (restore_all): Bug fix. We should consider -+ FPU exception within the critical region. We should not change the -+ IMASK value in this case. Or else, we would introduce a "hole" in -+ the critical region. -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Bug fix. We need to flush -+ ITLB. -+ -+ * arch/sh/kernel/time.c (time_init): Bug fix. The interval should -+ depend on HZ. -+ -+2000-04-29 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (flush_cache_all): Don't touch CCR. -+ (flush_cache_range): Don't call icache_purge_range. -+ (dcache_flush_range, dcache_purge_range): Removed. -+ -+ * arch/sh/kernel/entry.S (system_call): Bug fix. Substract 0x40 -+ from TRA number. -+ -+ * arch/sh/kernel/signal.c (save_sigcontext_fpu): Cosmetic fix. -+ Use __copy_to_user as it's user-space value. -+ -+2000-04-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Bug fixes of cache handling of SH-4. -+ * arch/sh/mm/cache.c (dcache_flush_range, dcache_purge_range, -+ dcache_wback_range): Renamed from cache_flush_area, -+ cache_purge_area, cache_wback_area, and only handle D-cache. -+ -+ (icache_purge_range): New function. -+ (flush_icache_range): Use icache_purge_range. -+ -+ (flush_icache_page): Bug fix. Rewritten. -+ (flush_cache_range): Bug fix. Rewritten. -+ (flush_page_to_ram): Implemented. -+ -+ (cache_wback_all): Assumes it is called P2 area, and make -+ it inline function. -+ (cache_init): Jump to P2-area before calling cache_wback_all. -+ (flush_cache_all): Likewise. -+ -+ (CACHE_IC_ENTRY_SHIFT, CACHE_IC_NUM_ENTRIES, -+ CACHE_OC_ENTRY_PHYS_MASK): New macros. -+ -+ * include/asm-sh/cache.h (cache_flush_area, cache_purge_area, -+ cache_wback_area): Hide them as cache.c static function. -+ -+2000-04-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Bug fix of cache handling of SH-4. -+ * arch/sh/mm/cache.c (flush_page_to_ram): Replaced from -+ __flush_page_to_ram. -+ * include/asm-sh/pgtable.h (__flush_page_to_ram): Removed. -+ (flush_page_to_ram): Declare directly. -+ * include/asm-sh/system.h (back_to_P1): Added one more nop. -+ -+ Cosmetic change for TLB handling of SH-4. -+ * arch/sh/mm/fault.c (__flush_tlb_page): Removed useless -+ ITLB handling. -+ -+ Updated to 2.3.99-pre6. -+ * include/asm-sh/{atomic.h,delay.h,hardirq.h,smplock.h,system.h}: -+ Follow the change of 2.3.99-pre6-7. -+ * arch/sh/mm/fault.c (__verify_write, do_page_fault): Follow the -+ change of 2.3.99-pre6-6. -+ -+2000-04-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.3.99-pre6-5. -+ -+2000-04-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (debug, system_call, restore_all, -+ handle_exception): Change the order of push/pop, and accessing -+ memory on the stack. Introduce new syscall ABI. -+ -+ * include/asm-sh/ptrace.h (struct pt_regs): Reorganize the -+ structure. -+ * include/asm-sh/sigcontext.h: Likewise. -+ -+ * arch/sh/kernel/signal.c (setup_frame, setup_rt_frame): -+ Use New ABI. -+ * arch/sh/kernel/process.c (kernel_thread): Use New ABI. -+ * include/asm-sh/unistd.h (_syscall0, _syscall1, _syscall2, -+ _syscall3, _syscall4, _syscall5): Use New ABI. -+ -+ * arch/sh/kernel/process.c (sys_execve, sys_vfork, sys_clone, -+ sys_fork): Follow the change of syscall ABI. -+ * arch/sh/kernel/signal.c (sys_sigsuspend, sys_rt_sigsuspend, -+ sys_sigaltstack, sys_sigreturn, sys_rt_sigreturn): Likewise. -+ * arch/sh/kernel/sys_sh.c (sys_pipe): Likewise. -+ -+2000-04-21 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/time.c (RCR1_*, RCR2_*): Defined. -+ (set_rtc_time, get_rtc_time, get_cpu_mhz): Use them. -+ -+ * arch/sh/kernel/time.c (get_rtc_time): Bug fix. Clear CF-bit every -+ time. Set RCR2_RTCEN to start RTC. -+ -+ * include/asm-sh/elf.h (SET_PERSONALITY): Follow the change -+ of 2.3.99-pre6-3. -+ -+2000-04-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Change how to set syscall_nr. -+ * arch/sh/kernel/entry.S (handle_exception): Set syscall_nr = -1, -+ as default. -+ (system_call): Set syscall_nr. -+ * arch/sh/kernel/entry.S (tlb_miss_load, tlb_miss_store, -+ initial_page_write, tlb_protection_violation_load, -+ tlb_protection_violation_store, error): Don't touch syscall_nr. -+ * arch/sh/kernel/fpu.c (do_fpu_state_restore, do_fpu_error): Likewise. -+ * arch/sh/kernel/traps.c (DO_ERROR): Likewise. -+ * arch/sh/kernel/irq.c (do_IRQ): Likewise. -+ -+ Change IMASK irq handling implementation. -+ * arch/sh/kernel/entry.S (restore_all, STI): Use r6_bank, instead -+ of r5_bank. -+ * arch/sh/kernel/irq_imask.c (set_interrupt_registers): Likewise. -+ * arch/sh/kernel/head.S (_stext): Likewise. -+ * include/asm-sh/system.h (__sti): Likewise. -+ -+ Change CURRENT implementation. Use $r7_bank1 to have pointer to -+ "current" task, instead of having stack pointer in $r4_bank1. -+ * include/asm-sh/current.h (get_current): Use $r7_bank. -+ * arch/sh/kernel/process.c (__switch_to): Save to $r7_bank. -+ * arch/sh/kernel/entry.S (system_call, ret_with_reschedule, -+ handle_exception): Use $r7_bank. -+ * arch/sh/kernel/traps.c (dump_stack): Likewise. -+ * arch/sh/kernel/head.S (_stext): Likewise. -+ -+ Bug fix. -+ * arch/sh/mm/cache.c (flush_cache_all): Assume that it is called in -+ interrupt disabled state. -+ (flush_cache_all): Fixed race condition. -+ -+ * arch/sh/kernel/fpu.c (do_fpu_state_restore): Release FPU. -+ -+2000-04-16 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/fpu.c (do_fpu_state_restore, fpu_prepare_fd): -+ Handle complicated situation where it gets inconsistent. It would -+ be good if SH has some atomic op-code for handling SR register, -+ or ll/sc. -+ -+ * arch/sh/kernel/process.c (__switch_to, dump_fpu, copy_thread): -+ Fix race conditions where FPU registers may be corrupted. I.e., -+ protect unlazy_fpu. -+ * arch/sh/kernel/signal.c (save_sigcontext_fpu): Likewise. -+ -+2000-04-14 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (STI): It was wrong. Replace from -+ RESTORE_FLAGS. -+ -+ * include/asm-sh/system.h (__restore_flags): Use __sti. -+ -+ * arch/sh/kernel/irq_imask.c (set_interrupt_registers): Bug fix. -+ We do compare the b7-b4 bits. -+ -+2000-04-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/irq_imask.c (imask_irq_type) : Change the name -+ so that output of /proc/interrupt looks good. -+ * arch/sh/kernel/irq_onchip.c (onChip_irq_type, onChip2_irq_type): -+ Likewise. -+ -+ * arch/sh/kernel/entry.S (RESTORE_FLAGS): Bug fix. Compare -+ four bits properly. -+ -+ * drivers/char/sh-sci.c (sci_init_drivers): Add CRTSCTS flag. -+ -+ * include/asm-sh/elf.h (ELF_PLAT_INIT): Initialize SR register. -+ -+ * arch/sh/kernel/signal.c (sys_sigsuspend, sys_rt_sigsuspend, -+ sys_sigaltstack, sys_sigreturn, sys_rt_sigreturn): Follow new -+ syscall ABI. -+ -+ * arch/sh/kernel/sys_sh.c (sys_pipe): Follow new syscall ABI. -+ -+ * arch/sh/kernel/entry.S (system_call): Bug fix. Access SP+8, since -+ $r2 and $r3 are on the stack. -+ -+ * include/asm-sh/unistd.h (_syscall5): Follow the change of ABI. -+ -+2000-04-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/config.in: Updated to 2.3.99-pre4-pre5. -+ * arch/sh/kernel/Makefile (.S.o, head.o): Likewise. -+ * arch/sh/lib/Makefile (.S.o): Likewise. -+ * arch/sh/mm/init.c (paging_init): Likewise. -+ * include/asm-sh/namei.h (__emul_prefix): Likewise. -+ -+ * arch/sh/defconfig: Updated. -+ -+ Syscall ABI changes suggested by Stuart Menefy. -+ * arch/sh/kernel/process.c (sys_fork, sys_clone, sys_vfork, -+ sys_execve): Follow new syscall ABI. -+ -+ * arch/sh/kernel/entry.S: New macro COMPAT_OLD_SYSCALL_ABI. -+ New syscall ABI which use $r2 and $r3. -+ -+2000-04-05 Kazumoto Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/head.S: Initialize FPU. -+ * arch/sh/kernel/fpu.c (save_fpu, restore_fpu): Set FPSCR -+ register (SZ=0) before FMOV.S operation. -+ * arch/sh/kernel/entry.S (handle_exception, restore_all): Likewise. -+ * arch/sh/kernel/entry.S (handle_exception): Bug fix for setting $k1. -+ We should better not use delay slot for PC-relative-load. -+ -+ * arch/sh/kernel/signal.c (restore_sigcontext): Fix the tsk. -+ (restore_sigcontext_fpu): Fix the structure member name. -+ (save_sigcontext_fpu): Likewise. -+ -+2000-04-03 Ludovic LANGE <ludovic.lange@free.fr> -+ -+ * include/asm-sh/ptrace.h (UBC_*): Fix the values. -+ -+2000-04-01 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/hardirq.h (in_interrupt): Bug fix. -+ (local_bh_count): Moved from softirq.h. -+ -+2000-03-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/sh-sci.c: Use module_init. -+ -+ * arch/sh/defconfig: Updated. -+ -+ * include/asm-sh/sigcontext.h(struct sigcontext): Following the -+ usage of GCC, change sc_xfpregs --> sc_xdregs. -+ -+ * arch/sh/kernel/process.c (copy_thread): Don't use struct_cpy. -+ * include/asm-sh/string.h (struct_cpy): Removed. As we have memcpy -+ implementation. -+ -+2000-03-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Merge "ptrace" by Kaz. -+ * arch/sh/kernel/ptrace.c (ubc_set_tracing, compute_next_pc): -+ New functions. Implemented by Kaz Kojima. -+ -+ * arch/sh/kernel/process.c (break_point_trap): New function. -+ Implemented by Kaz Kojima. -+ -+2000-03-21 Sugioka Toshinobu <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/uaccess.h (__clear_user): Bug fix. -+ (__strncpy_from_user): Bug fix. -+ -+2000-03-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/unistd.h (__NR_mincore, __NR_madvise): Follow -+ the change of 2.33.99-pre2. -+ * include/asm-sh/mman.h (MADV_*): Likewise. -+ * arch/sh/kernel/entry.S: Likewise. -+ -+ * drivers/char/sh-sci.c (sci_set_real_termios): Follow the change of -+ interface of generic_serial.h of 2.33.99-pre2. -+ -+ * include/asm-sh/page.h (clear_user_page, copy_user_page): Follow -+ the change of 2.33.99-pre2. -+ * include/asm-sh/pci.h: Likewise. -+ -+2000-03-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/ptrace.h: Change the order of the member, -+ so that implementation of ptrace gets straight. -+ Remove SP and use REGS[15] instead. -+ * include/asm-sh/sigcontext.h: Likewise. -+ -+ * arch/sh/kernel/entry.S (debug, system_call, restore_all, -+ handle_exception): Change the order of push/pop, and reference. -+ -+ * arch/sh/kernel/signal.c: Follow the change of struct pt_regs. -+ * arch/sh/kernel/process.c: Likewise. -+ -+2000-03-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/config.in: Follow the change of 2.3.51. -+ * arch/sh/defconfig: Updated. -+ -+ * arch/sh/kernel/signal.c (restore_sigcontext_fpu): New function. -+ (restore_sigcontext): Restore FPU context when used. -+ (save_sigcontext_fpu): New function. -+ (setup_sigcontext): Save FPU context. -+ Based on Kaz' implementation, preserving API of sigcontext.h. -+ -+2000-03-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/sigcontext.h: Added members for FPU registers. -+ (Originally done by Kaz Kojima) -+ -+2000-03-07 Terumitsu Kohama <tkohama@hipro.hitachi-hipro.co.jp> -+ -+ * drivers/char/sh-sci.h (SCBRR_VALUE): Fix the expression. -+ -+2000-03-07 Sugioka Toshinobu <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/system.h (jump_to_P2, back_to_P1): Improved. -+ * arch/sh/mm/fault.c (__flush_tlb_page): Bug fix for SH-4. -+ Change TLB from P2. -+ -+ * include/asm-sh/processor.h (TASK_SIZE): Change the value -+ for SH7709/SH7750 (was: 0x80000000). -+ -+2000-03-07 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/defconfig: Updated. -+ -+ * include/asm-sh/system.h (jump_to_P2, back_to_P1): Moved -+ from cache.c. -+ -+ * arch/sh/mm/cache.c: Use new macro. -+ -+ * arch/sh/kernel/entry.S: Replace STI with RESTORE_FLAGS, -+ to allow exception in critical region (interrupt stopped). -+ -+ Follow the changes of 2.3.49. -+ * include/asm-sh/pgtable.h (FIRST_USER_PGD_NR): New macro. -+ * include/asm-sh/socket.h (SO_PEERNAME): New macro. -+ -+2000-03-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Use IMASK for cli/sti (instead of BL). -+ Suggested by Sugioka Toshinobu <sugioka@itonet.co.jp>. -+ (Initial implementation was done by Kaz Kojima for SH-4.) -+ -+ * arch/sh/kernel/entry.S: Use r5_bank to hold the imask value. -+ * arch/sh/kernel/irq_imask.c: Likewise. -+ * arch/sh/kernel/head.S: Likewise. -+ * include/asm-sh/system.h (__sti, __cli, __save_flags, -+ __save_and_cli, __restore_flags): New Implementation. -+ -+2000-03-06 Sugioka Toshinobu <sugioka@itonet.co.jp> -+ -+ * drivers/char/sh-sci.h: Add SH-4 support. -+ * drivers/char/sh-sci.c (sci_set_baud, sci_set_termios_cflag): -+ Support lower baudrate. -+ (sci_rx_interrupt, sci_tx_interrupt): Always clear out interrupt -+ source to avoid interrupt loop. -+ -+2000-03-05 Greg Banks <gregory.banks@nstc.nec.com.au> -+ -+ * drivers/char/sh-sci.c (sci_set_baud), drivers/char/sh-sci.h -+ (BPS_*): Support more BPSs. -+ -+2000-03-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the changes of 2.3.48. -+ * arch/sh/kernel/setup.c (setup_arch): Call paging_init. -+ * include/asm-sh/pgtable.h: Declare paging_init. -+ -+2000-03-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/lib/div.S: New file. -+ * arch/sh/kernel/fpu.c (enable_fpu_in_danger): New function. -+ -+2000-03-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/system.h (__restore_flags): Inherit IMASK and SR. -+ -+2000-03-02 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/processor.h (clear_fpu): Don't release_fpu(). -+ -+2000-03-01 Sugioka Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/fault.c (__flush_tlb_page): Bug fix. The mask value -+ was wrong (was: 0x30). -+ -+2000-02-29 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/process.c (kernel_thread): Call unlazy_fpu. -+ -+ * arch/sh/kernel/fpu.c (do_fpu_state_restore): Bug fix. Grab FPU -+ before restore/unlazy_fpu/fpu_init or else, it causes system reset. -+ -+ * arch/sh/kernel/irq.c (do_IRQ): Add __sti() before calling softirq. -+ -+2000-02-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/sh-sci.h (SC_SR): Bug fix. It's 16-bit for SH-4. -+ -+ * arch/sh/kernel/head.S: Removed initalization of FPU. -+ * arch/sh/kernel/setup.c (setup_arch): ...Moved here. -+ Besides, set used_math and flags of init_task. -+ -+2000-02-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/user.h (struct user): Add u_fpvalid. -+ -+ * arch/sh/kernel/head.S: SR.FD=1 on initialization. -+ -+ * arch/sh/kernel/fpu.c (fpu_prepare_fd, do_fpu_state_restore, -+ do_fpu_error, fpu_init): Implemented. -+ -+ * arch/sh/kernel/entry.S (restore_all, handle_exception): Handle FPU. -+ -+2000-02-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/process.c (__switch_to): Call unlazy_fpu. -+ (last_task_used_math): Removed. -+ -+ * include/asm-sh/elf.h (elf_fpregset_t): Change the definition. -+ * include/asm-sh/user.h (user_fpu_struct): Added. -+ (struct user): Added fpu support. -+ -+ * arch/sh/kernel/Makefile (O_OBJS): Add fpu.o for CONFIG_CPU_SH4. -+ -+2000-02-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (do_page_fault): Bug fix. (The value -+ stored in MMU_TTB is kernel address (not physical address)). -+ -+ * include/asm-sh/unistd.h (_syscall5): Added. -+ (_syscall4): Bug fix of register __sc7. -+ -+2000-02-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the changes of 2.3.45-47. -+ * include/asm-sh/page.h (get_order): Added. -+ -+2000-02-14 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the changes of 2.3.44. -+ * arch/sh/mm/init.c (paging_init): Use free_area_init_node. -+ * include/asm-sh/pgtable.h (__pgd_offset): Use pgd_index. -+ * arch/sh/mm/cache.c (flush_icache_page): Implemented. -+ -+2000-02-13 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/time.c (time_init, get_rtc_time): Don't depend on -+ CONFIG_SH_CPU_RTC (Always enabled). -+ -+ * arch/sh/config.in: Serial interface is "choice" (at least for now). -+ (CONFIG_SH_CPU_RTC): Removed. -+ -+2000-02-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the change of 2.3.43. -+ Softirq change: -+ * arch/sh/kernel/irq.c (do_IRQ): Change bottom half interface to -+ softirq. -+ * include/asm/softirq.h (local_bh_enable): Ditto. -+ Remove unused macros. -+ * arch/sh/kernel/entry.S (handle_softirq): Ditto. -+ (ret_from_irq): Branch to ret_from_syscall, so that softirq will -+ be called. -+ * arch/sh/kernel/signal.c (do_signal): Go back if kernel mode. -+ (setup_rt_frame): Bug fix. The number is NR_rt_sigreturn. -+ * include/asm-sh/hardirq.h (in_irq): Moved from softirq.h. -+ -+ Memory management change: -+ * include/asm-sh/pgalloc.h (flush_tlb_pgtables): Added. -+ * include/asm-sh/mmu_context.h (enter_lazy_tlb): Added. -+ (switch_mm): Set bit of cpu_vm_mask befor activate_context. -+ * arch/sh/mm/init.c (show_mem): Remove calling show_net_buffers. -+ * include/asm-sh/page.h (PTE_MASK): Added. -+ * include/asm-sh/pgtable.h (_PAGE_CHG_MASK): Use PTE_MASK. -+ -+2000-02-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/chare/sh-sci.h: New file. -+ * drivers/chare/sh-sci.c: Try to merge sh-scif.c. -+ -+ * arch/sh/{config.in,defconfig}: Updated. -+ -+2000-02-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/setup.c (setup_arch): Use init_bootmem_node, -+ instead of init_bootmem. -+ -+ * arch/sh/mm/init.c (paging_init, mem_init): Get memory info from -+ NODE_DATA. See bootmem.c for detail. Use free_area_init_core, -+ instead of free_area_init. -+ -+2000-02-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the change of 2.3.42. -+ * arch/sh/defconfig: Updated. -+ * include/asm-sh/checksum.h: Include changes from 2.3.42. -+ * arch/sh/config.in: Change the semantics of CONFIG_SERIAL. -+ * drivers/char/Makefile: Likewise. -+ -+ * drivers/chare/sh-sci.c: Remove locks, actually this *was* the -+ cause of the race condition! -+ (my_hd): Removed. -+ -+2000-02-05 Peter Orem <pmorem@iptcorp.com> -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Set PTEH register. -+ -+2000-01-30 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the changes of 2.3.41. -+ * include/asm-sh/system.h (xchg_u8): Added. -+ * include/asm-sh/pci.h: Added Dynamic DMA mapping stuff. -+ * include/asm-sh/scatterlist: Added. -+ * arch/sh/kernel/semaphore.c (Read-Write semaphoe): Implemented. -+ * include/asm-sh/semaphore.h (Read-Write semaphoe): Added. -+ * include/asm-sh/unistd.h (__NR_pivot_root): Added. -+ * include/asm-sh/types.h (dma_addr_t): Added. -+ * include/asm-sh/termios.h (TIOCM_LOOP): Added. -+ * include/asm-sh/siginfo.h (NSIGCHLD): Define as 6. -+ * arch/sh/kernel/entry.S (sys_pivot_root): Added. -+ * arch/sh/kernel/sys_sh.c (sys_uname): Apply change of 2.3.41. -+ -+ * include/asm-sh/dma.h (MAX_DMA_ADDRESS): Remove +__MEMORY_START, -+ and set it 256MB. -+ -+2000-01-29 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (tlb_miss,general_exception): Set -+ return address to ret_from_irq. In case of system call, -+ it is overwritten to ret_from_syscall. -+ -+2000-01-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/dma.h (MAX_DMA_ADDRESS): All area (512MB) can -+ be used with DMA. -+ -+2000-01-25 Toshiharu Nozawa <nozawat@hitachi-ul.co.jp> -+ -+ * arch/sh/mm/init.c (paging_init): Bug fix for -+ zones_size[ZONE_NORMAL]. -+ -+2000-01-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/siginfo.h: Follow the changes of 2.3.41-pre2. -+ * arch/sh/kernel/signal.c (do_signal): Likewise. -+ -+2000-01-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/sys_sh.c (sys_pipe): Follow the ABI of Kaz' -+ Implementation. -+ -+2000-01-21 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (do_page_fault): Bug fix for OOPS. -+ -+ * include/asm-sh/posix_types.h: Follow the changes of 2.3.40. -+ -+2000-01-16 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/sh-sci.c (sci_er_interrupt): Kick transmission. -+ -+2000-01-15 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/unistd.h (__NR_getrlimit, __NR_umount): Compatibility -+ change for libc. -+ -+2000-01-13 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/signal.c (do_signal): set si_uid16. -+ -+ * arch/sh/kernel/entry.S: Changed to support *16. -+ -+ * include/asm-sh/unistd.h (*32): Added. -+ -+ * include/asm-sh/msgbuf.h, include/asm-sh/ipcbuf.h, -+ include/asm-sh/sembuf.h, include/asm-sh/shmbuf.h: New files. -+ -+ * include/asm-sh/siginfo.h: Support uid32/gid32. -+ -+ * include/asm-sh/posix_types.h: Introduce uid16/32, gid16/32. -+ -+2000-01-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/time.c (time_init): Remove INTERVAL. -+ -+ Follow the changes of 2.3.35--2.3.38. -+ * include/asm/checksum.h (csum_partial_copy_to_user): Removed. -+ * include/sh/processor.h (get_task_struct): Added. -+ * arch/sh/kernel/setup.c (setup_arch): Add condition for -+ INITRD_START. -+ -+ -+Local Variables: -+mode: change-log -+left-margin: 8 -+fill-column: 76 -+version-control: never -+End: -diff -ruN linux-2.6.17-vanilla/ChangeLog-2001 linux-2.6.17/ChangeLog-2001 ---- linux-2.6.17-vanilla/ChangeLog-2001 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/ChangeLog-2001 2006-07-12 16:54:18.000000000 +0000 -@@ -0,0 +1,1827 @@ -+2001-12-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/fpu.c (do_fpu_error): Handle denormalized floating -+ point number. Remove un-needed grab_fpu. -+ -+ * arch/sh/kernel/head.S (_stext): Don't initialize FPU, as FPU is -+ not used by kernel. -+ (SR): Initial value with FD=1 (no FPU use). -+ -+ * include/asm-sh/processor.h (unlazy_fpu): Don't need to grab_fpu. -+ (clear_fpu): Call release_fpu. -+ -+ * arch/sh/kernel/entry.S (PF_USEDFPU, __PF_USEDFPU): Removed. -+ (restore_all, handle_exception): Simplified. -+ (__fpu_prepare_fd, __init_task_flags): Removed -+ -+ * arch/sh/kernel/fpu.c (enable_fpu_in_danger): Removed. -+ (fpu_prepare_fd): Removed. -+ -+2001-12-28 Kazumoto Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * include/asm-sh/processor.h (FPSCR_ENABLE_MASK, FPSCR_FLAG_MASK): -+ New macros. -+ -+ * arch/sh/kernel/fpu.c (denormal_to_double, ieee_fpe_handler): -+ New functions. -+ -+2001-12-26 Jeremy Siegel <jsiegel@mvista.com> -+ -+ * arch/sh/kernel/traps.c: fix handle_unaligned_access() branch offsets -+ * arch/sh/mm/fault.c: check for null mmap when handling page fault -+ -+2001-12-20 Takashi Yoshii <yoshii-takashi@hitachi-ul.co.jp> -+ -+ * include/asm-sh/pgtable.h (pgprot_noncached): Defined and -+ implemented. -+ -+2001-12-16 Paul Mundt <lethal@chaoticdreams.org> -+ -+ * drivers/char/shwdt.c: Added a proper timer for pinging the device -+ periodically. Clock division ratio is now settable at load time .. -+ Numerous other small bug fixes. -+ -+2001-12-14 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/hitachi_se.h (PA_BCR): Comment fix to sync mainline. -+ -+ * drivers/block/rd.c (initrd_read): Don't need to flush the cache. -+ (This file can be removed.) -+ * include/linux/highmem.h (memclear_highpage_flush): Likewise. -+ -+2001-12-12 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/rtc.c (sh_rtc_gettimeofday): Fix SH-4 RTC bug work -+ around. -+ (set_rtc_time, sh_rtc_settimeofday): Likewise. Remove schedule_timeout -+ call and merged to sh_rtc_settimeofday. -+ -+2001-12-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/sys_sh.c-1.7: Removed. -+ -+2001-12-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * mm/memory.c (do_wp_page): Re-introduce ifdef-out-ing -+ flush_cache_page. -+ -+2001-12-06 M. R. Brown <mrbrown@0xd6.org> -+ -+ * drivers/char/maple_keyb.c (dc_scan_kbd): Replaced calls to -+ memscan() with calls to memchr(). Credit goes to Robert M. Love for -+ the patch. -+ -+2001-12-04 Jeremy Siegel <jsiegel@mvista.com> -+ * Include gdrom compile patch from Robert M. Love <rml@tech9.net> -+ * drivers/net/gdrom.c: as per patch -+ * include/asm-sh/segment.h: new file as per patch -+ -+2001-12-03 Jeremy Siegel <jsiegel@mvista.com> -+ * init/main.c: Robert Love's <rml@tech9.net> patch adding gdrom -+ to bootable device list, as per M.R. Brown (mrbrown@0xd6.org) -+ * init/main.c: new file -+ -+2001-11-30 Jeremy Siegel <jsiegel@mvista.com> -+ * drivers/char/shwdt.c: missing file copied from full tree -+ * updated to 2.5.0 (same as 2.4.15) -+ -+2001-11-02 Jeremy Siegel <jsiegel@mvista.com> -+ -+ * arch/sh/config.in: allow setting of CONFIG_SH_PCIDMA_NONCOHERENT -+ * include/asm-sh/stat.h: consistency w/glibc using either endian -+ * include/asm-sh/uaccess.h: add Tomoyoshi ASANO's big-endian fix -+ * arch/sh/kernel/{io_,pci-}7751se.c: minor cleanup -+ -+2001-10-30 Jeremy Siegel <jsiegel@mvista.com> -+ -+ * arch/sh/kernel/io_7751se.c: get pci.h from linux, not asm -+ * include/asm-sh/pci.h: define pci_dac_dma_supported() -+ -+2001-10-16 M. R. Brown <mrbrown@0xd6.org> -+ -+ * Branch merge of linux-2_4-branch. -+ -+ * Added treelink.sh and treeunlink.sh to the scripts/ directory. -+ -+ * Merged in NIIBE's updates from kernel/. -+ -+2001-10-15 M. R. Brown <mrbrown@0xd6.org> -+ -+ * Brought HEAD to a state ready for 2.5 development. -+ -+ * linux-2_4-branch branch created. This allows for concurrent -+ development of the 2.4 and 2.5 trees. -+ -+2001-10-14 NIIBE Yutaka <gniibe@server1.m17n.org> -+ -+ * drivers/net/8139too.c (rtl8139_start_xmit): Fix merge gerbage. -+ -+ * arch/sh/kernel/setup_se.c (init_se_IRQ): Remove -+ CONFIG_SH_7751_SOLUTION_ENGINE section. -+ * include/asm-sh/hitachi_se.h (PA_BCR): Likewise. -+ -+2001-10-13 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/Makefile (CFLAGS, AFLAGS): Use -m4 -mno-implicit-fp for -+ SH4 compile. We used to use -m4-nofpu but it's not compatible -+ to -m4 (differs in calling convention). -+ -+2001-10-13 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.13-pre2. -+ -+2001-10-12 David Woodhouse <dwmw2@redhat.com> -+ -+ * arch/sh/config.in: Set default memory sizes for Solution Engines -+ -+2001-10-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.12. -+ * Updated to 2.4.11. -+ -+2001-10-04 Paul Mundt <lethal@chaoticdreams.org> -+ -+ * arch/sh/mm/fault.c (do_page_fault): Don't kill init when out -+ of memory. -+ -+2001-10-01 M. R. Brown <mrbrown@0xd6.org> -+ -+ * drivers/video/pvr2fb.c (pvr2fb_init): Make fb_find_mode() default -+ to 16bpp instead of 32bpp. -+ -+2001-09-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/uaccess.h (__put_user_u64): New macro. -+ * arch/sh/kernel/signal.c: Include <linux/personality.h>. -+ * drivers/char/sh-sci.c (banner): Fix __initdata. -+ -+ * Updated to 2.4.10. -+ -+2001-09-15 Paul Mundt <lethal@chaoticdreams.org> -+ -+ * arch/sh/Makefile: Remove usage of $(tool_prefix) and needless -+ redefinition of CROSS_COMPILE. Obey toplevel CROSS_COMPILE -+ instead. -+ -+2001-09-13 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/sys_sh.c (arch_get_unmapped_area): Don't -+ COLOUR_ALIGN when it comes with MAP_PRIVATE. -+ -+2001-09-13 Paul Mundt <lethal@chaoticdreams.org> -+ -+ * Documentation/Configure.help: Add CONFIG_SH_WDT description. -+ * arch/sh/config.in: Add watchdog card menu, and watchdog driver. -+ * drivers/char/Makefile: Add CONFIG_SH_WDT support. -+ * drivers/char/shwdt.c: New file. -+ -+2001-09-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/softirq.h (__cpu_raise_softirq): Removed. -+ * Updated to 2.4.10-pre6. -+ -+2001-09-10 David Woodhouse <dwmw2@infradead.org> -+ -+ * arch/sh/mm/cache-sh3.c: Clearer definitions of CCR_CACHE_VAL and -+ CCR_CACHE_INIT. -+ * arch/sh/mm/cache-sh4.c: Likewise. -+ -+2001-09-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/keyboard.h (kbd_rate): Removed. -+ * Updated to 2.4.10-pre4. -+ -+2001-08-31 M. R. Brown <mrbrown@0xd6.org> -+ -+ * arch/sh/kernel/Makefile: Add dependency for rtc-aica.o for -+ CONFIG_SH_DREAMCAST. -+ * arch/sh/kernel/mach_dc.c: Add prototypes and pointers for the AICA -+ RTC routines to the machvec. -+ * arch/sh/kernel/time.c (time_init): Remove checks for -+ MACH_DREAMCAST as we can just use the RTC routines defined in the -+ machvec. -+ * arch/sh/kernel/rtc-aica.c: New file. -+ -+2001-08-31 Jeremy Siegel <jsiegel@mvista.com> -+ -+ * include/asm-sh/system.h: make __cli_and_save() volatile again -+ -+2001-08-24 David Woodhouse <dwmw2@infradead.org> -+ -+ * arch/sh/mm/cache-sh3.c: We were missing a loop over the ways in -+ __flush_wback_region(). Also disable interrupts between reading -+ an entry and writing it back modified. -+ * arch/sh/kernel/pcibios.c: Generic versions of five pcibios_xxx() -+ functions which can be shared between platforms. -+ * arch/sh/kernel/pci_st40.c: Use $1. -+ * arch/sh/kernel/pci-dc.c: Use $1. -+ * arch/sh/kernel/pci-sh7751.c: Use $1. -+ * arch/sh/kernel/Makefile: Use $1. -+ -+2001-08-23 David Woodhouse <dwmw2@infradead.org> -+ -+ * arch/sh/config.in: Add CONFIG_MEMORY_SIZE, clean up -+ platform-specific memory start/size definitions. -+ * include/asm-sh/page.h: Define __MEMORY_SIZE. -+ * arch/sh/kernel/setup.c: Use __MEMORY_SIZE instead of hardcoded 4MiB. -+ -+2001-08-22 David Woodhouse <dwmw2@infradead.org> -+ -+ * drivers/net/via-rhine.c: Update to version LK1.1.11 from -+ 2.4.9-ac9 (set dev->base_addr before first call to wait_for_reset() -+ and free the bounce buffers only if we allocated any in the first -+ place. -+ -+2001-08-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/elf.h: Removed inclusion of <asm/byteorder.h>. -+ -+2001-08-17 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/net/8139too.c: Include <linux/completion.h>. -+ * drivers/maple/maple.c: Likewise. -+ (kmapled_exited, maple_exit, kmapled_thread): Use new "completion" -+ interface. -+ -+ * include/asm-sh/keyboard.h (kbd_rate): New function. -+ * include/asm-sh/io.h (page_to_bus): New macro. -+ * include/asm-sh/mmzone.h (page_to_phys): Defined. -+ -+ * Updated to 2.4.9. -+ -+2001-08-14 David Woodhouse <dwmw2@infradead.org> -+ -+ * arch/sh/kernel/pci-dma.c: Use dma_cache_wback_inv() in -+ pci_alloc_consistent instead of flush_cache_all(), which is -+ a nop on SH3. If the size is so large that it's quicker just -+ to flush the whole cache, that's a decision for the -+ arch-specific cache management code to make. -+ -+2001-08-11 David Woodhouse <dwmw2@infradead.org> -+ -+ * arch/sh/config.in: New CONFIG_SH_PCIDMA_NONCOHERENT option -+ * include/asm-sh/pci.h: Include cache management calls for the -+ case where the above option is set. -+ * arch/sh/kernel/sh_ksyms.c: include linux/pci.h not asm/pci.h -+ -+2001-08-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.8. -+ -+2001-08-10 Jeremy Siegel <jsiegel@mvista.com> -+ Change SH7751 to separate machine type. -+ Added new files: -+ * arch/sh/kernel/{io,setup,mach,led}_7751se.c -+ * include/asm-sh/{io,hitachi}_7751se.h -+ Modified files: -+ * arch/sh/kernel/Makefile, arh/sh/kernel/{io,led}_se.c -+ * arch/sh/kernel/pci-{7751se,sh7751}.c -+ * include/asm-sh/{io,pci,machvec}.h -+ -+2001-08-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (__flush_wback_region, -+ __flush_purge_region): Comment fix for the arguments. -+ * arch/sh/mm/cache-sh3.c (__flush_wback_region, -+ __flush_purge_region): Likewise. -+ -+2001-08-10 David Woodhouse <dwmw2@infradead.org> -+ -+ * arch/sh/mm/cache-sh3.c: Implementation of cache management -+ routines __flush_{wback,invalidate,purge}_region. Required for -+ SH3 platforms which have DMA hardware. -+ * include/asm-sh/pgtable.h: Take the 'extern' definitions of the -+ above out of #ifdef __SH4__ -+ -+2001-08-10 David Woodhouse <dwmw2@infradead.org> -+ -+ * drivers/mtd/maps/solutionengine.c: Map driver for flash chips -+ and PROM on Solution Engine and similar boards. -+ * drivers/mtd/maps/Config.in: Appropriate magic. -+ * drivers/mtd/maps/Makefile: Ditto. -+ -+2001-08-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.8-pre8. -+ -+ Bug fix for dis-contiguous page handling. -+ * include/asm-sh/mmzone.h (is_valid_page): New inline function. -+ (VALID_PAGE): Use is_valid_page. -+ -+2001-08-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.8-pre7. -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Use __set_bit (was: -+ set_bit). -+ * arch/sh/mm/cache-sh4.c (copy_user_page): Set PG_mapped flag -+ in advance. Because it will be mapped real soon now. -+ (clear_user_page): Ditto. -+ -+ * include/asm-sh/pgtable.h (__flush_cache_page): Removed. -+ * arch/sh/mm/cache-sh4.c (__flush_dcache_page): Renamed from -+ __flush_cache_page and make it static. Removed u0, as it's -+ always 0. Removed the statements of case u0!=0. -+ (flush_dcache_page): Call __flush_dcache_page. -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): We only need to flush -+ cache of kernel mapped address. -+ -+2001-08-08 YAEGASHI Takeshi <t@keshi.org> -+ -+ * drivers/video/pvr2fb.c: -+ (pvr2_modedb): fix "vga_640x480" entry. -+ (pvr2fb_set_var): set SCROLL_YREDRAW to speed up scroll. -+ (pvr2_setcolreg): fix bit field manipulation for RGB565. -+ (pvr2fb_init, pvr2fb_setup): correct number of entries of -+ cable_type and video_output. -+ * drivers/char/dc_keyb.c: New file: implement kbd_translate(). -+ * drivers/char/Makefile: Ditto. -+ * include/asm-sh/keyboard.h: Ditto. -+ * arch/sh/kernel/pci-dc.c (pci_free_consistent): reset -+ gapspci_dma_used in order to allocate PCI buffer again. -+ -+2001-08-08 Greg Banks <gnb@alphalink.com.au> -+ -+ * include/asm-sh/linux_logo.h: New logo. -+ -+2001-08-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.8-pre6. -+ * Updated to 2.4.8-pre5. -+ -+ * arch/sh/mm/cache-sh4.c (ptep_get_and_clear): Moved to ... -+ (check_cache_page): Removed. -+ (__flush_icache_page): Removed. -+ * include/asm-sh/pgtable.h (__flush_icache_page): Removed. -+ -+ * include/asm-sh/pgalloc.h (ptep_get_and_clear): ... here. -+ (ptep_test_and_clear_young, ptep_test_and_clear_dirty, -+ ptep_set_wrprotect, ptep_mkdirty): Moved from pgtable.h. -+ (ptep_get_and_clear needs definition of mm.h). -+ -+ * include/asm-sh/pgtable.h (PG_mapped): Renamed from -+ PG_mapped_with_alias. -+ (__flush_cache_page): Removed last argument, and add first arg. -+ * arch/sh/mm/cache-sh4.c (__flush_cache_page): Take u0 address -+ as first argument. Don't care about I-cache. -+ (flush_dcache_page): Follow the change. -+ -+ * include/asm-sh/ide.h (ide_insw): Removed. -+ * drivers/cdrom/gdrom.c (gdrom_intr): Remove __flush_wback_region. -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Flush the cache when first -+ mapped, even if it has no alias. (We needed this to for NFS). -+ -+2001-08-07 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/net/8139too.c (rtl8139_hw_start): Added tp->rx_config = 0. -+ -+2001-08-07 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (PG_mapped_with_alias): New macro. -+ (PG_dcache_dirty: Deleted. -+ (ptep_get_and_clear, ptep_test_and_clear_young, -+ ptep_test_and_clear_dirty, ptep_set_wrprotect, ptep_mkdirty, -+ pte_same): Define here (was: included by <asm-generic/pgtable.h>). -+ -+ * arch/sh/mm/cache-sh4.c (flush_dcache_page): New implementation. -+ Check if it's mapped or not. -+ (ptep_get_and_clear): New function (was: generic implementation). -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Flush the cache when -+ it's mapped at first, and mark the page as it's mapped. -+ Bug fix: check the page is VALID or not. -+ -+ * arch/sh/mm/cache-sh4.c (CACHE_ALIAS): Moved to ... -+ * include/asm-sh/pgtable.h (CACHE_ALIAS): ... here. -+ -+ * arch/sh/kernel/setup.c (boot_cpu_data): Have initial value for -+ loops_per_jiffy. -+ -+2001-08-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/clear_page.S: Use aligned address for write back. -+ * arch/sh/mm/__copy_user_page-sh4.S: Likewise. -+ * arch/sh/mm/copy_page.S: Likewise. -+ -+ * arch/sh/mm/cache-sh4.c (CACHE_IC_NUM_WAYS, CACHE_OC_NUM_WAYS): -+ Removed. -+ (cache_wback_all): Removed and integrate to cache_init. -+ -+ * arch/sh/mm/copy_page.S: Write back TO, -+ * arch/sh/mm/clear_page.S: Write back TO. -+ -+ * arch/sh/mm/cache-sh3.c (cache_init): Read CCR at P2. -+ * arch/sh/mm/cache-sh4.c (cache_init): Likewise. -+ (__flush_cache_page): Fix bug. Call restore_flags. -+ (flush_cache_page): New implementation. -+ (clear_user_page, copy_user_page): Do it in assembler routines. -+ -+2001-08-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (PTE_PHYS_MASK): Defined. -+ (pte_page): Bug fix. Use PTE_PHYS_MASK. -+ -+ * mm/vmscan.c (try_to_swap_out): Bug fix. Flush the page before we -+ clear the PTE. -+ -+ * Updated to 2.4.8-pre4. -+ -+2001-08-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (__flush_wback_region): Fix bug of -+ expression of END. -+ (__flush_purge_region): Likewise. -+ (__flush_invalidate_region): Likewise. -+ -+2001-08-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/cdrom/gdrom.c (gdrom_init): Restrict merging request. -+ (dont_merge_requests_fn, dont_bh_merge_fn): New functions. -+ -+ * arch/sh/kernel/sys_sh.c (arch_get_unmapped_area): Always align -+ to 16KB. -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_sigtramp): Protect from -+ interrupt. -+ (__flush_cache_page, __flush_icache_page): Likewise. -+ (check_cache_page): Likewise. -+ -+2001-08-02 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/maple/maple.c (maple_send): Bug fix. Call -+ dma_cache_wback_inv. (was: __flush_wback_region). -+ -+ * include/asm-sh/io.h (dma_cache_wback_inv, dma_cache_inv, -+ dma_cache_wback): Defined with new __flush_XXX_region functions. -+ (was: bogus cache_XXX_area functions, not implemented). -+ -+ * drivers/cdrom/gdrom.c (gdrom_intr): Follow the change of -+ the last argument of __flush_wback_region. -+ * include/asm-sh/ide.h (ide_insw): Likewise. -+ -+ * arch/sh/mm/cache-sh4.c (__flush_purge_region): New function. -+ (__flush_icache_page): New function. -+ (__flush_wback_region, __flush_invalidate_region): Last argument -+ is SIZE (was: END). -+ -+ * include/asm-sh/pgtable.h (__flush_purge_region, -+ __flush_icache_page): Added. -+ -+2001-07-31 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/system.h (switch_to): Revert changes of 07-30. -+ In schedule(), switch_to() is always called with interrupt enabled. -+ -+ * drivers/cdrom/gdrom.c (DEVICE_NAME): Shorter name (when error). -+ (gdrom_do_command): Protect from interrupts. -+ (do_gdrom_request): Handle the case where a request is made up -+ from multple chunks. -+ -+ * Updated to 2.4.8-pre3. -+ -+ * drivers/cdrom/gdrom.c: New file. -+ * drivers/cdrom/Makefile, drivers/cdrom/Config.in, arch/sh/config.in: -+ Support SEGA Dreamcast GD-ROM Driver (CD-R). -+ -+2001-07-30 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/pci-dc.c (pci_alloc_consistent): Format arg change -+ to stop warning. -+ * drivers/maple/maple.c: Likewise. -+ -+ * arch/sh/kernel/pci-sh7751.c (pci_conf1_read_config_byte, -+ pci_conf1_read_config_word, pci_conf1_read_config_dword, -+ pci_conf1_write_config_byte, pci_conf1_write_config_word, -+ pci_conf1_write_config_dword): Use no underscore version -+ of save_and_cli and restore_flags. -+ -+ * arch/sh/overdrive/led.c (mach_led): Likewise. -+ -+ * include/asm-sh/system.h (switch_to): Alternative implementation -+ which maintain interrupt-disabled state. -+ (__save_flags, __save_and_cli): New implementations. -+ (__restore_flags): Debuuging implementation. -+ (really_restore_flags): New define. -+ -+ * include/asm-sh/softirq.h (local_bh_enable): Add barrier and -+ remove __sti. -+ -+ * arch/sh/kernel/setup_dc.c (disable_systemasic_irq, -+ enable_systemasic_irq): Protect critical region. Driver -+ can call disable_irq. -+ -+ * arch/sh/kernel/setup_cqreek.c (setup_cqreek): Remove declaration -+ of disable_hlt. -+ -+ * arch/sh/kernel/process.c (cpu_idle): Match __cli/__sti. Avoid -+ sleeping with interrupt disabled. -+ -+2001-07-30 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/pgtable.h (__flush_wback_region): Defined for SH3. -+ -+2001-07-29 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/sh-sci.c (put_char, put_string): Only for -+ CONFIG_SERIAL_CONSOLE. -+ -+ * Updated to 2.4.8-pre2. -+ -+2001-07-28 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/__copy_user_page-sh4.S (__copy_user_page): Bug fix. -+ Do not clobber r10,r11. -+ * arch/sh/mm/copy_page.S (copy_page): Bug fix. Do not clobber r10,r11. -+ * arch/sh/mm/cache-sh4.c (clear_user_page, copy_user_page): Bug fix. -+ Call __flush_tlb_page with interrupt disabled. -+ -+2001-07-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/Makefile (arch/sh/vmlinux.lds): Revert the change of -+ 2001-07-27. GCC complains (misunderstand) it. -+ -+2001-07-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/vmlinux.lds.in (.data.cacheline_aligned): Align 16 for SH3. -+ Reported by Masahiro ABE <m-abe@aandd.co.jp>. -+ * arch/sh/vmlinux.lds.in: Rename from vmlinux.lds.S, since -+ it's not written in assembler. -+ * arch/sh/Makefile (arch/sh/vmlinux.lds): Follow the change. -+ -+ * drivers/ide/ide.c (ide_wait_cmd): Revert the change to sync -+ mainline. IIRC, it was needed for SolutionEngine, but such -+ timing issue shoule be solved target specific way. -+ -+ * scripts/Configure: Revert the change to sync mainline. -+ -+ Follow the changes of 2.4.8-pre1. -+ * include/asm-sh/irq.h (irq_demux): Make them static inline. -+ * include/asm-sh/mmu_context.h (get_new_mmu_context, get_mmu_context, -+ init_new_context, destroy_context, set_asid, get_asid, -+ activate_context, switch_mm, enter_lazy_tlb): Likewise. -+ * include/asm-sh/io.h (isa_port2addr, ctrl_inb, ctrl_inl, ctrl_outb, -+ ctrl_outw, virt_to_phys, phys_to_virt): Likewise. -+ * include/asm-sh/processor.h (thread_saved_pc, grab_fpu,(release_fpu): -+ Likewise. -+ * include/asm-sh/uaccess.h (__strncpy_from_user, __clear_user, -+ __copy_user): Likewise. -+ * include/asm-sh/semaphore.h (sema_init): Likewise. -+ * include/asm-sh/pci.h (pci_dma_supported): Likewise. -+ * include/asm-sh/page.h (get_order): Likewise. -+ * include/asm-sh/checksum.h (csum_partial_copy_nocheck, -+ csum_partial_copy_from_user): Likewise. -+ -+ * include/asm-sh/smplock.h: Remove bogus SMP lock implementation. -+ -+ * Updated to 2.4.8-pre1. -+ -+ * arch/sh/kernel/entry.S (ret_from_fork): Call schedule_tail. -+ by Stuart Menefy <stuart.menefy@st.com>. -+ -+2001-07-26 Takashi YOSHII <yoshii-takashi@hitachi-ul.co.jp> -+ -+ * include/asm-sh/irq.h, include/asm-sh/dma.h, arch/sh/kernel/dma.c, -+ arch/sh/kernel/Makefile, arch/sh/config.in, -+ Documentation/Configure.help: DMA support update. -+ -+2001-07-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/setup_cqreek.c (mask_and_ack_cqreek): Move the -+ inw after the masking. -+ (setup_cqreek): Remove call of disable_hlt. -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_sigtramp): Access from P2 -+ area. -+ -+2001-07-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (__flush_wback_region): Rename from -+ __flush_dcache_region, as it's confusing. -+ (__flush_invalidate_region): Make it externally visible. -+ * include/asm-sh/pgtable.h: Follow the change. -+ * drivers/maple/maple.c (maple_send): Follow the change. -+ -+2001-07-24 Masahiro ABE <m-abe@aandd.co.jp> -+ -+ * arch/sh/kernel/setup.c (setup_arch): #ifdef mv_unknown to eliminate -+ warning. -+ -+2001-07-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/segment.h: Removed. -+ * arch/sh/kernel/pci-sh7751.c: Remove inclusion of <asm/segment.h>. -+ -+2001-07-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/time.c (do_timer_interrupt): Remove #if 0 for -+ sh_do_profile. -+ -+2001-07-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/copy_page.S, arch/sh/mm/clear_page.S: Bug fix. -+ SH-3 doesn't have movca op-code. -+ -+ * include/asm-sh/page.h (clear_page, copy_page): Declared. -+ * arch/sh/mm/clear_page.S, arch/sh/mm/copy_page.S: New files. -+ * arch/sh/mm/Makefile (obj-y): Added. -+ -+ * include/asm-sh/page.h (__clear_user_page, __copy_user_page): -+ Declared. -+ * arch/sh/mm/cache-sh4.c: Use them. -+ * arch/sh/mm/__clear_user_page-sh4.S, -+ arch/sh/mm/__copy_user_page-sh4.S: New files. -+ * arch/sh/mm/Makefile: Added. -+ -+2001-07-23 David Woodhouse <dwmw2@infradead.org> -+ -+ * arch/sh/mm/Makefile (CONFIG_CPU_SH3, CONFIG_CPU_SH4): Conditionally -+ defined. -+ * arch/sh/mm/cache-sh3.c, arch/sh/mm/cache-sh4.c: New files. -+ * arch/sh/mm/cache.c: Removed. -+ -+2001-07-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/io_adx.h: Copyright notice fix. -+ -+ * Documentation/Configure.help (CONFIG_CPU_LITTLE_ENDIAN): Revert the -+ change to sync mainline. -+ * README (ON WHAT HARDWARE DOES IT RUN?): Likewise. -+ -+ * Documentation/Configure.help (CONFIG_8139TOO_DREAMCAST): Added. -+ * drivers/net/Config.in (CONFIG_8139TOO_DREAMCAST): New config. -+ * drivers/net/8139too.c (CONFIG_8139TOO_DREAMCAST): New config. -+ (RX_BUF_LEN_IDX): Depends CONFIG_8139TOO_DREAMCAST. -+ (rtl8139_rx_config): Likewise. -+ (rtl8139_start_xmit): Use USE_NO_DMAMAP. -+ -+ * arch/sh/config.in: Fix the indentation. -+ -+2001-07-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.7. -+ -+2001-07-20 Masahiro ABE <m-abe@aandd.co.jp> -+ -+ * Documentation/Configure.help (CONFIG_CF_AREA5): Edit text. -+ -+2001-07-19 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.7-pre8. -+ -+ * arch/sh/kernel/process.c (cpu_idle): Remove not-needed __sti. -+ As it was asymmetric, may cause trouble. -+ -+2001-07-18 Masahiro ABE <m-abe@aandd.co.jp> -+ -+ * Documentation/Configure.help (CONFIG_CF_ENABLER): Support area 5 too. -+ (CONFIG_CF_AREA5): Added. -+ * arch/sh/config.in: Added selection of CompactFlash area. -+ * arch/sh/kernel/cf-enabler.c (allocate_cf_area): Added to support -+ directly connected CompactFlash for SH4. -+ (cf_init_default): call allocate_cf_area if SH4. -+ -+ * Documentation/Configure.help (CONFIG_SH_GENERIC): Added ADX. -+ * arch/sh/config.in (CONFIG_SH_ADX): Added for ADX support. -+ (CONFIG_MEMORY_START): Added definition for ADX. -+ (CONFIG_CF_ENABLER): Added ADX. -+ * arch/sh/kernel/Makefile: Added ADX support. -+ * include/asm-sh/io.h: Added ADX support. -+ * include/asm-sh/machvec.h: Added ADX support. -+ -+ * arch/sh/kernel/{io_adx.c,mach_adx.c,setup_adx.c}: New files. -+ * include/asm-sh/io_adx.h: New file. -+ -+ * arch/sh/kernel/irq_maskreg.c: New file. -+ Add support for simple word-size IRQ mask register. -+ * include/asm-sh/irq.h : Likewise. -+ -+2001-07-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (__do_page_fault): Use pte_not_present. -+ * include/asm-sh/pgtable.h (pte_not_present): New inline function. -+ -+2001-07-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Don't use pgd/pte memory pool. -+ * include/asm-sh/pgalloc.h (do_check_pgt_cache): Defined. -+ (pgd_quicklist, pte_quicklist, pgtable_cache_size): Null definition. -+ (pgd_alloc): Renamed from pgd_alloc_slow. -+ (pgd_free): Renamed from free_pgd_slow. -+ (get_pgd_fast, free_pgd_fast): Removed. -+ (pte_alloc_one_fast): Just return 0. -+ (pte_free_fast): Removed. -+ (pte_free): Defined as pte_free_slow. -+ -+ * arch/sh/mm/init.c (do_check_pgt_cache): Removed. -+ (show_mem): Removed showing pgtable_cache_size. -+ -+ * include/asm-sh/processor.h (pte_quick, pgtable_cache_sz): Removed. -+ (hard_math): Change the order. -+ * arch/sh/kernel/setup.c: Follow the change. -+ -+ * include/asm-sh/pgtable-2level.h (pgd_clear): Do nothing. -+ -+ * mm/memory.c (free_one_pgd): Revert change of 2001-07-16. -+ (As it's not accepted by Linus.) -+ -+ -+ * Updated to 2.4.7-pre7. -+ -+ * arch/sh/mm/cache.c (__flush_cache_page): Don't disable interrupt. -+ -+2001-07-17 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (p3map_sem): New variable. -+ (p3_cache_init): Initialize p3map_sem. -+ (clear_user_page, copy_user_page): Use semaphore(s) to protect -+ critical section. -+ (flush_cache_all): New implementation. -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Make the critical section -+ shorter. -+ -+2001-07-17 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/cache.c (clear_user_page, copy_user_page): Bug fix. -+ Disable interrupt until __flush_dcache_region() is done. -+ -+2001-07-17 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/fault.c (__do_page_fault): Bug fix. Don't allow -+ PGD overrun. -+ -+ * arch/sh/kernel/dma.c: Remove inclusion of <asm/smp.h>. -+ * arch/sh/kernel/setup.c, arch/sh/kernel/irq.c: Ditto. -+ * arch/sh/kernel/process.c: Include file clean up. -+ -+ * arch/sh/kernel/process.c (machine_restart, machine_halt): New -+ implementations. -+ -+2001-07-16 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * mm/memory.c (free_one_pgd): Bug fix. Do pgd_clear _after_ -+ free_one_pmd. -+ -+ * arch/sh/kernel/setup.c (boot_cpu_data): Bug fix. 0 for -+ pgtable_cache_sz. -+ -+ * arch/sh/mm/cache.c (clear_user_page, copy_user_page): Clear PTE -+ after use. -+ -+2001-07-16 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/pgalloc.h (__flush_tlb_page): Declared. -+ * arch/sh/mm/cache.c : Add inclusion <asm/pgalloc.h>, -+ <asm/mmu_context.h> -+ (clear_user_page, copy_user_page): Do __flush_tlb_page() before -+ update_mmu_cache(). -+ * arch/sh/mm/fault.c (__flush_tlb_page): Make it global. -+ -+2001-07-16 Takashi YOSHII <yoshii-takashi@hitachi-ul.co.jp> -+ -+ * arch/sh/kernel/ptrace.c (ubc_set_tracing): Bug fix for SH7709A. -+ -+ * include/asm-sh/ptrace.h (UBC_TYPE_SH7729, BBR_CPU, BBR_DMA, -+ BRCR_PCTE): Defined. -+ (BBR_WRITE): Change the value. -+ -+2001-07-16 Masahiro Abe <m-abe@aandd.co.jp> -+ -+ IRQ handling update. -+ * arch/sh/kernel/setup_bigsur.c (end_bigsur_irq): Don't enable IRQ -+ when it is disabled. -+ * arch/sh/kernel/setup_ec3104.c (end_ec3104_irq): Likewise. -+ * arch/sh/kernel/setup_hd64465.c (end_hd64465_irq): Likewise. -+ * arch/sh/kernel/setup_hd64461.c (end_hd64461_irq): Likewise. -+ * arch/sh/kernel/setup_dc.c (end_systemasic_irq): Likewise. -+ * arch/sh/kernel/irq_ipr.c (end_pint_irq): Likewise. -+ -+2001-07-16 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/mmzone.h: Remove inclusion of bootmem.h. -+ -+2001-07-12 NIIBE Yutaka <gniibe@m17n.org> -+ -+ IRQ handling bug fix. Reported by Masahiro Abe <m-abe@aandd.co.jp> -+ * arch/sh/kernel/irq_intc2.c (end_intc2_irq): Don't enable IRQ -+ when it is disabled. -+ * arch/sh/kernel/irq_ipr.c (end_ipr_irq): Likewise. -+ * arch/sh/kernel/irq_imask.c (end_imask_irq): Likewise. -+ -+ * arch/sh/kernel/irq.c (setup_irq): Clear desc->status. -+ (probe_irq_on): Removed unmatched spin_unlock_irq(). -+ -+2001-07-12 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (copy_user_page, clear_user_page): Bug fix. -+ Call __flush_dcache_region so that the data goes to memory, to -+ maintain cache coherency between I and D. -+ -+2001-07-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/config.in (CONFIG_DEBUG_KERNEL_WITH_GDB_STUB): Removed. -+ -+ * arch/sh/kernel/entry.S (call_dae, debug_trap): Only for -+ CONFIG_SH_STANDARD_BIOS (was: also CONFIG_DEBUG_KERNEL_WITH_GDB_STUB). -+ * arch/sh/kernel/traps.c (gdb_vbr_vector, trap_init): Likewise. -+ * drivers/char/sh-sci.c: Likewise. -+ -+ * Documentation/Configure.help (CONFIG_GDB_STUB_VBR): Removed. -+ (CONFIG_DEBUG_KERNEL_WITH_GDB_STUB): Removed. -+ (CONFIG_STNIC): Added. -+ (CONFIG_SH_RTC): Added. -+ (CONFIG_SH_GENERIC): Added. -+ -+2001-07-11 Masahiro Abe <m-abe@aandd.co.jp> -+ -+ * include/asm-sh/machvec.h: Bug fix. Move #endif. -+ -+2001-07-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/hardirq.h (irq_cpustat_t): Added __ksoftirqd_task. -+ * include/asm-sh/atomic.h (smp_mb__before_atomic_dec): Defined. -+ -+ * Updated to 2.4.7-pre6. -+ * Documentation/fb/pvr2fb.txt (Advantages): Typo fix. -+ -+2001-07-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.7-pre5. -+ -+ Follow the change of 2.4.7-pre5. -+ * include/asm-sh/softirq.h (raise_softirq): Removed. -+ -+2001-07-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.4.6. -+ -+ Follow the change of 2.4.6. -+ * arch/sh/vmlinux.lds.S (.rodata): Added .rodata.*. -+ * include/asm-sh/hitachi_se.h (PA_MRSHPC): Spell fix for comment. -+ -+2001-07-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/init.c (paging_init): Use __MEMORY_SIZE_2ND. -+ -+2001-07-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/config.in (CONFIG_DISCONTIGMEM): Bug fix. Added "then". -+ By ISHIKAWA Mutsumi <ishikawa@linux.or.jp>. -+ -+ * include/asm-sh/page.h (phys_to_page): Bug fixed for paren. -+ By YAEGASHI Takeshi <t@keshi.org>. -+ -+ Discontiguous memory support. -+ * arch/sh/config.in (CONFIG_DISCONTIGMEM): New config. -+ * arch/sh/kernel/setup.c (setup_arch): Setup NODE_DATA, and NODE(1). -+ * arch/sh/mm/init.c (discontig_page_data, discontig_node_bdata): -+ New variables. -+ (paging_init): Initialize NODE(1). -+ (mem_init): Initialize NODE(1). -+ * include/asm-sh/mmzone.h: New file. -+ * include/asm-sh/pgtable.h (pte_page): Use phys_to_page. -+ * include/asm-sh/page.h (__MEMORY_START_2ND, __MEMORY_SIZE_2ND): -+ Defined. -+ (VALID_PAGE, phys_to_page): #ifdef/#endif-out. -+ -+2001-07-07 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/page.h (phys_to_page): New macro. -+ (virt_to_page): Use phys_to_page. -+ * include/asm-sh/pgtable.h (pte_page): Use phys_to_page. -+ -+2001-07-07 YAEGASHI Takeshi <t@keshi.org> -+ -+ HD64461 IRQ number fix for HP600. -+ 93: 10076 HD64461-IRQ ide0 # CF slot -+ 94: 15095 HD64461-IRQ NE2000 # PC-card slot -+ -+ * include/asm-sh/hd64461.h (HD64461_IRQ_NUM): Added. -+ * include/asm-sh/ide.h (ide_default_irq_hp600): Fix irq number. -+ * arch/sh/kernel/mach_hp600.c (mv_hp620, mv_hp680, mv_hp690): Fix -+ mv_nr_irqs. -+ -+2001-07-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (flush_icache_page, flush_dcache_page, -+ flush_page_to_ram, check_cache_page): Use page_address. -+ * arch/sh/mm/fault.c (update_mmu_cache): Use page_address. -+ (and Bug fix.) -+ * include/asm-sh/pgtable.h (mk_pte): Use page_address. -+ -+2001-07-04 Jeremy Siegel <jsiegel@mvista.com> -+ -+ * arch/sh/lib/checksum.S: Bug fix. Update R1's value. -+ -+2001-07-04 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/pgtable.h (__flush_dcache_region): Defined for SH-3. -+ * drivers/net/Config.in (CONFIG_CS89x0): Can be enabled even when PCI -+ is disabled. -+ -+2001-07-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/setup.c: Bug fix. 0 for pte_quick. -+ -+2001-07-02 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (__flush_invalidate_region): New function. -+ (copy_user_page, clear_user_page): Bug fix. Use -+ __flush_invalidate_region. -+ -+ * include/asm-sh/pgtable.h (PG_dcache_dirty): Defined. -+ * arch/sh/mm/cache.c (flush_dcache_page): Defer flushing the cache -+ if possible. -+ * arch/sh/mm/fault.c (update_mmu_cache): Handle the deferred -+ flushing. -+ -+2001-07-01 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/net/stnic.c (stnic_probe): Set endian. -+ Reported by <yshimizu@ic-software.co.jp>. -+ -+2001-06-30 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache.c (__flush_cache_page): Protect against -+ interrupt. -+ (flush_cache_all): Just clear the address array. -+ (detect_cpu_and_cache_system): Likewise. -+ (flush_cache_page): Bug fix. Tag is physical address. -+ -+ * Updated to 2.4.6-pre8. -+ -+ SH-4 cache handling improvement. -+ * arch/sh/mm/cache.c (flush_icache_page, flush_page_to_ram): -+ #if 0/#endfi out. -+ * include/asm-sh/pgtable.h (flush_page_to_ram, flush_icache_page): -+ Define as NULL. -+ * kernel/ptrace.c (access_one_page): Add flush_dcache_page. -+ -+ * arch/sh/mm/cache.c (flush_cache_page): Remove bogus comment. -+ Change comment as we also need to let I-cache to flush. -+ (flush_dcache_page): Mention I-cache in comment. -+ (__flush_cache_page): New function. (Use 0 to invalidate.) -+ (flush_dcache_page): Use __flush_cache_page. -+ -+ * arch/sh/mm/Makefile (obj-y): Added ioremap.o. -+ * arch/sh/mm/ioremap.c (remap_area_pages): Use pgd_offset_k. -+ (p3_ioremap): Renamed from __ioremap. -+ (p3_iounmap): Renamed from iounmap. -+ (remap_area_pages): Make it global. -+ -+ * arch/sh/mm/fault.c (__do_page_fault): Use P3SEG and P4SEG -+ instead of VMALLOC_START and VMALLOC_END. -+ * include/asm-sh/pgtable.h (p3_cache_init): New function. -+ (VMALLOC_START): Change the value. -+ * arch/sh/mm/cache.c (p3_cache_init): New function. -+ (icache_purge_region): Removed. -+ (flush_icache_range): Just call flush_cache_all. It's efficient -+ because the range would be so large (Usually it's larger than -+ cache size itself). And it's OK, because it's rarely used. -+ (clear_user_page, copy_user_page): New implementations. -+ -+ * arch/sh/mm/init.c (mem_init): Use __flush_dcache_region -+ (was: flush_page_to_ram. The obsolete interface). -+ (mem_init): Call p3_cache_init. -+ -+ * arch/sh/mm/cache.c (icache_purge_region): Renamed from -+ icache_purge_range. -+ (__flush_dcache_region): Renamed (was: __flush_dcache_range). -+ (flush_icache_range): Follow the changes. -+ * include/asm/ide.h (ide_insw): Use __flush_dcache_region. -+ * include/asm-sh/pgtable.h: Ditto. -+ -+ * drivers/maple/maple.c (maple_send): Use __flush_dcache_region -+ (was: flush_page_to_ram. The obsolete interface). -+ (maple_sendbuf_page): Removed. -+ -+ * include/asm-sh/pgtable.h (HAVE_ARCH_UNMAPPED_AREA): Defined for -+ SH-4. -+ * arch/sh/kernel/sys_sh.c (arch_get_unmapped_area): New function. -+ * include/asm-sh/shmparam.h (SHMLBA): 16kB for SH-4. -+ * arch/sh/mm/fault.c (update_mmu_cache): Removed pte_shared -+ handling. -+ (__flush_tlb_phys): Removed. -+ * include/asm-sh/pgtable.h (pte_shared): Removed. -+ -+2001-06-29 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/io_se.c (se_outb_p): Bug fix. Remove duplicated -+ `if' clause. -+ -+2001-06-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/string.h (strlen): Declared. -+ (__HAVE_ARCH_STRLEN): Defined. -+ * arch/sh/lib/strlen.S: New file. -+ * arch/sh/lib/Makefile (obj-y): Added strlen.o. -+ -+ * Updated to 2.4.6-pre6. -+ -+ Implement cache flush on I/O completion. -+ * include/asm-sh/pgtable.h (__flush_dcache_range): Declared. -+ * arch/sh/mm/cache.c (__flush_dcache_range): Rename from -+ dcache_wback_range. And make it visible (not-static). -+ * include/asm-sh/ide.h (ide_insw): New macro to handle cache flush -+ for I/O. -+ -+ * Revert the patch of 2001-06-26. It should be done by driver -+ layer not VM layer. -+ -+2001-06-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/lib/checksum.S (csum_partial_copy_generic): Performance -+ tweak. Use @(<DISP>,RN) addressing mode. Consider pipeline -+ of SH-3. Perhaps we need different implementation for SH-4. -+ -+2001-06-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ New implementation of flush-ing the page on swap. -+ -+ * include/linux/mm.h (PG_flush_after, PageFlushAfter, -+ SetPageFlushAfter, PageTestandClearFlushAfter): New bit. -+ * mm/page_io.c (rw_swap_page_base): Set flush-after bit. -+ * fs/buffer.c (end_buffer_io_async): Implement flush-ing -+ with PG_flush_after. -+ -+ * mm/memory.c (do_swap_page): Remove flush-ing the page. -+ -+2001-06-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/ide/ide-geometry.c: Revert change of 2001-03-08. -+ It's not needed as we have the header file now . -+ -+ * include/linux/netdevice.h include/net/checksum.h, -+ net/core/datagram.c, net/core/iovec.c, net/core/scm.c, -+ net/core/skbuff.c, net/core/sock.c, net/socket.c: Revert changes to -+ sync standard kernel (was: Changes to support no CONFIG_NET). -+ -+2001-06-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.6-pre5. -+ -+2001-06-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (_PAGE_FLAGS_HARDWARE_MASK): Drop SH-bit -+ on SH-3. -+ -+2001-06-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (__pmd_offset): Removed. It's only -+ valid for x86. -+ -+ * include/asm-sh/string.h (strcpy, strncpy, strcmp, strncmp): Make -+ them static inline. -+ -+ * include/asm-sh/processor.h (INIT_MMAP): Bug fix. Set vm_start -+ and vm_end to 0. (was: 0x80000000--0xa0000000). -+ -+ * include/asm-sh/pgtable.h: Revert changes of 2001-06-20. -+ Atomic update is for SMP machine. We don't need it for SuperH. -+ -+2001-06-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Enable use of pgd_quicklist and pte_quicklist (was: not used). -+ * include/asm-sh/pgalloc.h (pgd_free): Use free_pgd_fast (was: slow). -+ (pte_free): Use pte_free_fast (was: slow). -+ (pte_alloc_one_fast): Clear the first entry (was: assign ret[1]). -+ * include/asm-sh/pgtable-2level.h (pgd_clear): Zero clear for reuse. -+ -+2001-06-21 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/irq.c (do_IRQ): Bug fix. Clear IRQ_INPROGRESS bit. -+ -+ * include/asm-sh/pgtable.h: Include <asm/pgtable-2level.h> earlier. -+ * include/asm-sh/pgtable-2level.h: Add #ifndef/#endif for -+ __ASSEMBLY__. -+ -+ * arch/sh/mm/init.c (paging_init): Fixed to PTRS_PER_PGD. -+ (was: USER_PTRS_PER_PGD*2) -+ (swapper_pg_dir): Use PTRS_PER_PGD (was: 1024 directly). -+ -+ * include/asm-sh/pgtable.h (TWOLEVEL_PGDIR_SHIFT, -+ BOOT_USER_PGD_PTRS, BOOT_KERNEL_PGD_PTRS, USER_PGD_PTRS, -+ KERNEL_PGD_PTRS): Removed. (only valid for x86) -+ -+ * Updated to 2.4.6-pre4. -+ -+2001-06-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (_PAGE_BIT_DIRTY, _PAGE_BIT_RW, -+ _PAGE_BIT_ACCESSED): Defined. -+ (ptep_test_and_clear_dirty, ptep_test_and_clear_young, -+ ptep_set_wrprotect, ptep_mkdirty, ptep_get_and_clear): Implement -+ atomic update of PTE. -+ -+2001-06-19 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/irq_ipr.c (init_IRQ): Removed initialization -+ of INTC_IRRX, INTC_ICRX. -+ -+ * include/asm-sh/softirq.h (local_bh_enable): Follow the change of -+ semantics of softirq (of IA-32). -+ -+ * arch/sh/kernel/entry.S (ret_from_syscall): Don't call softirq. -+ (handle_softirq): Removed. -+ (ret_with_reschedule): Label removed. -+ -+ * arch/sh/kernel/irq.c (do_IRQ): Follow the change of IA-32 version. -+ (irq_controller_lock): Removed. -+ -+ * include/asm-sh/hardirq.h: Remove __softirq_active, __softirq_mask. -+ Add softirq_pending. -+ -+ -+ * Updated 2.4.6-pre3. -+ -+2001-05-28 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/bitops.h (__change_bit,__test_and_set_bit, -+ __test_and_clear_bit,__test_and_change_bit): Added. -+ -+2001-05-28 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/config.in (CONFIG_SH_SH2000): Added. -+ * arch/sh/kernel/Makefile: Likewise. -+ * include/asm-sh/io.h: Likewise. -+ * include/asm-sh/machvec.h: Likewise. -+ * arch/sh/kernel/{setup_sh2000.c,io_sh2000.c}: New file. -+ * include/asm-sh/io_sh2000.h: New file. -+ -+ * arch/sh/kernel/sh_ksyms.c (strnlen): Exported. -+ -+2001-05-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.5. -+ * arch/sh/kernel/rtc.c (set_rtc_time): Removed declaration -+ of the function abs. -+ -+2001-05-24 Stuart Menefy <stuart.menefy@st.com> -+ -+ * arch/sh/config.in: Change to ST40STB1 config, moved char/pcmcia to -+ char menu, and added joystick and media options -+ -+2001-05-24 Stuart Menefy <stuart.menefy@st.com> -+ -+ * arch/sh/kernel/{time,setup}.c include/asm-sh/processor.h: Added -+ support for for ST40STB1 memory clock -+ * arch/sh/overdrive/irq.c: Set up INTC to use encoded interrupt pins, -+ and set up non-Overdrive interrupts as imask type. -+ * include/asm-sh/pci.h: Move declaration of struct pci_dev so declared -+ before used -+ * arch/sh/kernel/io_se.c: Typo fix -+ * arch/sh/stboards/{led.c,harp.h}: Add LED_ON and LED_OFF macros -+ -+2001-05-24 M. R. Brown <mrbrown@linuxdc.org> -+ -+ LinuxDC drivers merge. -+ -+ * Documentation/Configure.help: Added documentation for CONFIG_FB_PVR2 -+ and CONFIG_FB_PVR2_DEBUG. -+ * Documentation/fb/00-INDEX: Added line for pvr2fb.txt. -+ * Documentation/fb/pvr2fb.txt: New file, document features of the pvr2 -+ frame buffer. -+ * arch/sh/config.in: Conditionalized Maple driver options, set -+ CONFIG_SH_RTC to "n" when configuring for Dreamcast. -+ * arch/sh/kernel/mach_dc.c: Machine vector: Use NR_IRQS standard -+ (reflects new IRQ count), added systemasic_irq_demux. -+ * arch/sh/kernel/pci-dc.c: Include new asm/dc_sysasic.h. Removed -+ definition of GAPSPCI_INTC and updated GAPSPCI_IRQ to new IRQ -+ convention. (disable_gapspci_irq, enable_gapspci_irq, -+ mask_and_gapspci_irq, end_gapspci_irq, startup_gapspci_irq, -+ shutdown_gapspci_irq, gapspci_irq_type): Removed. (gapspci_init): -+ Removed assignment of gapspci_irq_type. -+ * arch/sh/kernel/setup_dc.c: New includes to reflect IRQ standard. -+ (disable_systemasic_irq, enable_systemasic_irq, ack_systemasic_irq, -+ end_systemasic_irq, startup_systemasic_irq, shutdown_systemasic_irq, -+ systemasic_int, systemasic_irq_demux): New routines. -+ (setup_dreamcast): Assign systemasic_int to respective irq_desc IRQs. -+ * drivers/video/Config.in: Added configuration options for -+ CONFIG_FB_PVR2, removed options for CONFIG_FB_DC. -+ * drivers/video/Makefile: Added dependency for CONFIG_FB_PVR2, removed -+ dependancy for CONFIG_FB_DC. -+ * drivers/video/dcfb.c: Removed file. -+ * drivers/video/fbmem.c: Added externs for pvr2fb routintes, removed -+ declaration of dcfb_init(). Added pvr2 to the list of framebuffers, -+ removed dcfb from that list. -+ * drivers/video/pvr2fb.c: New file, PowerVR 2 frame buffer support, -+ replaces generic DC fb support. -+ * include/asm-sh/dc_sysasic.h: New file, Definitions for Dreamcast -+ hardware events. -+ * include/asm-sh/irq.h: Added OFFCHIP_NR_IRQS def. for Dreamcast, -+ added declaration of systemasic_irq_demux(). -+ -+2001-05-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.5-pre5. -+ -+ * arch/sh/kernel/hd64465_gpio.c, arch/sh/kernel/io_cat68701.c, -+ arch/sh/kernel/io_dc.c, arch/sh/kernel/io_ec3104.c, -+ arch/sh/kernel/irq_intc2.c, arch/sh/kernel/mach_dc.c, -+ arch/sh/kernel/setup_dc.c, arch/sh/kernel/setup_ec3104.c, -+ arch/sh/mm/cache.c, include/asm-sh/hd64465_gpio.h: Follow the -+ change of 2.4.5-pre5. Inclusion of config.h. -+ -+2001-05-24 Stuart Menefy <stuart.menefy@st.com> -+ -+ * arch/sh/kernel/pci_st40.c -+ arch/sh/overdrive/{Makefile,galileo.c,mach.c,pcidma.c} -+ arch/sh/stboards/{Makefile,mach.c,pcidma.c}: Changes for new style -+ of PCI set up -+ -+ * arch/sh/kernel/entry.S include/asm-sh/irq.h: Updated the number of -+ interrupts for ST40STB1 -+ -+2001-05-22 M. R. Brown <mrbrown@linuxdc.org> -+ -+ Preliminary Dreamcast Maple Bus driver restructuring. -+ -+ * drivers/dreamcast/maple/Config.in, drivers/dreamcast/maple/Makefile -+ drivers/dreamcast/maple/maple.c, drivers/dreamcast/maple/maple.h, -+ drivers/dreamcast/maple/dckbd.c, drivers/dreamcast/maple/dcmouse.c, -+ drivers/dreamcast/maple/dcpad.c: Files moved to consistent kernel -+ directories and renamed. -+ * drivers/dreamcast/Config.in, drivers/dreamcast/Makefile: Removed. -+ * drivers/maple/Config.in, drivers/maple/Makefile, -+ drivers/maple/maple.c: New files, moved from drivers/dreamcast/maple. -+ * include/linux/maple.h: New file, was -+ drivers/dreamcast/maple/maple.h. -+ * drivers/char/maple_keyb.c: New file, was -+ drivers/dreamcast/maple/dckbd.c. -+ * drivers/char/maplemouse.c: New file, was -+ drivers/dreamcast/maple/dcmouse.c. -+ * drivers/char/Makefile: Added dependencies for CONFIG_MAPLE_KEYBOARD -+ and CONFIG_MAPLE_MOUSE -+ * drivers/char/joystick/maplecontrol.c: New file, was -+ drivers/dreamcast/maple/dcpad.c. -+ * drivers/char/joystick/Config.in: Added config options for -+ CONFIG_MAPLE_CONTROL. -+ * drivers/char/joystick/Makefile: Added dependency for -+ CONFIG_MAPLE_CONTROL. -+ * Makefile: Added DRIVERS dependency for CONFIG_MAPLE. -+ * drivers/Makefile: Added dependencies for CONFIG_MAPLE. -+ * arch/sh/Makefile: Removed Dreamcast driver dependencies. -+ * arch/sh/config.in: Check for CONFIG_SH_DREAMCAST for -+ CONFIG_MEMORY_START. Added config options for CONFIG_MAPLE_*, added -+ sources to drivers/maple/Config.in and -+ drivers/char/joystick/Config.in. -+ -+2001-05-21 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.5-pre4. -+ -+2001-05-17 YAEGASHI Takeshi <t@keshi.org> -+ -+ * arch/sh/kernel/pci-dc.c: New file: Dreamcast PCI routines. -+ * arch/sh/kernel/setup_dc.c: Moved PCI code to pci-dc.c. -+ * arch/sh/kernel/mach_dc.c (mv_init_pci): Removed. -+ * arch/sh/kernel/Makefile: Added rules for pci-dc.o. -+ * include/asm-sh/pci.h (PCIBIOS_MIN_IO, PCIBIOS_MIN_MEM): Added -+ definitions for Dreamcast. -+ * drivers/net/8139too.c (rtl8139_hw_start): Keep RxConfig register's -+ cache(tp->rx_config) dirty. -+ -+2001-05-16 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/pci-sh7751.c (pcibios_set_master, pci_check_direct, -+ pcibios_fixup_peer_bridges, pcibios_enable_device, -+ pcibios_set_master): Prepend KERN_INFO for printk. -+ -+ * Updated to 2.4.5-pre2. -+ -+2001-05-14 Dustin McIntire <dustin@sensoria.com> -+ -+ * arch/sh/kernel/sh_ksyms.c: Move CONFIG_PCI above the -+ pci_alloc_consistent. -+ * arch/sh/kernel/pci-irq.c: Removed. -+ -+ Big Sur support update. -+ * include/asm-sh/pci-sh7751.h (SH7751_PCICONF13): Change the value. -+ It was 0x40. -+ (PLATFORM_ASPEN, PLATFORM_BIGSUR): Removed. -+ * arch/sh/kernel/setup_bigsur.c: Calculation change of mask and bit. -+ * arch/sh/kernel/pci-bigsur.c: Turn the clocks and clear powerdown -+ IRQ earlier. -+ * arch/sh/kernel/Makefile: Remove pci-bigsur.o. -+ -+2001-05-14 Jeremy Siegel <jsiegel@mvista.com> -+ -+ * include/asm-sh/machvec.h: Bug fix. Don't overwrite the -+ definition of MACH_SE. -+ -+2001-05-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Remove support of 7750 Overdrive. -+ -+ * include/asm-sh/io_od.h: Removed. -+ * arch/sh/overdrive/io_od.h: Moved from include/asm-sh, -+ as a reference. -+ -+ * include/asm-sh/pci.h: Removed the case of -+ defined(CONFIG_SH_7750_OVERDRIVE). -+ * include/asm-sh/io.h: Likewise. -+ -+ * arch/sh/Makefile (SUBDIRS): Don't add arch/sh/overdrive. -+ (archclean): Don't go to overdrive subdirs, but stboards. -+ -+ * arch/sh/config.in (CONFIG_SH_7750_OVERDRIVE): Deleted. -+ -+2001-05-09 Ian da Silva <idasilva@mvista.com> -+ -+ Solution Engine 7751 support. -+ -+ * include/asm-sh/hitachi_se.h, include/asm-sh/io.h, -+ include/asm-sh/machvec.h, include/asm-sh/pci.h: -+ Add the case of CONFIG_SH_7751_SOLUTION_ENGINE. -+ -+ * arch/sh/kernel/setup_se.c (init_se_IRQ): Handle the case of -+ CONFIG_SH_7751_SOLUTION_ENGINE differentry. -+ -+ * arch/sh/kernel/pci-7751se.c: New file. -+ -+ * arch/sh/kernel/io_se.c: Include <asm/pci.h> and <asm/pci-sh7751.h>. -+ (TOP_PCIC, PCIIOBR, PCIMBR, PCI_IO_AREA, PCI_MEM_AREA) New macros. -+ (port2adr): Fixed. Don't include 0x2000 as MRSHPC address. -+ (se_inb, se_inb_p, se_inw, se_inl, se_outb, se_outb_p, se_outw, -+ se_outl): Handle the case of PXSEG and CONFIG_PCI. -+ (se_readb, se_readw, se_readl, se_writeb, se_writew, se_writel): -+ Handle the case of CONFIG_PCI. -+ -+ * arch/sh/kernel/Makefile: Define objects for -+ CONFIG_SH_7751_SOLUTION_ENGINE. -+ -+ * arch/sh/config.in (CONFIG_SH_7751_SOLUTION_ENGINE): Added. -+ -+2001-05-09 Dustin McIntire <dustin@sensoria.com> -+ -+ SH7751 support and New target BIGSUR. -+ -+ * include/asm-sh/bigsur.h, include/asm-sh/io_bigsur.h, -+ include/asm-sh/pci-sh7751.h, include/asm-sh/serial-bigsur.h: New -+ files. -+ * include/asm-sh/serial.h: Added inclusion of serial-bigsur.h. -+ * include/asm-sh/processor.h: Add comment for SH7751. -+ * include/asm-sh/pci.h (PCIBIOS_MIN_IO, PCIBIOS_MIN_MEM): Handle -+ cases of ST40STB1, SH7751 and BIGSUR. -+ (pcibios_set_master): Comment it out. -+ * include/asm-sh/machvec.h: Added mv_hw_bigsur bit. -+ (MACH_BIGSUR): Added. -+ -+ * include/asm-sh/irq.h: Added CONFIG_CPU_SUBTYPE_SH7751 and -+ CONFIG_SH_BIGSUR. -+ -+ * include/asm-sh/io.h: Added CONFIG_SH_BIGSUR. -+ * include/asm-sh/bugs.h (check_bugs): Print SH7750/SH7750. (was: -+ only SH7750). -+ -+ * drivers/pcmcia/hd64465_ss.c (hs_set_io_map): Added last argument 0, -+ for the call of hd64465_port_map. -+ -+ * drivers/net/smc9194.h (chip_ids): Added SMC91C100FD. -+ * drivers/net/smc9194.c (smc_probe): The semantics IRQ2==IRQ9 is -+ only valid in PC (__i386__). -+ -+ * drivers/char/sh-sci.h (CONFIG_CPU_SUBTYPE_SH7751): Added. -+ -+ * arch/sh/mm/cache.c (detect_cpu_and_cache_system): SH7751 is -+ CPU_SH7750. -+ -+ * arch/sh/kernel/sh_ksyms.c (__lshrdi3, flush_cache_range, -+ flush_dcache_page): Added. -+ -+ * arch/sh/kernel/led_bigsur.c, arch/sh/kernel/mach_bigsur.c, -+ arch/sh/kernel/pci-bigsur.c, arch/sh/kernel/pci-irq.c, -+ arch/sh/kernel/pci-sh7751.c, arch/sh/kernel/setup_bigsur.c: -+ New files. -+ -+ * arch/sh/kernel/io_hd64465.c (hd64465_isa_port2addr): Renamed -+ from POT2ADDR. -+ (PORT2ADDR): Define as macro. -+ -+ * include/asm-sh/io_bigsur.c: New file. -+ * arch/sh/kernel/entry.S (exception_handling_table): Added entries -+ for CONFIG_CPU_SUBTYPE_SH7751. -+ -+ * arch/sh/kernel/pci-dma.c: New file. Copied from stboards/pcidma.c. -+ * arch/sh/kernel/pci-sh.c: Removed. -+ -+ * arch/sh/kernel/Makefile (machine-specific-objs): Added for -+ CONFIG_SH_BIGSUR. -+ (obj-$(CONFIG_SH_BIGSUR)): Added. -+ (obj-$(CONFIG_CPU_SUBTYPE_SH7751)): Added. -+ (obj-$(CONFIG_SH_BIGSUR)): Added. -+ -+ * arch/sh/config.in (CONFIG_SH_BIGSUR): New target. -+ (CONFIG_CPU_SUBTYPE_SH7751): New subtype. -+ -+ * arch/sh/Makefile (CFLAGS for CONFIG_DEBUG_KERNEL_WITH_GDB_STUB): -+ Added as comment. -+ -+2001-05-07 Masahiro Abe <m-abe@aandd.co.jp> -+ -+ * include/asm-sh/processor.h (struct sh_fpu_hard_struct): Rename -+ xd_regs to xfp_regs, and change type from long long to long. -+ (struct sh_fpu_soft_struct): Likewise. -+ * include/asm-sh/user.h (struct user_fpu_struct): Likewise. -+ -+2001-05-04 YAEGASHI Takeshi <t@keshi.org> -+ -+ * drivers/dreamcast/maple/maple.h: Fixed typo. -+ * include/asm-sh/bitops.h (ffs, hweightN): Added definitions. -+ * drivers/char/sh-sci.c (sci_init_drivers): Added driver names used -+ with devfs. -+ -+2001-04-30 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.4. -+ -+2001-04-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.4-pre8. -+ -+2001-04-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.4-pre7. -+ -+2001-04-24 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * config.in: Added CONFIG_RTC. -+ * arch/sh/rtc.c: Moved some definitions to include/asm-sh/rtc.h. -+ * include/asm-sh/rtc.h: Likewise -+ * include/asm-sh/mc146818rtc.h (RTC_PORT, RTC_IRQ, CMOS_READ, -+ CMOS_WRITE, __CMOS_READ, __CMOS_WRITE): Defined. -+ * arch/sh/sh_ksyms.c (__movstr): EXPORT-ed. -+ (__ashrdi3, __ashldi3): EXPORT-ed even if SH-3. -+ -+2001-04-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * lib/rwsem.c: Remove inclusion of linux/bitops.h. -+ -+ * Updated to 2.4.4-pre6. -+ -+2001-04-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/config.in (CONFIG_RWSEM_GENERIC): Removed. -+ * include/linux/rwsem.h (down_write): Conflict merged. -+ * include/asm-sh/semaphore.h: Only valid for __KERNEL__. -+ -+ * Updated to 2.4.4-pre5. -+ -+2001-04-20 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/config.in: define CONFIG_RWSEM_GENERIC. -+ * include/asm-sh/bitops.h (__set_bit, __clear_bit): defined. -+ * include/asm-sh/semaphore.h: Follow i386 implementation. -+ * include/linux/rwsem.h: small fix. -+ * lib/rwsem.c: Added include linux/bitops.h. -+ -+2001-04-19 YAEGASHI Takeshi <t@keshi.org> -+ -+ * drivers/dreamcast/maple/maple.h: Added copyright notice. -+ -+ * arch/sh/kernel/setup_dc.c: Added prototype for gapspci_init(). -+ (pci_alloc_consistent): Fixed printk format string. -+ -+2001-04-18 YAEGASHI Takeshi <t@keshi.org> -+ -+ * arch/sh/kernel/time.c, drivers/net/8139too.c: MACH_DREAMCAST -+ should be used to keep the generic kernel working. -+ -+ * drivers/net/8139too.c (rtl8139_start_xmit): Force to use the -+ dedicated SRAM buffer for bus-mastering. -+ -+ * include/asm-sh/mc146818rtc.h: New file: Added to satisfy the -+ include from drivers/char/rtc.c. -+ -+2001-04-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.4-pre4. -+ -+2001-04-14 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.4-pre3. -+ -+2001-04-12 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.4-pre2. -+ -+2001-04-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.4-pre1. -+ -+2001-04-01 YAEGASHI Takeshi <t@keshi.org> -+ -+ Added SEGA Dreamcast support with the code released from the FFII -+ (http://www.ffii.org/). -+ -+ * arch/sh/config.in: Added Dreamcast Configuration. -+ * arch/sh/Makefile: Added build rules of Dreamcast drivers. -+ * arch/sh/kernel/Makefile: Added Dreamcast platform support. -+ * arch/sh/kernel/io_dc.c: New file: Likewise. -+ * arch/sh/kernel/mach_dc.c: New file: Likewise. -+ * arch/sh/setup_dc.c: New file: Likewise -+ * include/asm-sh/io_dc.h: New file: Likewise. -+ * arch/sh/kernel/time.c (time_init): Added Dreamcast RTC override. -+ * drivers/video/dcfb.c: New file: Dreamcast framebuffer driver. -+ * drivers/pci/pci.ids: Updated vendor/device ids for SEGA Broadband -+ Adapter. -+ * drivers/net/8139too.c(board_t, board_info, rtl8139_pci_tbl, -+ rtl8139_rx_config, RX_BUF_LEN_IDX): Added SEGA Broadband Adapter -+ support. -+ * drivers/dreamcast/Config.in: New file: Dreamcast driver support. -+ * drivers/dreamcast/Makefile: New file: Likewise. -+ * drivers/dreamcast/maple/Config.in: New file: MAPLE Bus driver -+ support. -+ * drivers/dreamcast/maple/Makefile: New file: Likewise. -+ * drivers/dreamcast/maple/maple.[ch]: New files: MAPLE Bus core driver. -+ * drivers/dreamcast/maple/dckbd.c: New file: Dreamcast Keyboard driver. -+ * drivers/dreamcast/maple/dcmouse.c: New file: Dreamcast Mouse driver. -+ * drivers/dreamcast/maple/dcpad.c: New file: Dreamcast Controller. -+ driver -+ * include/linux/input.h (BUS_MAPLE): Added new bus type. -+ * drivers/char/Makefile (KEYBD): Removed older Dreamcast keyboard -+ support. -+ * include/asm-sh/keyboard.h (dreamcast_kbd_init_hw): likewise. -+ -+ * arsh/sh/kernel/sh_ksyms.c: Include asm/pgalloc.h for -+ flush_tlb_page prototype. -+ -+2001-03-31 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow the change in 2.4.3. -+ * include/asm-sh/pgtable.h (__handle_bad_pmd, -+ __handle_bad_pmd_kernel): Removed. -+ -+ * arch/sh/kernel/ptrace.c (sys_ptrace): Follow the change of x86 -+ version. -+ * arch/sh/mm/extable.c (search_exception_table): Likewise. -+ * arch/sh/mm/init.c (do_check_pgt_cache): Likewise. -+ * arch/sh/mm/init.c (get_pte_slow, get_pte_kernel_slow, -+ __handle_bad_pmd_kernel, __handle_bad_pmd, get_bad_pte_table, -+ empty_bad_pte_table): Removed. -+ * include/asm-sh/pgtable-2level.h (pgd_clear): Be Function. -+ * include/asm-sh/pgalloc-2level.h: Removed. -+ * arch/sh/mm/ioremap.c (remap_area_pmd): Use pte_alloc with init_mm -+ (was pte_alloc_kernel). -+ (remap_area_pte): Add checks to BUG. -+ Check address!=0 for the condition of do-while. -+ (remap_area_pmd): Add check to BUG. -+ Use pte_alloc with init_mm (was pte_alloc_kernel). -+ Check address!=0 for the condition of do-while. -+ (remap_area_pages): Use pgd_offset (was pgd_offset_k). -+ Add check to BUG, spin_lock/unlock. -+ Use pmd_alloc of init_mm instead of pmd_alloc_kernel. -+ (__ioremap): Change the compare to 0x100000 to '<' (was: '<='). -+ Return error. -+ -+ Updated to 2.4.3. -+ * arch/sh/mm/fault.c (do_page_fault): Use up_read/down_read -+ (was: up/down). -+ * arch/sh/kernel/sys_sh.c (do_mmap2): Use up_write/down_write -+ (was: up/down). -+ * arch/sh/kernel/sh_ksyms.c (flush_tlb_page): EXPORT-ed. -+ -+2001-03-09 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/sigcontext.h (struct sigcontext): Make it -+ compatible with glibc-2.2.2. -+ -+2001-03-08 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * drivers/ide/ide-geometry.c: Added '#ifdef __i386__' -+ for i386 specific include file. -+ -+2001-03-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (call_dpf): Cosmetic changes. -+ Use "tst r0, r0" instead of "tst #0xff, r0". -+ (ret_with_reschedule): Likewise. -+ -+2001-03-04 Philipp Rumpf <prumpf@tux.org> -+ -+ * arch/sh/kernel/process.c (kernel_thread): Remove bogus comment. -+ Bug fix. Use "tst r0, r0" instead of "tst #0xff, r0". -+ -+2001-02-24 Bryan Rittmeyer <bryan@ixiacom.com> -+ -+ * arch/sh/kernel/sh_ksyms.c (strncat): Added. -+ -+2001-02-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/rtc.c (RTC_BIT_INVERTED): New macro. -+ (sh_rtc_gettimeofday): Use RTC_BIT_INVERTED. -+ (sh_rtc_settimeofday): Work around implemented. -+ -+ Updated to 2.4.2. -+ * include/asm-sh/termios.h (N_IRDA): Incorporate changes of 2.4.2. -+ * include/asm-sh/socket.h, arch/sh/kernel/irq.c, -+ arch/sh/kernel/process.c, arch/sh/kernel/setup.c: Likewise. -+ -+2001-02-14 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/setup_cqreek.c (mv_ioremap, mv_iounmap, -+ mv_rtc_gettimeofday, mv_rtc_settimeofday): Define. -+ -+2001-02-07 Stuart Menefy <stuart.menefy@st.com> -+ -+ Added support for ST40STB1 -+ * arch/sh/kernel/pci_st40.[ch]: New files -+ * arch/sh/kernel/irq_intc2.c: New file -+ * arch/sh/kernel/Makefile: Added build of ST40 files -+ * arch/sh/kernel/irq_ipr.c: Added support for second SCIF -+ * arch/sh/kernel/time.c: Added support for FRQCR changes -+ * arch/sh/mm/cache.c: Added ST40 to list of chip types -+ * arch/sh/config.in: Added ST40 CPU and ST boards -+ * arch/sh/overdrive/Makefile: Renamed config option -+ * include/asm-sh/bugs.h: Added ST40STB1 to list of chips -+ * include/asm-sh/pci.h: Added DMA support -+ * include/asm-sh/processor.h: Added ST40STB1 to list of chips -+ -+ Added support for ST40STB1 HARP and Overdrive platforms -+ * arch/sh/Makefile: Build in stboards directory if needed -+ * include/asm-sh/io.h: Added HARP and Overdrive IO -+ * arch/sh/stboards/{harp.h,irq.c,led.c,mach.c,pcidma.c,setup.c}, -+ arch/sh/stboards/Makefile: New files -+ -+ * arch/sh/kernel/io_hd64465.c, include/asm-sh/io_hd64465.h: Added -+ logical shift capability to address mapping code. -+ -+ * arch/sh/kernel/setup_hd64465.c, include/asm-sh/serial.h: Fixed -+ support for 16550 serial port. -+ -+ * arch/sh/kernel/rtc.c: Fix 1/128 second support. -+ -+ * arch/sh/kernel/setup.c: Added some global variables needed for -+ frame buffer support. -+ -+ * drivers/char/sh-sci.[ch]: Added ST40STB1 support, and claim -+ interrupt on open, allowing SCI(F) to be shared by drivers. -+ -+ * drivers/net/tulip/tulip_core.c: Added SH specific defines -+ -+ * drivers/pci/pci.ids: Added STE10/100 device ID -+ -+ * include/asm-sh/irq.h: Added ST40STB1 defines, and reworked -+ defintion of NR_IRQS to make easier to manage -+ -+ * include/asm-sh/hd64461.h, include/asm-sh/hd64465.h: Use new -+ irq.h defines for peripherial chip interrupts -+ -+2001-02-02 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.1. -+ * arch/sh/kernel/traps.c: Include linux/config.h. -+ -+2001-01-31 Philipp Rumpf <prumpf@tux.org> -+ -+ * arch/sh/kernel/setup_ec3104.c (get_pending_interrupts): -+ New function. -+ -+ * drivers/char/ec3104_keyb.c (ec3104_keyb_receive): Removed. -+ (e5_checksum, e5_wait_for_cts, e5_send_byte, e5_send_packet, -+ e5_receive): New functions. -+ (struct e5_struct): Renamed from ec3104_keyb_struct. -+ -+ * drivers/video/Config.in (CONFIG_E1355_REG_BASE, -+ CONFIG_E1355_FB_BASE): New config variables. -+ * drivers/video/epson1355fb.c (e1355fb_init): Don't call -+ disable_hw_cursor from here. -+ (AERO_HACKS): Undefined. -+ -+2001-01-30 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.1-pre12. -+ -+2001-01-29 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.1-pre11. -+ * arch/sh/kernel/signal.c: Remove the decl. of sys_wait4. -+ -+2001-01-27 Yutaro Ebihara <ebiharaml@si-linux.com> -+ -+ * arch/sh/config.in (CONFIG_CF_ENABLER): Valid when -+ CONFIG_SH_CAT68701. -+ -+2001-01-26 Yutaro Ebihara <ebiharaml@si-linux.com> -+ -+ Add support for CAT68701 board computer. -+ * arch/sh/config.in (CONFIG_SH_CAT68701): Added. -+ * arch/sh/kernel/Makefile (obj-$(CONFIG_SH_CAT68701)): Added. -+ * arch/sh/kernel/io_cat68701.c: New file. -+ * arch/sh/kernel/mach_cat68701.c: New file. -+ * include/asm-sh/io.h (CONFIG_SH_CAT68701): Include -+ asm/io_cat68701.h. -+ * inlude/asm/io_cat68701.h: New file. -+ * include/asm-sh/irq.h (cat68701_irq_demux): New function. -+ -+2001-01-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.1-pre10. -+ -+2001-01-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/signal.c (setup_frame, setup_rt_frame): -+ Use flush_cache_sigtramp. -+ -+ * arch/sh/mm/cache.c (flush_cache_sigtramp): Implemented. -+ -+ * include/asm-sh/pgtable.h (_PAGE_SHARED): Always _PAGE_U0_SHARED. -+ (was conditionally _PAGE_HW_SHARED on SH-3). With _PAGE_HW_SHARED, -+ all processes share the page, while proper semantics is "some -+ processes share the page". -+ (flush_cache_sigtramp): New function. -+ -+ * Updated to 2.4.1-pre9. -+ -+ * arch/sh/kernel/sh_ksyms.c (__udivsi3, __sdivsi3): Added. -+ -+2001-01-13 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.1-pre3. -+ -+2001-01-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/sh_ksyms.c (__udivsi3_i4, __sdivsi3_i4): Removed. -+ -+2001-01-10 Bryan Rittmeyer <bryan@ixiacom.com> -+ -+ * arch/sh/kernel/entry.S: Fixed typo for SR and added "OFF_" for SP. -+ -+2001-01-10 Denis Dowling <dpd@preston.net> -+ -+ * arch/sh/kernel/entry.S: Change RX-->OFF_RX. -+ -+2001-01-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/net/stnic.c (stnic_probe): Set the MAC address from BIOS. -+ -+ * include/asm-sh/sh_bios.h (sh_bios_shutdown): New function. -+ * arch/sh/kernel/sh_bios.c (BIOS_CALL_ETH_NODE_ADDR): Added. -+ (sh_bios_get_node_addr): New function. -+ -+2001-01-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.0. -+ * arch/sh/kernel/rtc.c: Remove the inclusion of <linux/config.h>. -+ -+2001-01-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/process.c (machine_halt, machine_restart): -+ Call sh_bios_shutdown. -+ * include/asm-sh/sh_bios.h (sh_bios_shutdown): New function. -+ * arch/sh/kernel/sh_bios.c (sh_bios_shutdown): New function. -+ (BIOS_CALL_SHUTDOWN): Added. -+ -+ * arch/sh/kernel/sh_bios.c (CONFIG_SH_STANDARD_BIOS): No conditional -+ compilation, since it's done in Makefile. -+ (linux/config.h): Not included. -+ -+ * drivers/net/stnic.c (STNIC_DELAY): We need more delay for -+ SolutionEngine 7709A. -+ -+ * arch/sh/lib/delay.c (__const_udelay): Fixed. Use DMULU. -+ -+2001-01-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Updated to 2.4.0-prerelease. -+ * include/asm-sh/{bugs.h,delay.h}: Follow 2.4.0-prerelease. -+ * arch/sh/lib/delay.c: Ditto. -+ -+2001-01-03 Mitch Davis <mdavis@pocketpenguins.com> -+ -+ * arch/sh/config.in, arch/sh/kernel/entry.S, -+ arch/sh/kernel/traps.c: Get the setting of the VBR from -+ the previous value (set by bootloader) instead of explicitly -+ hard-coding it. -+ * arch/sh/config.in: Pull in the Linux Kernel Input (LKI) -+ device configuration. -+ * arch/sh/kernel/sh_ksyms.c: Export some symbols we need. -+ * include/asm-sh/segment.h: Some old header files expect this -+ file to exist. -+ * drivers/char/Makefile: Added an entry for DMIDA keyboard -+ support. -+ * kernel-official/drivers/input/keybdev.c: Added an entry -+ for SuperH LKI support. -+ * drivers/char/sh-sci.h: The SCI port on the DMIDA is used -+ to drive an SPI bus in synchronous mode. So it's not available -+ as a general-purpose async serial port. Disable it. -+ -+2001-01-03 Mitch Davis <mdavis@pocketpenguins.com> -+ -+ * include/asm-sh/hd64465_gpio.h, -+ arch/sh/kernel/hd64465_gpio.c, -+ arch/sh/kernel/Makefile: Added support for the 5 -+ 8-bit GPIO ports on the HD64465. -+ * arch/sh/kernel/io_hd64465.c: Added some debugging DIPRINTKs. -+ * include/asm-sh/hd64465.h: Added register definitions -+ for the HD64465's onboard PS/2 mouse/keyboard and USB -+ controllers. -+ -+Local Variables: -+mode: change-log -+left-margin: 8 -+fill-column: 76 -+version-control: never -+End: -diff -ruN linux-2.6.17-vanilla/ChangeLog-2002 linux-2.6.17/ChangeLog-2002 ---- linux-2.6.17-vanilla/ChangeLog-2002 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/ChangeLog-2002 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,1750 @@ -+2002-12-21 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile: Fix-up TOPDIR so it again references /bin/pwd -+ instead of the non-existant CURDIR .. now we can build a -+ zImage again. -+ -+ * arch/sh/kernel/setup.c (get_cpu_subtype): Added. -+ (show_cpuinfo): General cleanup/rewrite. Get rid of the ifdef mess. -+ * arch/sh/kernel/time.c: Add profiling definitions. -+ -+ * arch/sh/mm/cache-sh4.c (flush_icache_range): Drop the usage of -+ __flush_wback_region() in favor of __flush_dcache_all() -- suboptimal, -+ but does the Right Thing(tm). -+ -+ * drivers/net/Kconfig: Add 8139TOO_DREAMCAST. Seems this got -+ lost along the merges and caused pci_alloc_consistent() to fail. -+ -+ * include/asm-sh/bugs.h (check_bugs): Lots of cleanup, do -+ the utsname update per-family, and leave the subtype notification -+ to get_cpu_subtype(). -+ -+2002-12-19 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile: Bump up the inline-limit to 5000. -+ -+2002-12-16 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/boards/saturn/Makefile: Add smp.c. -+ * arch/sh/boards/saturn/smp.c: New file. -+ * include/asm-sh/saturn/smpc.h: New file. -+ -+2002-12-15 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/vmlinux.lds.S: Add __per_cpu_{start,end}. -+ -+ * arch/sh/kernel/smp.c: New file. -+ (smp_cpus_done, smp_send_reschedule, stop_this_cpu, smp_send_stop, -+ smp_call_function, __smp_call_function): Added. -+ * arch/sh/kernel/setup.c: Add platform_setup() and get_system_type() -+ references .. fixes compile-time warnings. -+ -+ * include/asm-sh/bitops.h (find_first_bit, find_next_bit): Added. -+ * include/asm-sh/smp.h (cpu_online, cpu_possible, num_online_cpus): -+ Added. -+ * include/asm-sh/spinlock.h: Change rwlock/spinlock lock type to -+ long. Add spinlock/rwlock debugging. -+ (spin_lock_init): Fixed up invalid lock reference. -+ (spin_unlock_wait): Use spin_is_locked(). -+ (_raw_spin_trylock): Added. -+ (rwlock_init, rwlock_is_locked): Added. -+ Add a SMP_MSG_RESCHEDULE definition. -+ -+2002-12-14 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add CONFIG_SMP and NR_CPUS definitions. -+ -+ * arch/sh/kernel/Makefile: Add smp.c if CONFIG_SMP is set. -+ * arch/sh/kernel/irq.c (probe_irq_on): Get rid of synchronize_irq() -+ calls, since they weren't doing anything anyways .. use barrier() -+ for our delay instead. -+ * arch/sh/kernel/time.c: Clean up profiling definitions. -+ -+ * include/asm-sh/processor.h: Track cpu_data for each processor. -+ -+ * include/asm-sh/smp.h: Make it do something. -+ * include/asm-sh/spinlock.h: Ditto. -+ * include/asm-sh/system.h: Clean up some left-over cruft that we -+ don't have any use for anymore. -+ -+2002-12-13 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/mm/init.c (enable_mmu, disable_mmu): Moved .. -+ * include/asm-sh/mmu_context.h: .. here. Make it a nop for non-SH3/4. -+ -+2002-12-12 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/mm/init.c (paging_init): Largely rewritten to support -+ CONFIG_MMU being set or not while still taking discontig into -+ consideration. -- Allows SH-3/4 to boot with the MMU turned off. -+ (mem_init): Cleaned up remaining MAX_LOW_PFN/START_PFN references. -+ (enable_mmu): Added. -+ (disable_mmu): Added. -+ (pgd_alloc, pgd_free, pte_alloc_one_kernel, pte_alloc_one): Moved .. -+ -+ * arch/sh/kernel/time.c (sh_do_profile): New function. -+ -+ * include/asm-sh/pgalloc.h: .. here. -+ * include/asm-sh/page.h (MAP_NR): Re-added. This was removed about -+ 2 years ago .. but we actually have a real use for it now. -+ * include/asm-sh/hw-irq.h (sh_do_profile): Removed. -+ -+2002-12-04 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add CPU_SH2/CPU_SUBTYPE_SH7604. Don't set MMU if -+ CPU_SH2 is set. Default SH_WRITETHROUGH on for SH-2. -+ * arch/sh/Makefile: Add SH-2 CFLAGS/AFLAGS. -+ * arch/sh/vmlinux.lds.S: Fix SH-2 alignment. -+ -+ * arch/sh/kernel/cpu/Makefile: Add sh2/ -+ * arch/sh/kernel/cpu/sh2/Makefile: New file. -+ -+ * arch/sh/kernel/setup.c (show_cpuinfo): Get rid of SH-3/4 -+ distinction. Print everything out dynamically .. look at the dcache -+ flags for combined caches (in the case of SH-2 and SH-3). -+ -+ * arch/sh/mm/Makefile: Add SH-2 cache file. -+ * arch/sh/mm/cache-sh3.c (detect_cpu_and_cache_system): Default cache -+ flags to CACHE_COMBINED. -+ * arch/sh/mm/cache-sh2.c: New file. -+ * arch/sh/mm/init.c (sh_cache_init): Use __get_oc_addr() to get -+ the OC address (this is CPU specific). -+ -+ * include/asm-sh/bugs.h (check_bugs): Add a CPU_SH7604 case. -+ * include/asm-sh/cache.h: Add SH-2 definitions. Add a flags variable -+ to the cache_info struct. Also add a __get_oc_addr() fallback. -+ * include/asm-sh/processor.h: Add CPU_SH7604 definition. -+ -+2002-12-01 Paul Mundt <lethal@linux-sh.org> -+ -+ * TODO: More removals .. write-through caching, probing, -+ config.in/Makefile cleanup, etc. -+ -+ * arch/sh/Kconfig: Clean up CPU_LITTLE_ENDIAN definition (which was -+ blatantly ripped off from MIPS, but neglected to change the MIPS -+ reference). Clean up SH_WDT definition, we're not just for SH-3/4 -+ anymore.. And finally, added SH_WRITETHROUGH and SH_OCRAM definitions. -+ -+ * arch/sh/kernel/setup.c (show_cpuinfo): Calculate I/D cache sizes -+ dynamically. -+ * arch/sh/kernel/sh_ksyms.c: dump_fpu() now takes a pt_regs arg. -+ -+ * arch/sh/mm/cache-sh3.c: Moved out cache definitions to asm/cache.h -+ Nuked cache_wback_all() and sh_cache_init, reworked much of -+ detect_cpu_and_cache_system(), as well as various other cleanups. -+ * arch/sh/mm/cache-sh4.c: Folded detect_cpu() back into -+ detect_cpu_and_cache_system() and did more rework. Added a proper -+ flush_icache_range() and made flush_cache_sigtramp() wrap by -+ blowing out a line. Removed sh_cache_init(). -+ * arch/sh/mm/init.c (sh_cache_init): Added. -+ -+ * include/asm-sh/cache.h: Move SH-3/4 cache definitions here. Also -+ add __cacheline_aligned stuff and a generic cache_info structure -+ for I/D cache representation per-CPU. -+ * include/asm-sh/cacheflush.h: Comment on write-through. -+ * include/asm-sh/mman.h: Added MAP_POPULATE and MAP_NONBLOCK. -+ * include/asm-sh/mmu_context.h: Drag in asm/uaccess.h.. -+ * include/asm-sh/processor.h: Add i/d-cache entries to sh_cpuinfo. -+ -+2002-11-16 Paul Mundt <lethal@linux-sh.org> -+ -+ * TODO: Blow another one off the list. (SH-4 run-time probing). -+ -+ * arch/sh/kernel/time.c: Rip out the PVR defines .. -+ * include/asm-sh/processor.h: Move them here, instead. Also add -+ definitions for 7750S and 7750R. -+ -+ * arch/sh/mm/cache-sh4.c: detect_cpu_and_cache_system() gutted. -+ Replaced by detect_cpu(), which does version/revision probing -+ at run-time instead of at preprocessing time. Kill off remaining -+ ifdef abuse in flush_cache_4096() .. also add sanity checks for -+ 7751R. -+ -+2002-11-15 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/mm/cache-sh3.c, arch/sh/mm/cache-sh4.c: If the OC is in RAM -+ mode, we only have half the entries to flush.. so tear down -+ CACHE_OC_NUM_ENTRIES accordingly. -+ -+2002-11-14 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/video/pvr2fb.c (pvr2fb_init): Move ID assignment down a bit, -+ so we don't inadvertently dereference NULL.. -+ -+2002-11-13 Paul Mundt <lethal@linux-sh.org> -+ -+ * AGAINST-2.5.44: Really remove it. -+ -+ * arch/sh/boards/se/7751/Makefile, arch/sh/boards/adx/Makefile, -+ arch/sh/boards/bigsur/Makefile, arch/sh/boards/cat68701/Makefile, -+ arch/sh/boards/cqreek/Makefile, arch/sh/boards/dmida/Makefile, -+ arch/sh/boards/ec3104/Makefile, arch/sh/boards/harp/Makefile, -+ arch/sh/boards/overdrive/Makefile, arch/sh/boards/sh2000/Makefile, -+ arch/sh/boards/unknown/Makefile, arch/sh/boards/hp6xx/hp620/Makefile, -+ arch/sh/boards/hp6xx/hp680/Makefile, -+ arch/sh/boards/hp6xx/hp690/Makefile: Kill off O_TARGET. -+ -+ * arch/sh/cchips/hd6446x/hd64461/Makefile, -+ arch/sh/cchips/hd6446x/hd64465/Makefile: Here too. -+ -+ * arch/sh/Kconfig: Support crypto. Add CONFIG_SWAP, CONFIG_MMU, and -+ CONFIG_VIPT definitions. -+ -+ * mm/memory.c: Use CONFIG_VIVT for flush_cache_page() check. Could -+ probably use a CONFIG_ARM check, but screw it. -+ -+2002-11-05 M. R. Brown <mrbrown@linux-sh.org> -+ -+ Branch merge of Linux-SH HEAD (2.5.45) -+ -+ * AGAINST-2.5.45: New file. -+ * AGAINST-2.5.44: Remove. -+ -+ * arch/sh/Kconfig, drivers/cdrom/Kconfig, drivers/char/Kconfig, -+ drivers/input/joystick/Kconfig, drivers/input/keyboard/Kconfig, -+ drivers/net/Kconfig: Add files. -+ * arch/sh/Config.help, arch/sh/config.in, drivers/cdrom/Config.help, -+ drivers/cdrom/Config.in, drivers/char/Config.help, -+ drivers/input/joystick/Config.help, drivers/input/joystick/Config.in, -+ drivers/maple/Config.in, drivers/mtd/Config.help, -+ drivers/mtd/maps/Config.help, drivers/mtd/maps/Config.in, -+ drivers/net/Config.help, drivers/net/Config.in: Remove files. -+ * Makefile, arch/sh/kernel/cf-enabler.c, arch/sh/mm/cache-sh4.c, -+ arch/sh/mm/fault.c, drivers/block/rd.c, drivers/char/Makefile, -+ drivers/char/maple_keyb.c, drivers/char/shwdt.c, -+ drivers/net/8139too.c, drivers/pci/pci.ids, fs/mpage.c, -+ include/asm-sh/uaccess.h, init/do_mounts.c, kernel/timer.c: Modified -+ files. -+ -+2002-11-05 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/irq.c (do_IRQ): Add kstat_cpu() hooks. -+ -+ * arch/sh/kernel/ptrace.c, arch/sh/kernel/process.c, -+ include/asm-sh/process.h: Death to PTRACE_O_TRACESYSGOOD as well as -+ PTRACE_SETOPTIONS. -+ -+ * include/asm-sh/processor.h (copy_segments, release_segments): -+ Removed. -+ -+ Sync with 2.5.46 non-Kconfig updates. -+ -+2002-11-04 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/cpufreq.c (sh_cpufreq_setstate): Do a bit of rework -+ here so we use the read/write routines provided by the watchdog.h. -+ -+ * drivers/char/shwdt.c: WDT update. Merge in some bits from mainline, -+ as well as some additional cleanup. SH-2 support. Move all of the -+ read/write garbage out.. -+ -+ * include/asm-sh/watchdog.h: Add support for the SH-2. And dump the -+ read/write stuff here.. then inline it. -+ -+ * arch/sh/boards/bigsur/irq.c, arch/sh/boards/cqreek/irq.c, -+ arch/sh/boards/dreamcast/irq.c, arch/sh/boards/harp/irq.c, -+ arch/sh/boards/overdrive/irq.c, arch/sh/boards/overdrive/led.c, -+ arch/sh/kernel/irq_intc2.c, arch/sh/kernel/irq_ipr.c, -+ arch/sh/kernel/irq_maskreg.c, arch/sh/kernel/pci-sh7751.c, -+ arch/sh/mm/cache-sh3.c, arch/sh/mm/cache-sh4.c, -+ arch/sh/mm/fault.c, drivers/cdrom/gdrom.c, -+ drivers/char/sh-sci.c, drivers/maple/maple.c, -+ drivers/pcmcia/hd64465_ss.c, include/asm-sh/atomic.h, -+ arch/sh/cchips/hd6446x/hd64461/setup.c, -+ arch/sh/cchips/hd6446x/hd64465/gpio.c, -+ arch/sh/cchips/hd6446x/hd64465/setup.c, -+ include/asm-sh/bitops.h: -+ -+ Global save_and_cli()/restore_flags() death, make everyone use -+ local_irq_save()/local_irq_restore(). -+ -+ * include/asm-sh/system.h: Kill the rest of the save_and_cli badness -+ here. -+ -+2002-11-02 M. R. Brown <mrbrown@linux-sh.org> -+ -+ * arch/sh/kernel/cpufreq.c (sh_cpufreq_update_clocks): Update -+ loops_per_jiffy for the current CPU. -+ (sh_cpufreq_setstate): Add cpu parameter. Call -+ cpufreq_notify_transition() before and after the frequency changes. -+ (sh_cpufreq_setpolicy): Pass cpu to sh_cpufreq_setstate(). -+ (sh_cpufreq_init): Oops, we need kHz, not Hz. -+ -+ * drivers/char/sh-sci.c (sci_notifier): New function. Attempt to -+ update baud rate when our peripheral clock changes. -+ (sci_init_drivers): Add notifier. -+ -+2002-11-02 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/time.c: Fix up some of the frequency table -+ declarations, move the divisor/values accessors into the same -+ macro. -+ * arch/sh/kernel/cpufreq.c (sh_cpufreq_setstate): Clean up some -+ watchdog definitions. -+ * drivers/char/shwdt.c: Move some of the watchdog definitions -+ out of the way. -+ -+ * include/asm-sh/watchdog.h: New file. -+ -+2002-11-01 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/cpufreq.c: New file. -+ * arch/sh/kernel/time.c: Countless hacks for cpufreq. -+ -+ * include/asm-sh/freq.h: New file. -+ -+ -+2002-11-01 M. R. Brown <mrbrown@linux-sh.org> -+ -+ * drivers/cdrom/Kconfig, drivers/char/Kconfig, -+ drivers/input/joystick/Kconfig, drivers/input/keyboard/Kconfig, -+ drivers/net/Kconfig: Add from stock 2.5.45. -+ * drivers/cdrom/Config.help, drivers/char/Config.help, -+ drivers/input/joystick/Config.help: Remove. -+ -+ Linux 2.5.45. -+ -+ * AGAINST-2.5.45: New file. -+ * AGAINST-2.5.44: Remove. -+ -+ * arch/sh/Kconfig: New file. -+ * arch/sh/Config.help, drivers/cdrom/Config.help, -+ drivers/cdrom/Config.in, drivers/char/Config.help, -+ drivers/input/joystick/Config.help, drivers/input/joystick/Config.in, -+ drivers/maple/Config.in, drivers/mtd/maps/Config.help, -+ drivers/mtd/maps/Config.in, drivers/mtd/Config.help, -+ drivers/net/Config.help, drivers/net/Config.in, arch/sh/config.in: -+ Remove. -+ -+ * Makefile, arch/sh/mm/fault.c, drivers/char/Makefile, -+ drivers/net/8139too.c, fs/mpage.c, init/do_mounts.c, kernel/timer.c: -+ Merge changes from Linux 2.5.45. -+ -+ -+2002-10-28 M. R. Brown <mrbrown@linux-sh.org> -+ -+ Restructure PCI code / PCI auto implementation -+ -+ * TODO: Update. -+ -+ * arch/sh/config.in: Disable CONFIG_PCI_AUTO for the Dreamcast. -+ -+ * arch/sh/boards/dreamcast/pci.c: Implement board_pci_channels. -+ (pcibios_fixup, pcibios_fixup_irqs): New routines. -+ (pcibios_init): Remove. -+ * arch/sh/boards/dreamcast/setup.c (platform_setup): Add call to -+ gapspci_init() if CONFIG_PCI is enabled. -+ -+ * arch/sh/kernel/pci.c (pcibios_init): New routine. -+ * arch/sh/kernel/pci_auto.c (pciauto_setup_bars, -+ pciauto_prescan_setup_bridge, pciauto_postscan_setup_bridge, -+ pciauto_prescan_setup_cardbus_bridge, -+ pciauto_postscan_setup_cardbus_bridge, pciauto_bus_scan): Change -+ declaration to static. -+ -+ * include/asm-sh/pci.h: Add struct pci_channel; add prototypes for -+ board-specific fixup routines; add prototype for -+ pciauto_assign_resources(). -+ -+ * arch/sh/kernel/pcibios.c: Move... -+ * arch/sh/kernel/pci.c: ...here. -+ * arch/sh/kernel/pci_auto.c: New file. Import -+ arch/mips/kernel/pci_auto.c from linux-mips. -+ * arch/sh/kernel/Makefile: Rename rule for pcibios.o; add rule for -+ pci_auto.o. -+ -+2002-10-28 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/video/pvr2fb.c: Rather extensive rewrite for new API. -+ -+ * arch/sh/boards/se/770x/Makefile: Remove O_TARGET. -+ * arch/sh/boards/se/770x/irq.c: Drag in hitachi_se.h for -+ definitions. -+ -+ * drivers/char/sh-sci.c (sci_receive_chars): Fix handle_sysrq() -+ invokation. -+ * drivers/char/sysrq.c (send_sig_all): for_each_task renamed to -+ for_each_process. -+ -+2002-10-27 M. R. Brown <mrbrown@linux-sh.org> -+ -+ * arch/sh/vmlinux.lds.S: Major cleanups, more in-line with the i386 -+ port. -+ -+ * arch/sh/kernel/setup.c (setup_arch): Get rid of hack console init. -+ The full hack is scheduled to be removed at a later date. -+ -+ * drivers/video/pvr2fb.c: Comment out unused structure definitions so -+ it builds. -+ -+ * arch/sh/Makefile: Make boards build properly. -+ -+ * arch/sh/boards/dreamcast/Makefile: 2.5-ify. -+ * arch/sh/boards/dreamcast/pci.c, arch/sh/boards/dreamcast/rtc.c, -+ arch/sh/boards/dreamcast/setup.c: Finish merging 2.5.44 changes from -+ HEAD. -+ -+ * arch/sh/kernel/Makefile: Remove O_TARGET. -+ * arch/sh/kernel/time.c: Fix rtc_{get,set}_time() initializations. -+ (time_init): Make sure we call board_time_init() before calling any -+ routines that depend on it. Make sure we always get the cpu and bus -+ clock from the CPU. -+ * drivers/char/tty_io.c: Merge from 2.5.44. -+ -+2002-10-24 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/Makefile: Kill off the SE7751 LED code, use -+ SE generic code instead. -+ * arch/sh/kernel/led_se.c: Bring in SE7751 definitions if -+ CONFIG_SH_7751_SOLUTION_ENGINE is set. -+ * arch/sh/kernel/mach_7751se.c: Change heartbeat_7751se references -+ to heartbeat_se. -+ * arch/sh/kernel/led_7751se.c: Removed. -+ -+2002-10-23 Paul Mundt <lethal@linuxdc.org> -+ -+ * arch/sh/config.in: Added CONFIG_CMDLINE_BOOL/CONFIG_CMDLINE. -+ Can now manually hard-code an intial kernel command line. -+ -+ * arch/sh/kernel/setup.c (setup_arch): Append CONFIG_CMDLINE -+ to the kernel command line when CONFIG_CMDLINE_BOOL is set. -+ * arch/sh/kernel/rtc.c (sh_rtc_gettimeofday): Timespec pointer -+ changed name, reflect that in the rest of the code.. -+ -+ * include/asm-sh/ide.h (ide_init_default_hwifs): Fix the -+ ide_register_hw() call so it gets passed the correct number of -+ arguments. -+ -+2002-10-22 Paul Mundt <lethal@linuxdc.org> -+ -+ * include/asm-sh/bugs.h (check_bugs): Added a CPU_SH7751R check. -+ -+2002-10-21 Paul Mundt <lethal@linuxdc.org> -+ -+ * arch/sh/Makefile: Kill off LOADADDR cruft. -+ -+ * arch/sh/boot/compressed/Makefile: Fixup ZLDFLAGS so we use -+ vmlinux.lds.s. -+ -+ * arch/sh/kernel/entry.S: Rename sys_pread/pwrite to -+ sys_pread64/pwrite64. -+ * arch/sh/kernel/time.c: Define jiffies_64. Redefine TICK_SIZE to -+ use TICK_NSEC instead of tick_nsec. -+ -+ * drivers/block/rd.c (rd_blkdev_pagecache_IO): Make sure we -+ flush_dcache_page() on the associated page from the BIO vector -+ instead of the buffer head. -+ -+ * drivers/char/maple_keyb.c (dc_kbd_connect): Fix bustype -+ assignment and make it build again. -+ -+ * drivers/input/keyboard/maple_keyb.c (dc_kbd_connect): Build fix. -+ -+ * drivers/video/pv2fb.c (pvr2fb_set_var): Comment out offending -+ sections. Clean this up later and make things work again. -+ -+ * fs/mpage.c: Add mm.h header. -+ -+ * include/asm-sh/param.h: Define USER_HZ and redefine -+ CLOCKS_PER_SEC. -+ * include/asm-sh/pgalloc.h (pte_free_tlb): Renamed to -+ __pte_free_tlb. Likewise for pmd. -+ * include/asm-sh/system.h (irqs_disabled): Added. -+ * include/asm-sh/tlb.h (tlb_remove_tlb_entry): Renamed to -+ __tlb_remove_tlb_entry. -+ * include/asm-sh/kmap_types.h: New file -- generic skeletal -+ stuff required by AIO. -+ -+ * kernel/time.c (do_adjtimex): Protect tick_nsec reference with -+ CONFIG_VARIABLE_CLOCK_TICK_RATE. -+ * kernel/timer.c (update_wall_time_one_tick): Use TICK_NSEC -+ instead of tick_nsec for systems with a non-static clock tick -+ rate. -+ -+ Also protect the tick_nsec declaration with the -+ CONFIG_VARIABLE_CLOCK_TICK_RATE -- fixup all other tick_nsec -+ references with TICK_NSEC instead. -+ -+2002-10-21 M. R. Brown <mrbrown@linuxdc.org> -+ -+ * arch/sh/config.in: Massive cleanups in preparation of the -+ linux-2_5-restructure merge. -+ -+ * arch/sh/kernel/head.S: Rename cache_init to sh_cache_init to -+ prevent conflict with sunrpc code (net/sunrpc/cache.c). -+ * arch/sh/kernel/mach_dc.c: Rename aica_rtc_* routines to sh_rtc_*. -+ Temporary stop-gap until restructure where RTC is cleaned up. -+ * arch/sh/kernel/pci-dc.c (pcibios_init): Call gapspci_init() -+ directly. Properly initialize PCI subsystem via subsys_initcall(). -+ * arch/sh/kernel/rtc-aica.c: Rename aica_rtc* routines to sh_rtc_*. -+ Temporary stop-gap until restructure where RTC is cleaned up. -+ * arch/sh/kernel/setup.c (scif_sercon_putc, scif_sercon_flush, -+ scif_sercon_write, scif_sercon_device, scif_sercon_setup, -+ scif_sercon_init, scif_sercon_unregister): New routines. Implement a -+ hacked SH4 SCIF console until normal consoles are rewritten and -+ CONFIG_VT is handled properly. -+ (setup_arch): Inititalize SCIF serial console. -+ * arch/sh/kernel/setup_dc.c (setup_dreamcast): Remove call to -+ gapspci_init; minor cleanups. -+ -+ * arch/sh/mm/cache-sh3.c: Rename cache_init to sh_cache_init to -+ prevent conflict with sunrpc code (net/sunrpc/cache.c). -+ * arch/sh/mm/cache-sh4.c: Rename cache_init to sh_cache_init to -+ prevent conflict with sunrpc code (net/sunrpc/cache.c). -+ * arch/sh/mm/init.c (paging_init): Initialize mem_map. -+ CONFIG_DISCONTIGMEM case is not implemented yet. -+ -+ * drivers/pci/pci.ids: Remove duplicate entry. -+ -+ * include/asm-sh/hw_irq.h (sh_do_profile): New function. Holdover -+ until restructure is in place. -+ -+2002-10-19 M. R. Brown <mrbrown@linuxdc.org> -+ -+ * arch/sh/kernel/init_task.c: Fix init_signals initialization. -+ * arch/sh/kernel/irq.c (handle_IRQ_event): Remove unused SMP crud; fix -+ irq_enter() and irq_exit() macros. -+ (disable_irq): Call synchronize_irq(). -+ (synchronize_irq): New funtion; available if CONFIG_SMP is defined. -+ * arch/sh/kernel/pcibios.c (pcibios_align_resource, -+ pcibios_enable_device): Fix function declarations. -+ * arch/sh/kernel/rtc-aica.c (aica_rtc_gettimeofday): Convert to struct -+ timespec. -+ (aica_rtc_settimeofday): Now accepts time_t instead of -+ timeval/timespec. -+ * arch/sh/kernel/rtc.c (sh_rtc_gettimeofday): Convert to struct -+ timespec. -+ (sh_rtc_settimeofday): Now accepts time_t instead of timeval/timespec. -+ * arch/sh/kernel/sh_ksyms.c Commented out screen_info symbol until -+ it's replacement is determined; Export synchronize_irq(). -+ * arch/sh/kernel/time.c: Merged from restructure. -+ (do_gettimeoffset): Convert to nanoseconds/update for timespec. -+ (do_settimeofday): Same here. -+ (sh_do_profile): Removed. -+ (do_timer_interrupt): More usec->nsec conversion. -+ (get_timer_frequency): Use nanoseconds instead of usecs. Not so sure -+ about this one. -+ (time_init): CONFIG_CPU_SUBTYPE_ST40STB1 hack gutted; KGDB is -+ initialized from here. -+ -+ * include/asm-sh/hardirq.h: Converted to 2.5 series. -+ * include/asm-sh/machvec.h: mv_rtc_gettimeofday and -+ mv_rtc_settimeofday prototypes updated. -+ * include/asm-sh/rtc.h: Update prototypes. -+ * include/asm-sh/softirq.h: Converted to 2.5 series. -+ * include/asm-sh/system.h: Comment out macros now included in -+ kernel/sched.c by default (no need to override). -+ -+ -+ * arch/sh/kernel/process.c (sys_fork, sys_clone, sys_vfork): Add -+ missing user_tid parameter, set to NULL for all calls. -+ * arch/sh/kernel/signal.c (sys_sigsuspend, sys_rt_sigsuspend, -+ sys_sigreturn, sys_rt_sigreturn, handle_signal): Replace obsolete -+ field sigmask_lock with sig->siglock. -+ -+ * include/asm-sh/system.h: Fix definition of save_and_cli() for UP. -+ -+ * include/asm-sh/linkage.h, include/asm-sh/percpu.h, -+ include/asm-sh/rmap.h, include/asm-sh/topology.h: Add missing header -+ files from 2.5 series. -+ -+ Linux 2.5.44 -+ -+ * AGAINST-2.5.44: New file. -+ * AGAINST-2.5.43: Removed. -+ -+ * Makefile, arch/sh/lib/old-checksum.c, drivers/block/rd.c, -+ drivers/char/Makefile, drivers/char/Config.help, fs/nfs/inode.c, -+ include/asm-sh/checksum.h, include/asm-sh/system.h: Merge changes from -+ Linux 2.5.44. -+ -+2002-10-18 M. R. Brown <mrbrown@linuxdc.org> -+ -+ * fs/nfs/inode.c: Fix merge breakage. -+ -+ Linux 2.5.43 -+ -+ * AGAINST-2.5.43: New file. -+ * AGAINST-2.5.42: Removed. -+ -+ * Makefile, arch/sh/kernel/mach_7751se.c, arch/sh/kernel/mach_adx.c, -+ arch/sh/kernel/mach_bigsur.c, arch/sh/kernel/mach_cat68701.c, -+ arch/sh/kernel/mach_dc.c, arch/sh/kernel/mach_dmida.c, -+ arch/sh/kernel/mach_ec3104.c, arch/sh/kernel/mach_hp600.c, -+ arch/sh/kernel/mach_se.c, arch/sh/kernel/mach_unknown.c, -+ arch/sh/kernel/setup.c, arch/sh/kernel/setup_cqreek.c, -+ arch/sh/kernel/setup_dc.c, arch/sh/kernel/setup_ec3104.c, -+ arch/sh/kernel/setup_hd64465.c, arch/sh/kernel/setup_sh2000.c, -+ arch/sh/stboards/mach.c, drivers/block/rd.c, drivers/Makefile, -+ drivers/char/Makefile, drivers/char/Config.help, -+ drivers/mtd/maps/Config.in, drivers/mtd/maps/Config.help, -+ drivers/mtd/Config.help, fs/nfs/inode.c, mm/memory.c: Merge changes -+ from Linux 2.5.43. -+ -+ Linux 2.5.42 -+ -+ * AGAINST-2.5.42: New file. -+ * AGAINST-2.5.41: Removed. -+ -+ * Makefile, drivers/block/rd.c, drivers/char/Config.help, -+ fs/nfs/inode.c, include/linux/input.h: Merge changes from Linux -+ 2.5.42. -+ -+ * Makefile: Fix merge breakage. -+ -+ 5Linux 2.5.41 -+ -+ * AGAINST-2.5.41: New file. -+ * AGAINST-2.5.40: Removed. -+ -+ * Makefile, drivers/block/rd.c, drivers/char/Makefile, -+ drivers/char/Config.help, drivers/char/sh-sci.c, -+ drivers/char/sh-sci.h, drivers/mtd/maps/Config.in, -+ drivers/mtd/maps/Config.help, drivers/net/Config.in, -+ drivers/pci/pci.ids, drivers/pcmcia/hd64465_ss.c, fs/nfs/inode.c, -+ include/asm-sh/unistd.h, init/do_mounts.c, mm/memory.c: Merge changes -+ from Linux 2.5.41. -+ -+ Linux 2.5.40 -+ -+ * AGAINST-2.5.40: New file. -+ * AGAINST-2.5.39: Removed. -+ -+ * Makefile, drivers/block/rd.c, drivers/net/8139too.c, mm/memory.c: -+ Merge changes from Linux 2.5.40. -+ -+ Linux 2.5.39 -+ -+ * AGAINST-2.5.39: New file. -+ * AGAINST-2.5.38: Removed. -+ -+ * Makefile, arch/sh/Makefile, arch/sh/kernel/Makefile, -+ arch/sh/mm/Makefile, arch/sh/stboards/Makefile, drivers/block/rd.c, -+ mm/memory.c: Merge changes from Linux 2.5.39. -+ -+ Linux 2.5.38 -+ -+ * AGAINST-2.5.38: New file. -+ * AGAINST-2.5.37: Removed. -+ -+ * Makefile, drivers/block/rd.c: Merge changes from Linux 2.5.38. -+ -+ Linux 2.5.37 -+ -+ * AGAINST-2.5.37: New file. -+ * AGAINST-2.5.36: Removed. -+ -+ * Makefile, drivers/block/rd.c, drivers/net/8139too.c, -+ drivers/net/Config.in, drivers/net/Config.help, fs/nfs/inode.c, -+ mm/memory.c: Merge changes from Linux 2.5.37. -+ -+ Linux 2.5.36 -+ -+ * AGAINST-2.5.36: New file. -+ * AGAINST-2.5.35: Removed. -+ -+ * Makefile, arch/sh/Makefile, drivers/char/Makefile, kernel/ptrace.c, -+ mm/memory.c: Merge changes from Linux 2.5.36. -+ -+ * Makefile: Fix merge breakage. -+ -+ Linux 2.5.35 -+ -+ * AGAINST-2.5.35: New file. -+ * AGAINST-2.5.34: Removed. -+ -+ * Makefile, arch/sh/Makefile, drivers/char/Makefile, -+ drivers/char/Config.help, drivers/pci/pci.ids, fs/nfs/inode.c, -+ include/asm-sh/hdreg.h, include/asm-sh/pgtable.h: Merge changes from -+ Linux 2.5.35. -+ -+ Linux 2.5.34 -+ -+ * AGAINST-2.5.34: New file. -+ * AGAINST-2.5.33: Removed. -+ -+ * Makefile, arch/sh/mm/init.c, drivers/block/rd.c, -+ drivers/char/Makefile, drivers/net/8139too.c, init/do_mounts.c, -+ kernel/ptrace.c, mm/memory.c: Merge changes from Linux 2.5.34. -+ -+ Linux 2.5.33 -+ -+ * AGAINST-2.5.33: New file. -+ * AGAINST-2.5.32: Removed. -+ -+ * Makefile, arch/sh/kernel/irq_intc2.c, arch/sh/kernel/pci-dc.c, -+ arch/sh/kernel/pci-sh7751.c, arch/sh/kernel/pci_st40.c, -+ drivers/char/Makefile, drivers/char/Config.help, -+ drivers/net/8139too.c, drivers/net/Config.in, drivers/net/Config.help, -+ fs/nfs/inode.c, include/asm-sh/cache.h: Merge changes from Linux -+ 2.5.33. -+ -+ * drivers/pci/pci.ids, drivers/char/Makefile: Fix merge breakage. -+ -+ Linux 2.5.32 -+ -+ * AGAINST-2.5.32: New file. -+ * AGAINST-2.5.31: Removed. -+ -+ * Makefile, arch/sh/Makefile, arch/sh/config.in, -+ drivers/char/Makefile, drivers/char/Config.help, -+ drivers/input/joystick/Config.help, drivers/input/joystick/Config.in, -+ drivers/mtd/maps/Config.in, drivers/pci/pci.ids, -+ drivers/video/epson1355fb.c, drivers/video/hitfb.c, -+ drivers/video/pvr2fb.c, include/asm-sh/keyboard.h, -+ include/asm-sh/smplock.h, include/linux/input.h, init/do_mounts.c, -+ kernel/ptrace.c, mm/memory.c: Merge changes from Linux 2.5.32. -+ -+ Linux 2.5.31 -+ -+ * AGAINST-2.5.31: New file. -+ * AGAINST-2.5.30: Removed. -+ -+ * Makefile, arch/sh/config.in, drivers/char/Makefile, -+ drivers/net/8139too.c, mm/memory.c: Merge changes from Linux 2.5.31. -+ -+ * init/do_mounts.c, mm/memory.c: Fix merge breakage. -+ -+ Linux 2.5.30 -+ -+ * AGAINST-2.5.30: New file. -+ * AGAINST-2.5.29: Removed. -+ -+ * Makefile, arch/sh/kernel/Makefile, drivers/block/rd.c, -+ drivers/Makefile, drivers/char/Makefile, drivers/char/Config.help, -+ drivers/net/Config.in, fs/nfs/inode.c, include/asm-sh/processor.h, -+ include/asm-sh/socket.h, include/asm-sh/unistd.h, -+ include/linux/input.h, init/do_mounts.c, kernel/ptrace.c, mm/memory.c: -+ Merge changes from Linux 2.5.30. -+ -+ Linux 2.5.29 -+ -+ * AGAINST-2.5.29: New file. -+ * AGAINST-2.5.28: Removed. -+ -+ * Makefile, arch/sh/config.in, drivers/input/joystick/Config.help, -+ drivers/input/joystick/Config.in, drivers/input/joystick/Makefile, -+ fs/nfs/inode.c, include/linux/input.h, init/do_mounts.c: Merge changes -+ from Linux 2.5.29. -+ -+ Linux 2.5.28 -+ -+ * AGAINST-2.5.28: New file. -+ * AGAINST-2.5.27: Removed. -+ -+ * Makefile, arch/sh/kernel/irq.c, arch/sh/kernel/process.c, -+ drivers/block/rd.c, drivers/Makefile, drivers/char/Makefile, -+ drivers/net/8139too.c, include/asm-sh/system.h, kernel/ptrace.c, -+ mm/memory.c: Merge changes from Linux 2.5.28. -+ -+ Linux 2.5.27 -+ -+ * AGAINST-2.5.27: New file. -+ * AGAINST-2.5.26: Removed. -+ -+ * Makefile, include/asm-sh/ide.h, kernel/ptrace.c, mm/memory.c: Merge -+ changes from Linux 2.5.27. -+ -+ Linux 2.5.26 -+ -+ * AGAINST-2.5.26: New file. -+ * AGAINST-2.5.25: Removed. -+ -+ * Makefile, arch/sh/config.in, drivers/char/Makefile, -+ drivers/char/Config.help, drivers/input/joystick/Config.help, -+ drivers/input/joystick/Config.in, drivers/input/joystick/Makefile, -+ fs/nfs/inode.c, include/asm-sh/pgtable-2level.h, -+ include/linux/input.h: Merge changes from Linux 2.5.26. -+ -+ * include/linux/input.h: Fix merge breakage. -+ -+ Linux 2.5.25 -+ -+ * AGAINST-2.5.25: New file. -+ * AGAINST-2.5.24: Removed. -+ -+ * Makefile, arch/sh/Makefile, arch/sh/boot/compressed/Makefile, -+ arch/sh/boot/Makefile, drivers/char/Makefile, -+ drivers/input/joystick/Config.help, drivers/input/joystick/Config.in, -+ drivers/input/joystick/Makefile, fs/nfs/inode.c, -+ include/linux/input.h, mm/memory.c: Merge changes from Linux 2.5.25. -+ -+2002-08-28 Matt Boytim <matt@boytim.org> -+ -+ * drivers/char/sh-sci.c (sci_receive_chars): Add dummy read -+ when copied==0 to clear interrupt. -+ -+2002-06-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/Makefile (archclean): Remove invoking make under -+ subdirectory. -+ (LINKFLAGS): Add adding 'jiffies' definition. -+ -+ * arch/sh/vmlinux.lds.S (jiffies): Removed. -+ -+ * arch/sh/mm/ioremap.c: Include <linux/mm.h> and <asm/page.h>. -+ -+ * arch/sh/mm/cache-sh4.c (copy_user_page, clear_user_page): Follow -+ new API. -+ -+ * arch/sh/kernel/irq.c (show_interrupts): Use NR_CPUS (was: -+ smp_num_cpus). -+ -+ * arch/sh/kernel/sh_ksyms.c: Don't include <asm/pgalloc.h>. -+ -+ * include/asm-sh/signal.h: Declare struct pt_regs. -+ -+ * include/asm-sh/pgtable.h (mk_pte): New definition using pfn_pte. -+ -+ * include/asm-sh/pgalloc.h (pmd_free_tlb): Fixed to have a argument -+ tlb. -+ (ptep_get_and_clear): Fixed the argurment to pfn_to_page. -+ -+ * include/asm-sh/pgtable-2level.h (pte_pfn): Fixed to access the -+ member pte (was: pte_low). -+ -+ * include/asm-sh/page.h (VALID_PAGE): Removed. -+ (PFN_START, pfn_to_page, page_to_pfn, virt_to_page, pfn_valid, -+ virt_addr_valid): Defined. -+ -+ * include/asm-sh/siginfo.h: Remove unmatched #endif. -+ -+2002-06-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * AGAINST-2.5.24: New file. -+ * AGAINST-2.5.24: Removed. -+ * Makefile: Version 2.5.24. -+ -+ * arch/sh/kernel/sys_sh.c, drivers/Makefile, drivers/char/Makefile, -+ drivers/mtd/maps/Config.in, drivers/net/8139too.c, -+ drivers/net/Config.in, drivers/pcmcia/hd64465_ss.c: Incorporate -+ changes in 2.5.23. -+ -+2002-06-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * AGAINST-2.5.23: New file. -+ * AGAINST-2.5.22: Removed. -+ * Makefile: Version 2.5.23. -+ -+ * arch/sh/Makefile, arch/sh/boot/Makefile, arch/sh/kernel/time.c, -+ drivers/block/rd.c: Incorporate changes in 2.5.23. -+ -+2002-06-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/system.h (prepare_to_switch): Removed. -+ (prepare_arch_schedule, finish_arch_schedule, prepare_arch_switch, -+ finish_arch_switch): Added. -+ (switch_to): New API. -+ -+ * AGAINST-2.5.22: New file. -+ * AGAINST-2.5.21: Removed. -+ * Makefile: Version 2.5.22. -+ -+ * arch/sh/kernel/setup.c, drivers/Makefile, drivers/block/rd.c, -+ drivers/char/Makefile, drivers/pci/pci.ids, fs/nfs/inode.c, -+ init/do_mounts.c, mm/memory.c: Incorporate changes in 2.5.22. -+ -+2002-06-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * AGAINST-2.5.21: New file. -+ * AGAINST-2.5.20: Removed. -+ * Makefile: Version 2.5.21. -+ -+ * arch/sh/boot/Makefile, drivers/block/rd.c, drivers/char/Makefile, -+ fs/nfs/inode.c: Incorporate changes in 2.5.21. -+ -+2002-06-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/page.h (clear_user_page, copy_user_page): New API. -+ -+ * AGAINST-2.5.20: New file. -+ * AGAINST-2.5.19: Removed. -+ * Makefile: Version 2.5.20. -+ -+ * drivers/cdrom/Config.help, drivers/cdrom/Config.in, -+ drivers/cdrom/Makefile, drivers/char/Config.help, -+ drivers/char/Makefile, drivers/net/Config.help, fs/nfs/inode.c, -+ include/asm-sh/pgtable.h, init/do_mounts.c, mm/memory.c: Incorporate -+ changes in 2.5.20. -+ -+2002-06-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable-2level.h (pte_pfn, pfn_pte, pfn_pmd): Added. -+ -+ * AGAINST-2.5.19: New file. -+ * AGAINST-2.5.18: Removed. -+ * Makefile: Version 2.5.19. -+ -+ * arch/sh/kernel/Makefile, arch/sh/kernel/signal.c, -+ arch/sh/stboards/Makefile, drivers/Makefile, drivers/block/rd.c, -+ drivers/cdrom/Makefile, drivers/char/Makefile, -+ drivers/video/hitfb.c, include/asm-sh/errno.h, include/asm-sh/ide.h, -+ include/asm-sh/siginfo.h, init/do_mounts.c, mm/memory.c: Incorporate -+ changes in 2.5.19. -+ -+2002-06-18 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/bitops.h (fls): Added. -+ * arch/sh/kernel/signal.c: Include <linux/suspend.h>. -+ (do_signal): Handle PF_FREEZE. -+ -+ * AGAINST-2.5.18: New file. -+ * AGAINST-2.5.17: Removed. -+ * Makefile: Version 2.5.18. -+ -+ * arch/sh/defconfig, arch/sh/kernel/Makefile, arch/sh/lib/Makefile, -+ arch/sh/mm/Makefile, arch/sh/mm/init.c, drivers/block/rd.c, -+ drivers/char/Makefile, drivers/char/shwdt.c, -+ drivers/input/joystick/Makefile, drivers/pci/pci.ids, -+ fs/nfs/inode.c, init/do_mounts.c, mm/memory.c: Incorporate changes -+ in 2.5.18. -+ -+2002-05-24 Paul Mundt <lethal@chaoticdreams.org> -+ -+ * arch/sh/Config.help, arch/sh/config.in, arch/sh/kernel/Makefile: -+ Add CONFIG_UBC_WAKEUP definitions. -+ * arch/sh/kernel/setup.c (setup_arch): Call ubc_wakeup() if -+ CONFIG_UBC_WAKEUP=y. -+ * arch/sh/kernel/ubc.S: New file. -+ -+ * include/asm-sh/ptrace.h: Move UBC definitions out to a UBC -+ specific header. -+ * include/asm-sh/ubc.h: New file. -+ -+2002-05-23 Paul Mundt <lethal@chaoticdreams.org> -+ -+ * drivers/char/shwdt.c: SH-5 support. Various other cleanups. -+ -+2002-05-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/tlb.h (tlb_start_vma, tlb_end_vma, -+ tlb_remove_tlb_entry, tlb_flush): To be implemented. -+ -+ * AGAINST-2.5.17: New file. -+ * AGAINST-2.5.16: Removed. -+ * Makefile: Version 2.5.17. -+ -+ * drivers/block/rd.c, fs/nfs/inode.c, include/asm-sh/ioctls.h, -+ mm/memory.c: Incorporate changes in 2.5.17. -+ -+2002-05-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgalloc.h (pte_free_tlb, pmd_free_tlb): Added. -+ -+ * AGAINST-2.5.16: New file. -+ * AGAINST-2.5.15: Removed. -+ * Makefile: Version 2.5.16. -+ -+ * arch/sh/kernel/process.c, arch/sh/vmlinux.lds.S, -+ drivers/net/8139too.c, include/asm-sh/ide.h, include/linux/input.h, -+ mm/memory.c: Incorporate changes in 2.5.16. -+ -+2002-05-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/signal.c (do_signal): Added SIGURG case. -+ -+ * AGAINST-2.5.15: New file. -+ * AGAINST-2.5.14: Removed. -+ * Makefile: Version 2.5.15. -+ -+ * arch/sh/kernel/pci_st40.c, arch/sh/kernel/pcibios.c, -+ drivers/Makefile, drivers/char/Makefile, include/asm-sh/ide.h, -+ kernel/ptrace.c: Incorporate changes in 2.5.15. -+ -+2002-05-07 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (mk_pte_phys): Removed. -+ -+ * AGAINST-2.5.14: New file. -+ * AGAINST-2.5.13: Removed. -+ * Makefile: Version 2.5.14. -+ -+ * arch/sh/mm/cache-sh4.c, arch/sh/mm/fault.c, arch/sh/mm/init.c, -+ arch/sh/mm/ioremap.c, drivers/pci/pci.ids, include/asm-sh/pgalloc.h, -+ init/do_mounts.c, mm/memory.c: Incorporate changes in 2.5.14. -+ -+2002-05-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * AGAINST-2.5.13: New file. -+ * AGAINST-2.5.12: Removed. -+ * Makefile: Version 2.5.13. -+ -+ * Makefile, drivers/block/rd.c, drivers/net/Config.in, -+ drivers/pci/pci.ids: Incorporate changes in 2.5.13. -+ -+2002-05-01 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * AGAINST-2.5.12: New file. -+ * AGAINST-2.5.11: Removed. -+ * Makefile: Version 2.5.12. -+ -+ * arch/sh/mm/init.c, drivers/block/rd.c, drivers/char/Makefile, -+ drivers/pci/pci.ids, fs/nfs/inode.c, mm/memory.c: Incorporate -+ changes in 2.5.12. -+ -+2002-04-30 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow up to 2.5.11. -+ * arch/sh/mm/clear_page.S: Remove SYMBOL_NAME. -+ * arch/sh/kernel/head.S, arch/sh/kernel/entry.S, -+ arch/sh/lib/memmove.S: Likewise. -+ -+ * AGAINST-2.5.11: New file. -+ * AGAINST-2.5.10: Removed. -+ * Makefile: Version 2.5.11. -+ -+ * Documentation/cachetlb.txt: Incorporate changes in 2.5.11. -+ * arch/sh/defconfig, drivers/block/rd.c, drivers/char/Config.help, -+ drivers/char/Makefile, drivers/video/epson1355fb.c, -+ drivers/video/hitfb.c, drivers/video/pvr2fb.c, -+ include/asm-sh/ide.h, mm/memory.c: Likewise. -+ -+2002-04-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * AGAINST-2.5.10: New file. -+ * AGAINST-2.5.9: Removed. -+ * Makefile: Version 2.5.10. -+ * drivers/pci/pci.ids: Incorporate changes in 2.5.10. -+ -+2002-04-25 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/cache-sh4.c (CACHE_ASSOC): Defined. -+ (flush_cache_4096_all): Moved to clear_page.S. -+ (flush_cache_4096): Rewritten. Use __flush_cache_4096. -+ (flush_dcache_page,__flush_cache_page): Don't protect from interrupt. -+ (flush_cache_all): Rewritten. Use __flush_dcache_all. -+ (flush_cache_range): Follow change of flush_cache_4096_all. -+ * arch/sh/mm/clear_page.S (__flush_cache_4096_all): Removed. -+ (flush_cache_4096_all): New implementation. -+ (__flush_cache_4096): Optimized. Use ASSOC bit. -+ (__flush_dcache_all): New function. -+ (__clear_user): Clean-up local label. -+ -+ * copy_page.S (__copy_user): Clean-up local label. -+ -+ * arch/sh/kernel/time.c (sh_do_profile): Add profile even if PC is in -+ P2 area. -+ -+2002-04-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * AGAINST-2.5.9: New file. -+ * AGAINST-2.5.8: Removed. -+ * Makefile: Version 2.5.9. -+ * drivers/char/Makefile: Incorporate changes in 2.5.9. -+ * drivers/pci/pci.ids: Likewise. -+ * include/asm-sh/errno.h (E2BIG): Follow the change of i386 version. -+ -+2002-04-17 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/copy_page.S (__copy_user): New function. -+ * include/asm-sh/uaccess.h (__copy_user): Remove macro, -+ declared as external function. -+ -+2002-04-15 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Makefile: Version 2.5.8. -+ * AGAINST-2.5.8: New file. -+ * AGAINST-2.5.8-pre3: Removed. -+ -+ * drivers/block/rd.c: Incorporate changes in 2.5.8-pre3 -> final. -+ -+2002-04-13 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/clear_page.S (__clear_user): Bug fix. -+ -+2002-04-12 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow up to 2.5.8-pre3. -+ * include/asm-sh/tlbflush.h (flush_tlb_kernel_range): New API. -+ * arch/sh/mm/fault.c (flush_tlb_kernel_range): New function. -+ -+ * arch/sh/kernel/entry.S (sys_sched_setaffinity, -+ sys_sched_getaffinity): New syscall entries. -+ * include/asm-sh/unistd.h (__NR_sched_setaffinity, -+ __NR_sched_getaffinity): New macros. -+ -+2002-04-11 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Follow up to 2.5.8-pre2. -+ * arch/sh/kernel/process.c: Include <linux/platform.h>. -+ (default_idle): New function. -+ (cpu_idle): Call default_idle. -+ -+ * arch/sh/kernel/signal.c: Include <linux/binfmt.h>. -+ -+ * include/asm-sh/pgalloc.h: Inline functions move to real functions. -+ * arch/sh/mm/init.c (pgd_alloc, pgd_free, pte_alloc_one_kernel, -+ pte_alloc_one): Moved to here. -+ -+ * include/asm-sh/thread_info.h (PREEMPT_ACTIVE): Defined. -+ -+ * include/asm-sh/cacheflush.h, include/asm-sh/tlbflush.h: New files. -+ -+ * include/asm-sh/mmu_context.h: Include asm/tlbflush.h. -+ -+ * arch/sh/kernel/signal.c: Include asm/cacheflush.h. -+ * arch/sh/mm/cache-sh3.c: Likewise. -+ * arch/sh/mm/cache-sh4.c: Likewise. -+ * arch/sh/mm/fault.c: Likewise. -+ -+ * arch/sh/kernel/sh_ksyms.c: Include asm/tlbflush.h, -+ asm/cacheflush.h. -+ * arch/sh/mm/ioremap.c: Likewise. -+ -+2002-04-10 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * Makefile: Version 2.5.8-pre3. -+ * AGAINST-2.5.8-pre3: New file. -+ * AGAINST-2.5.8-pre1: Removed. -+ -+ * include/asm-sh/unistd.h: Incorporate changes in 2.5.8-pre2 -> pre3. -+ * drivers/block/rd.c: Likewise. -+ -+ * mm/memory.c: Incorporate changes in 2.5.8-pre1 -> pre2. -+ * fs/nfs/inode.c: Incorporate changes in 2.5.8-pre1 -> pre2. -+ -+2002-04-07 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/traps.c (show_task): Don't use __get_user, -+ it's kernel space. Assume 80-columns. -+ -+2002-04-06 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/semaphore.c: Inlcude <linux/errno.h>. -+ -+2002-04-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Bug fix for thread_info. -+ * arch/sh/kernel/ptrace.c (get_stack_long): Use task->thread_info. -+ (put_stack_long): Likewise. -+ (sys_ptrace): Likewise. -+ -+2002-04-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * fs/nfs/inode.c: Added. -+ (nfs_find_actor): Return 0 when the type of file is not same. -+ -+2002-04-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/input/joystick/Config.in: Updated to 2.5.8-pre1. -+ * drivers/input/joystick/Config.help: Ditto. -+ * drivers/input/joystick/Makefile: Ditto. -+ * drivers/net/Config.in: Ditto. -+ * arch/sh/kernel/pci-sh7751.c: Martin's e-mail change to ucw.cz. -+ (follow the change of arch/i386/*.) -+ * drivers/video/epson1355fb.c (e1355fb_init): Use NODEV Instead of -1. -+ -+2002-04-04 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Update to 2.5.8-pre1. -+ * AGAINST-2.5.8-pre1: New file. -+ * AGAINST-2.5.7: Removed. -+ * Makefile: Version 2.5.8-pre1. -+ * Makefile, arch/sh/kernel/sh_ksyms.c, drivers/block/rd.c, -+ drivers/char/shwdt.c, drivers/net/Config.in, drivers/pci/pci.ids, -+ init/do_mounts.c: Include changes from mainline (2.5.8-pre1). -+ * arch/sh/kernel/sh_ksyms.c (simple_strtol, strtok): Removed. -+ * drivers/char/shwdt.c (nowayout): New module option (to be -+ configured at runtime by Matt Domsch). -+ -+2002-04-03 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_4096_all, flush_cache_4096): -+ Changed the compile time condition for ST40 and SH7751. OC can be -+ handled in P2, while IC must be handled at P1. -+ -+ * arch/sh/mm/clear_page.S (__flush_cache_4096_all): Renamed -+ from __flush_cache_4096_nocheck. -+ -+2002-03-29 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_4096_nocheck): New function. -+ (flush_icache_all): New function. -+ (flush_cache_all): Use flush_icache_all. Don't need to protect -+ from interrupt as we don't flush dcache by writing CCR. -+ (flush_cache_range): Don't call __flush_cache_page, but -+ call flush_cache_4096_nocheck. -+ -+ * arch/sh/mm/clear_page.S (__flush_cache_4096_nocheck): New function. -+ -+2002-03-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (work_notifysig): One cycle optimization. -+ -+2002-03-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/process.c (cpu_idle): Bug fix. Don't exit loop -+ when hlt_counter != 0. -+ -+ * include/asm-sh/uaccess.h (__access_ok): Added missing inline -+ qualifier. -+ -+ * arch/sh/kernel/entry.S (OFF_TRA): Renamed from IS_SYSCALL. -+ (system_call, handle_exception): Set tra. -+ -+ * arch/sh/kernel/signal.c (restore_sigcontext, handle_signal, -+ do_signal): Use tra. -+ -+ * include/asm-sh/ptrace.h (tra): Renamed from is_syscall. -+ -+2002-03-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/signal.c (save_sigcontext_fpu): Don't need -+ to protect from interrupt. -+ * arch/sh/kernel/process.c (dump_fpu, __switch_to, copy_thread): -+ Likewise. -+ -+2002-03-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (flush_dcache_page): Merged with -+ __flush_dcache_page. -+ -+2002-03-28 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/clear_page.S (__flush_cache_4096): Only define for -+ SH7750. -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_4096): Plain loop for SH7751 -+ and ST40 (no need to go P2). -+ -+2002-03-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (IS_SYSCALL): Renamed from SYSCALL_NR. -+ (system_call, handle_exception): Set is_syscall. -+ -+ * arch/sh/kernel/signal.c (restore_sigcontext, handle_signal, -+ do_signal): Use is_syscall. -+ -+ * include/asm-sh/ptrace.h (is_syscall): Renamed from syscall_nr. -+ -+ * arch/sh/kernel/signal.c (save_sigcontext_fpu): Use __put_user -+ (was: __copy_to_user). -+ (handle_signal, do_signal): Bug fix. Don't set register 0. -+ -+ * include/asm-sh/hw_irq.h (sh_do_profile): Removed from here. -+ * arch/sh/kernel/time.c (sh_do_profile): But implemented here. -+ -+2002-03-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/copy_page.S: File merged with __copy_user_page-sh4.S. -+ * arch/sh/mm/clear_page.S: File merged with __clear_user.S. -+ (__flush_cache_4096): New function. -+ * arch/sh/mm/Makefile: Remove __copy_user_page-sh4.S and -+ __clear_user.S. -+ -+ * arch/sh/mm/cache-sh4.c (__flush_icache_page): Removed. -+ (flush_cache_4096): New function. -+ -+2002-03-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (__flush_cache_page): New function. -+ (flush_cache_range, flush_cache_page, flush_icache_user_range): Use -+ __flush_cache_page. -+ -+2002-03-26 NIIBE Yutaka <gniibe@server1.m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_mm): Don't check -+ mm->context, it's for TLB handling. -+ (flush_cache_range): Likewise. -+ (flush_cache_mm): Fix the comment. The alias issue is there -+ for write-through cache too. -+ (flush_cache_range): Don't handle in P2. -+ -+2002-03-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_range): Bug fix. -+ Handle the case where PMD is none or bad. -+ The argument to __flush_icache_page/__flush_dcache_page -+ is physical address (was: virtual address). -+ -+2002-03-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/mmu_context.h (switch_mm): Remove setting/resetting -+ of mm->cpu_vm_mask. It's for SMP implementation. -+ (get_new_mmu_context): Removed. -+ (get_mmu_context): Merved with get_new_mmu_context. -+ -+2002-03-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/lib/Makefile (obj-y): Removed old-checksum.o as -+ it seems nothing depends on that. -+ -+ * arch/sh/kernel/sh_ksyms.c (csum_partial_copy): -+ Don't export old (possibly obsolete) function. -+ -+2002-03-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/uaccess.h (__clear_user): Make it external -+ function. (Was: inline function). -+ -+ * arch/sh/mm/Makefile: Added the entry for __clear_user.o. -+ * arch/sh/mm/__clear_user.S: File name change. As it's also used by -+ SH-3, renamed from __clear_user_page-sh4.S, -+ (__clear_user): New function. -+ -+2002-03-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/system.h (mm_segment_t): Move the definition to... -+ * include/asm-sh/uaccess.h: ... here. And change it to have boolean -+ is_user_space. -+ (KERNEL_DS, USER_DS): New value domain: 0 or 1. -+ (get_fs): Simplified. -+ (set_fs): Optimized by asm. -+ (__get_user_check): New implementation. -+ (__get_user_1, __get_user_2, __get_user_4): New macros. -+ (strnlen_user): Use __access_ok function. -+ (strlen_user): Implemented as inline function. -+ -+2002-03-23 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/uaccess.h (__range_ok): Removed. -+ (__access_ok, access_ok): New implementation. -+ -+ * include/asm-sh/thread_info.h (TIF_USERSPACE): Change to 31, -+ so that expression can be simple (was: 18). -+ -+2002-03-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/thread_info.h: Define cpu and preempt_count as -+ 16-bit to fit cache (for SH-3). -+ (INIT_THREAD_INFO): Initialize the member 'cpu'. -+ -+ * include/asm-sh/system.h (switch_to): Use __dummy output argument -+ for r0. -+ -+ * include/asm-sh/pgtable.h (pte_offset): Removed. -+ (pte_offset_map, pte_offset_map_nested): Define as pte_offset_kernel. -+ -+ * include/asm-sh/pgalloc.h (pte_alloc_one): Bug fix for clear_page. -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_range): Don't need to check -+ find_vma. -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_range, flush_cache_page, -+ clear_user_page, copy_user_page): Use pte_offset_kernel. -+ * arch/sh/mm/fault.c (__do_page_fault): Likewise. -+ -+ * arch/sh/kernel/signal.c (restore_sigcontext): Use tsk. -+ -+ * arch/sh/kernel/setup.c (setup_arch): Bug fix for FPU -+ initialization. -+ -+ * arch/sh/kernel/ptrace.c (sys_ptrace): Remove unused variable tsk. -+ (do_syscall_trace): Use tsk. -+ -+ * arch/sh/kernel/process.c (alloc_task_struct, free_task_struct): -+ Removed. -+ (copy_thread): Bug fix for thread_info. Clear TIF_USEDFPU flag. -+ (copy_thread, dump_thread): Don't distingush init_task specially. -+ (switch_to): Bug fix, use next->thread_info. -+ -+ * arch/sh/kernel/entry.S (work_resched, resume_userspace, -+ syscall_exit): Use r8 for current_thread_info. -+ (syscall_exit_work): Bug fix, load do_syscall_trace. -+ (system_call): Don't need to ext.u. Micro opt. for syscall_nr. -+ (syscall_trace_entry, syscall_badsys): Bug fix for error return -+ value. -+ -+2002-03-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/mman.h (PROT_SEM): Added. -+ -+ * arch/sh/kernel/signal.c (do_signal): Follow the name change of -+ p_ptr -> parent of the task. -+ -+ * include/asm-sh/unistd.h (__NR_futex): Added. -+ * arch/sh/kernel/entry.S (sys_call_table): Added sys_futex. -+ (syscall_exit_work): Move up. (Near work_pending.) -+ (sys_nfsservctl): Define to sys_ni_syscall, when not NFSD. -+ -+ * include/asm-sh/pgalloc.h (check_pgt_cache): New macro. -+ -+2002-03-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Update to 2.5.7. -+ * AGAINST-2.5.7: New file. -+ * AGAINST-2.5.6: Removed. -+ * Makefile: Version 2.5.7. -+ * Makefile, arch/sh/Config.help, arch/sh/config.in, -+ drivers/Makefile, drivers/pci/pci.ids, kernel/ptrace.c, mm/memory.c: -+ Include changes from mainline (2.5.7). -+ -+2002-03-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgalloc.h (ptep_get_and_clear): Follow the change of -+ type of member i_map_shared. -+ * include/asm-sh/unistd.h (__NR_tkill, __NR_sendfile64): Added. -+ * include/asm-sh/siginfo.h (SI_DETHREAD): Added. -+ * arch/sh/kernel/entry.S (sys_call_table): Added sys_sendfile64. -+ -+2002-03-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Update to 2.5.6. -+ * AGAINST-2.5.6: New file. -+ * AGAINST-2.5.5: Removed. -+ * Makefile: Version 2.5.6. -+ * Makefile, drivers/Makefile, drivers/block/rd.c, -+ drivers/char/Config.help, drivers/char/Makefile, -+ drivers/net/8139too.c, drivers/net/Config.help, -+ drivers/net/Config.in, drivers/pci/pci.ids, init/do_mounts.c, -+ mm/memory.c: Include changes from mainline (2.5.6). -+ -+2002-03-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pgtable.h (pmd_page_kernel): Renamed from pmd_page. -+ (pmd_page): New macro for user page. -+ (pte_offset_kernel): New macro. -+ (pte_offset_map, pte_offset_map_nested, pte_unmap, pte_unmap_nested): -+ New macros. -+ -+ * arch/sh/mm/ioremap.c (remap_area_pmd): Use pte_alloc_kernel -+ (was: pte_alloc). -+ -+2002-03-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/process.c (cpu_idle): Don't call check_pgt_cache. -+ -+ * include/asm-sh/pgalloc.h (pmd_populate_kernel): Renemed from -+ pmd_populate. -+ (pmd_populate): New function for U0 page. -+ (do_check_pgt_cache): Removed. -+ (pmd_free_slow, pmd_free_fast): Removed. -+ (pmd_alloc_one_fast): Removed. -+ (pte_free_slow): Renamed to pte_free. Macro removed. -+ (pte_alloc_one_fast): Removed. -+ (pte_alloc_one_kernel, pte_free_kernel): New function. -+ (pte_alloc_one): Call schedule_timeout and try again. -+ -+2002-03-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/entry.S (ret_from_fork): Follow the change of -+ switch_to. Don't call schedule_tail (it's now SMP only function). -+ Move the label to syscall_exit. -+ -+ * include/asm-sh/system.h (switch_to): Change the API (removing -+ last argument). -+ -+ * include/asm-sh/page.h (VM_DATA_DEFAULT_FLAGS): Defined. -+ -+ * include/asm-sh/bitops.h (sched_find_first_bit): 140-bit -+ implementation. It's moved to here... -+ * include/asm-sh/mmu_context.h: ... from here. (Removed). -+ -+2002-03-22 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (flush_icache_user_range): New function. -+ * include/asm-sh/pgtable.h (flush_icache_user_range): Declared. -+ -+ * kernel/ptrace.c (access_process_vm): Remove flush_dcache_page -+ as we do flush_icache_user_range here. (No difference now.) -+ -+2002-03-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Update to 2.5.5. -+ * AGAINST-2.5.5: New file. -+ * AGAINST-2.5.4: Removed. -+ * Documentation/cachetlb.txt: Include the change. -+ * Makefile: Version 2.5.5. Merged. -+ * arch/sh/config.in, drivers/Makefile: Sound driver move. -+ * arch/sh/kernel/signal.c: recalc_sigpending API change. -+ * drivers/net/8139too.c, drivers/net/Config.in: Update. -+ * drivers/pci/pci.ids: Update. -+ * include/asm-sh/pgtable.h: New API flush_icache_user_range, -+ Removed page_address API here (move to linux/mm.h). -+ * include/net/inet_ecn.h: Update. -+ * kernel/ptrace.c: Use new API flush_icache_user_range. -+ * mm/memory.c: Update. -+ -+2002-03-09 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_range): New auto variable mm. -+ -+ * arch/sh/kernel/process.c (get_wchan): Follow the API change of -+ thread_saved_pc. -+ -+ * include/asm-sh/thread_info.h (cpu): Added the member, not -+ meaningful though (SuperH doesn't support SMP). -+ -+ * include/asm-sh/semaphore.h: Include <linux/wait.h>. -+ -+ * include/asm-sh/processor.h (thread_saved_pc): Make it a macro, -+ so that we don't need the implementation of struct task. -+ Fixed, thread is not a pointer. -+ -+ * arch/sh/config.in: joystick driver is now under drivers/input. -+ -+ * arch/sh/kernel/entry.S (flags, work, syscall_trace): Removed. -+ (k_current): Removed. -+ (work_pending): Use _TIF_NEED_RESCHED. -+ (work_resched): Use GET_THREAD_INFO and _TIF_WORK_MASK. -+ (work_notifysig): Use _TIF_SIGPENDING. -+ (resume_userspace): Use GET_THREAD_INFO and _TIF_WORK_MASK. -+ (system_call): Use GET_THREAD_INFO and _TIF_SYSCALL_TRACE. -+ (system_exit): Use GET_THREAD_INFO and _TIF_ALLWORK_MASK. -+ (system_trace_entry): Use _TIF_SYSCALL_TRACE. -+ -+ * include/asm-sh/thread_info.h (_TIF_WORK_MASK, _TIF_ALLWORK_MASK): -+ Change the value to 8-bit. -+ -+2002-03-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/fpu.c (save_fpu, ieee_fpe_handler, -+ do_fpu_state_restore): Use set_tsk_thread_flag and -+ clear_tsk_thread_flag. -+ -+ * arch/sh/kernel/process.c (print_syscall): Removed. -+ -+ * include/asm-sh/processor.h (thread_saved_pc): Follow the change -+ of API (argument type). -+ (THREAD_SIZE): Removed from here (will be in thread_info.h). -+ (alloc_task_struct, free_task_struct, get_task_struct, init_task, -+ init_stack): Removed. -+ (unlazy_fpu, clear_fpu): Use test_tsk_thread_flag and -+ clear_tsk_thread_flag. -+ -+ * include/asm-sh/uaccess.h (KERN_ADDR_LIMIT, USER_ADDR_LIMIT): New -+ macros. -+ (KERNEL_DS, USER_DS): Use KERN_ADDR_LIMIT, USER_ADDR_LIMIT. -+ (get_fs, set_fs): New functions using thread flag. -+ (__addr_ok, __range_ok): Use get_fs().seg. -+ -+ * include/asm-sh/thread_info.h: New file. -+ -+2002-02-28 Paul Mundt <lethal@chaoticdreams.org> -+ -+ * arch/sh/kernel/traps.c (dump_stack): Removed. -+ (show_task): Added. -+ (show_trace_task): Hand off actual stack pointer to show_task() -+ to do a real backtrace. -+ -+2002-02-28 M. R. Brown <mrbrown@0xd6.org> -+ -+ * Makefile: Added -sh to EXTRAVERSION. -+ -+2002-02-27 Paul Mundt <lethal@chaoticdreams.org> -+ -+ * arch/sh/mm/cache-sh4.c (__flush_icache_page): Added back in. -+ (flush_cache_range): Rewritten entirely. -+ (flush_cache_mm): Only flush caches on a valid mm context. -+ -+2002-02-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.5.4. -+ * Makefile: Version 2.5.4 -+ * AGAINST-2.5.4: New file. -+ * AGAINST-2.5.3: Removed. -+ -+ * arch/sh/kernel/signal.c (setup_frame): Use current_thread_info. -+ (setup_rt_frame): Likewise. -+ * include/asm-sh/uaccess.h (get_fs,set_fs,__addr_ok,__range_ok): -+ Likewise. -+ -+ * arch/sh/kernel/setup.c (setup_arch): Use set_thread_flag. -+ * arch/sh/kernel/fpu.c -+ (save_fpu,ieee_fpe_handler,do_fpu_state_restore): Likewise. -+ -+ * arch/sh/kernel/ptrace.c (sys_ptrace): Use set_tsk_thread_flag and -+ clear_tsk_thread_flag. -+ (do_syscall_trace): Follow the change of i386. -+ -+ * arch/sh/kernel/pci-dma.c (pci_alloc_consistent): Use virt_to_phys -+ instead of virt_to_bus. -+ -+ * arch/sh/kernel/init_task.c (init_thread_union): New variable. -+ -+ * arch/sh/kernel/entry.S (syscall_call): Rename from syscall_traced. -+ -+2002-02-27 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * drivers/char/joystick -> drivers/input/joystick. -+ * include/linux/input.h: Updated to version 1.57. -+ -+ * include/asm-sh/siginfo.h (SI_TKILL): Added. -+ * include/asm-sh/scatterlist.h (struct scatterlist): Remove member -+ address. -+ * include/asm-sh/pci.h (pci_map_sg, pci_dma_sync_sg): Follow struct -+ scatterlist interface change. -+ -+ * drivers/net/8139too.c: Merged version 0.9.24. -+ -+ * drivers/char/sh-sci.c (sci_ioctl TIOCGSERIAL): Set return code. -+ -+ * arch/sh/vmlinux.lds.S (.text.lock): Removed. -+ * arch/sh/kernel/signal.c (do_signal): Use sig_exit. -+ * Makefile: Version 2.5.4. Merged. -+ * arch/sh/kernel/entry.S (sys_tkill): Added. -+ * drivers/char/Makefile: Merged (Removed joystick). -+ * drivers/Makefile (subdir-$(CONFIG_SERIO), -+ subdir-$(CONFIG_GAMEPORT)): Merged. -+ -+2002-02-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.5.3. -+ * Makefile: Version 2.5.3 -+ * AGAINST-2.5.3: New file. -+ * AGAINST-2.5.3-pre5: Removed. -+ -+ * include/asm-sh/bitops.h (__ffs): Implemented. -+ -+ * include/asm-sh/mmu_context.h (sched_find_first_bit): Implemented -+ (copied i386 implementation). -+ (sched_find_first_zero_bit): Removed. -+ -+ * arch/sh/kernel/ptrace.c (sys_ptrace): Use ptrace_check_attach. -+ Replace PT_TRACESYS -> PT_SYSCALLTRACE. -+ -+ * arch/sh/kernel/entry.S (sys_call_table): Added entries. -+ Remove COMPAT_OLD_SYSCALL_ABI things. -+ Follow up to new member "task_work" in task_struct. -+ -+ * include/asm-sh/unistd.h (__NR_security, __NR_gettid, -+ __NR_setxattr, __NR_lsetxattr, __NR_fsetxattr, __NR_getxattr, -+ __NR_lgetxattr, __NR_fgetxattr, __NR_listxattr, __NR_llistxattr, -+ __NR_flistxattr, __NR_removexattr, __NR_lremovexattr, -+ __NR_fremovexattr): Added. -+ -+2002-02-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Merge changes in 2.5.3-pre6. -+ * Makefile (Drivers-y): Added drivers/base/base.o. -+ * drivers/Makefile (subdir-y): Added "base". -+ * drivers/char/Config.help (CONFIG_WATCHDOG): Added. -+ * arch/sh/Config.help (CONFIG_PCI_GOBIOS, CONFIG_KCORE_ELF, -+ CONFIG_SH_GENERIC, CONFIG_SH_SOLUTION_ENGINE, -+ CONFIG_SH_7751_SOLUTION_ENGINE, CONFIG_SH_HP620, CONFIG_SH_HP680, -+ CONFIG_SH_HP690, CONFIG_SH_CQREEK, CONFIG_SH_DMIDA, CONFIG_SH_EC3104, -+ CONFIG_SH_DREAMCAST, CONFIG_SH_UNKNOWN): Added. -+ -+2002-02-26 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/io_se.c (delay): More delay needed for -+ SolutionEngine SH7709A. -+ -+2002-01-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * init/main.c: Removed as it's same (2.5.2-pre10). -+ * include/linux/highmen.h: Removed as it's same (2.5.1). -+ -+2002-01-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/Config.help (CONFIG_CPU_SUBTYPE_SH7751, -+ CONFIG_CPU_SUBTYPE_ST40STB1) Added subtypes. -+ (CONFIG_SH_SH2000): Added a machine. -+ (CONFIG_SH_7751_SOLUTION_ENGINE,CONFIG_SH_CQREEK,CONFIG_SH_DMIDA, -+ CONFIG_SH_DREAMCAST,CONFIG_SH_EC3104,CONFIG_SH_GENERIC, -+ CONFIG_SH_HP620,CONFIG_SH_HP680,CONFIG_SH_HP690, -+ CONFIG_SH_OVERDRIVE,CONFIG_SH_SOLUTION_ENGINE,CONFIG_SH_UNKNOWN): -+ Added entries lost in transition to divided Config.help. -+ -+ * drivers/net/Config.help (CONFIG_8139TOO_DREAMCAST): Added. -+ -+2002-01-25 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.5.3-pre5. -+ * Documentation/Configure.help: Removed. -+ * arch/sh/Config.help: New file. -+ * drivers/cdrom/Config.help: New file. -+ * drivers/char/Config.help: New file. -+ * drivers/char/joystick/Config.help: New file. -+ * drivers/mtd/Config.help: New file. -+ * drivers/mtd/maps/Config.help: New file. -+ * drivers/net/Config.help: New file. -+ * drivers/net/8139too.c: Include changes from mainline (2.5.3-pre5). -+ * arch/sh/config.in: Include changes from mainline (2.5.3-pre5). -+ * Makefile: Version 2.5.3-pre5. -+ -+ * AGAINST-2.5.3-pre5: New file. -+ * AGAINST-2.5.3-pre4: Removed. -+ -+2002-01-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * arch/sh/kernel/process.c: Include <linux/a.out.h>. -+ * arch/sh/kernel/signal.c: <linux/tty.h>. -+ * include/asm-sh/mmu_context.h (sched_find_first_zero_bit): Follow -+ the change of i386 version in 2.5.3-pre4. -+ -+2002-01-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.5.3-pre4. -+ * Documentation/Configure.help, Documentation/cachetlb.txt, -+ arch/sh/vmlinux.lds.S, arch/sh/kernel/init_task.c, -+ arch/sh/kernel/process.c, arch/sh/mm/cache-sh4.c, -+ arch/sh/mm/fault.c, arch/sh/vmlinux.lds.S, drivers/net/Config.in, -+ drivers/pcmcia/hd64465_ss.c, drivers/video/hitfb.c, -+ drivers/video/pvr2fb.c, include/asm-sh/ide.h, include/asm-sh/pci.h, -+ include/asm-sh/pgalloc.h, include/asm-sh/pgtable.h, -+ include/linux/highmem.h, init/main.c, mm/memory.c: -+ Include changes from mainline (2.5.3-pre4). -+ -+ * AGAINST-2.5.3-pre4: New file. -+ * AGAINST-2.5.2: Removed. -+ -+2002-01-24 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * kernel/ptrace.c (access_process_vm): Added flush_dcache_page -+ lost in 2.5.2 merge. -+ -+2002-01-19 Paul Mundt <lethal@chaoticdreams.org> -+ -+ * arch/sh/kernel/io_7751se.c: Typo. Rename CHECK_SH_7751_PCIIO to -+ CHECK_SH7751_PCIIO, so 7751se can build with CONFIG_PCI=n. -+ -+ * include/net/inet_ecn.h: Addin #ifdef sanity that was lost in 2.4.14. -+ This allows us to build with CONFIG_INET=n. -+ -+2002-01-20 NIIBE Yutaka <gniibe@m17n.org> -+ -+ * include/asm-sh/pci.h (PCI_DMA_BUS_IS_PHYS): Added. -+ -+2002-01-15 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.5.2. -+ * init/main.c (rest_init): Remove call of init_idle(). -+ * drivers/net/8139too.c: Include <linux/crc32.h>, remove -+ ether_crc and ethernet_polynomial. -+ * arch/sh/config.in: source lib/Config.in. -+ -+ * AGAINST-2.5.2: New file. -+ * AGAINST-2.5.1: Removed. -+ -+2002-01-08 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.5.2-pre10. -+ * Makefile, Documentation/Configure.help, arch/sh/kernel/process.c, -+ arch/sh/kernel/setup.c, drivers/block/rd.c, drivers/char/sh-sci.c, -+ drivers/char/shwdt.c, init/do_mounts.c, init/main.c, kernel/ptrace.c, -+ mm/memory.c: Include changes from mainline (2.5.2-pre10). -+ -+ * drivers/cdrom/gdrom.c (DEVICE_NR): MINOR -> minor. -+ (gdrom_init): MKDEV -> mk_kdev. -+ * arch/sh/mm/fault.c (do_page_fault): Use yield. -+ -+ * include/asm-sh/mmu_context.h (sched_find_first_zero_bit): -+ Implemented. (Just copied from x86 implementation.) -+ -+ * arch/sh/kernel/setup.c (sh_console_device): Returns /dev/null. -+ -+ * arch/sh/kernel/irq.c: Include <linux/mm.h>. -+ * arch/sh/kernel/process.c: Include <linux/mm.h>. -+ (cpu_idle): Don't call init_idle here. Remove setting of ->nice. -+ -+2002-01-05 NIIBE Yutaka <gniibe@m17n.org> -+ -+ Updated to 2.5.1. -+ * Makefile, arch/sh/kernel/irq.c, drivers/block/rd.c, -+ drivers/net/8139too.c, include/linux/highmem.h, init/main.c, -+ mm/memory.c: Include changes from mainline (2.5.1). -+ -+ * init/do_mounts.c: New file from mainline with changes for GD-ROM. -+ -+ * AGAINST-2.5.1: New file. -+ * AGAINST-2.5.0: Removed. -+ -+ * include/asm-sh/scatterlist.h: Followed x86 version. -+ -+Local Variables: -+mode: change-log -+left-margin: 8 -+fill-column: 76 -+version-control: never -+End: -diff -ruN linux-2.6.17-vanilla/ChangeLog-2003 linux-2.6.17/ChangeLog-2003 ---- linux-2.6.17-vanilla/ChangeLog-2003 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/ChangeLog-2003 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,1409 @@ -+2003-12-18 Paul Mundt <lethal@linux-sh.org> -+ -+ * mm/mmap.c, Makefile: Merge 2.6.0. -+ -+2003-11-28 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * include/asm-sh/ptrace.h (struct pt_regs): Remove expevt field. -+ * arch/sh/kernel/ptrace.c (get_stack_long): Count EXPEVT slot and -+ DSP case. -+ (put_stack_long): Likewise. -+ * arch/sh/kernel/process.c (dump_task_regs): Likewise. -+ (copy_thread): Likewise. -+ -+2003-11-28 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * include/asm-sh/kgdb.h (kgdb_flush_icache_range): Define. -+ * arch/sh/kernel/kgdb_stub.c (get_step_address): Use it. -+ (do_single_step, undo_single_step, write_mem_msg): Likewise. -+ * include/asm-sh/processor.h (struct thread_struct): Add -+ ubc_pc field. -+ * arch/sh/kernel/process.c (ubc_usercnt): New variable. -+ (exit_thread): Clear ubc_pc if required. -+ (copy_thread): Initialize ubc_pc. -+ (ubc_set_tracing): New. -+ (__switch_to): Call ubc_set_tracing if needed. -+ (break_point_trap): Clear ubc_pc. -+ * arch/sh/kernel/ptrace.c (compute_next_pc): Remove. -+ (ubc_set_tracing): Likewise. -+ (sys_ptrace) [PTRACE_SINGLESTEP]: Only set ubc_pc here. -+ -+2003-11-26 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile: Merge 2.6.0-test11. -+ -+2003-11-25 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * include/asm-sh/ptrace.h (struct pt_regs): Add expevt field. -+ -+2003-11-23 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile, drivers/ide/Kconfig, drivers/ide/pci/alim15x3.c, -+ drivers/net/8139too.c, include/linux/pci_ids.h, mm/memory.c: -+ Merge 2.6.0-test10. -+ -+2003-11-18 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/entry.S (tlb_miss_load, tlb_miss_store, -+ initial_page_write, tlb_protection_violation_load, -+ tlb_protection_violation_store, address_error_load, -+ address_error_store, system_call): Make these global, so we can -+ reference them externally for the exception handling table. -+ (none): Renamed to exception_none. -+ (error): Renamed to exception_error. -+ (exception_handling_table): Removed. Now defined per-processor -+ family. -+ -+ * arch/sh/kernel/cpu/sh3/Makefile: Add ex.o rule. -+ * arch/sh/kernel/cpu/sh3/ex.S: SH-3 exception handling table. -+ -+ * arch/sh/kernel/cpu/sh4/Makefile: Add ex.o rule. -+ * arch/sh/kernel/cpu/sh4/ex.S: SH-4 exception handling table. -+ -+2003-11-17 PAul van Gool <pvangool@mimotech.com> -+ -+ * arch/sh/configs/defconfig-se7751: Changed default config for -+ SolutionEngine 7751(R) boards so default Linux 2.6.0-test9 builds -+ run on those boards. -+ -+2003-11-14 Richard Curnow <richard.curnow@superh.com> -+ -+ * arch/sh/kernel/traps.c (trap_init): If there's no FPU (or it's -+ disabled) on the SH-4, treat the FPUDIS and SLOTFPUDIS exceptions -+ as reserved. -+ -+2003-11-11 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * include/asm-sh/cpu-sh2/sigcontext.h: New file. -+ * include/asm-sh/cpu-sh3/sigcontext.h: Likewise. -+ * include/asm-sh/cpu-sh4/sigcontext.h: Likewise. -+ * include/asm-sh/sigcontext.h: Remove the definition of -+ sigcontext struct and include cpu specific sigcontext.h. -+ -+2003-11-10 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/cpu/sh4/sq.c (__sq_remap, sq_unmap): Build fixes -+ for MMUless. -+ -+2003-10-31 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/mm/init.c (paging_init): Clear the size of normal zone -+ if all pages are in dma zone. -+ -+2003-10-29 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/entry.S (CLI): Added. Consolidate CLI. -+ (resume_kernel, preempt_stop): Added. CONFIG_PREEMPT works again. -+ (ret_from_exception): Move above ret_from_irq and call preempt_stop(). -+ -+ * TODO: Preemption works now, take it off the TODO list.. -+ -+2003-10-29 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * include/asm-sh/ptrace.h (REG_FPREG0, REG_FPREG15, REG_XFREG0, -+ REG_FPSCR, REG_FPUL): Change so to match user.h struct. -+ -+2003-10-25 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/char/keyboard.c, drivers/char/Makefile, Makefile, -+ drivers/char/tty_io.c, mm/memory.c, mm/mmap.c: Merge 2.6.0-test9. -+ -+ * arch/sh/mm/Makefile: Don't build regular copy/clear_page.S when -+ we don't have an MMU. -+ * arch/sh/mm/pg-nommu.c: New file. clear_page()/copy_page() without -+ an MMU. -+ -+ * include/asm-sh/page.h: Wrap clear_user_page()/copy_user_page() -+ to clear_page()/copy_page() when building for !CONFIG_MMU. -+ -+2003-10-18 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add CONFIG_MAPLE back in. -+ -+ * drivers/maple/Makefile: Fix for 2.6. -+ * drivers/maple/maple.c (maple_freeq): Removed. This is only called -+ once, and kfree() does all of this for us already.. -+ (kmapled_thread): Drop the BKL, fixup damonize() / tsk->comm for 2.6, -+ and finally, allow for SIGKILL from userspace. -+ -+2003-10-18 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/entry.S (sys_call_table): Reserve an entry. -+ * include/asm-sh/unistd.h (__NR_vserver): Define. -+ (NR_syscalls): Update. -+ * arch/sh/kernel/irq.c (disable_irq): Call synchronize_irq only -+ if the action is not NULL. -+ (enable_irq): Drop IRQ_INPROGRESS bit from status if depth is 1. -+ * arch/sh/kernel/traps.c (show_stack): Use kstack_end. -+ -+2003-10-17 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/char/tty_io.c, drivers/net/8139too.c, Makefile: -+ Merge 2.6.0-test8. -+ -+ * net/sunrpc/clnt.c: Deleted, merged into mainline.. -+ -+2003-10-14 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/entry.S, arch/sh/kernel/sh_ksyms.c, -+ arch/sh/kernel/cpu/sh4/sq.c: MMUless cleanups. -+ -+ * include/asm-sh/flat.h: New file (needed for binfmt_flat). -+ -+2003-10-13 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/boards/dreamcast/setup.c, arch/sh/kernel/irq.c, -+ arch/sh/kernel/process.c, arch/sh/kernel/setup.c, -+ arch/sh/kernel/signal.c, arch/sh/kernel/sys_sh.c, -+ drivers/char/sh-sci.c, include/asm-sh/ipc.h, include/asm-sh/irq.h, -+ include/asm-sh/uaccess.h, include/asm-sh/unistd.h: Random cleanup -+ of bugs encountered by sparse (mostly __user annotations). -+ -+2003-10-12 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/entry.S (exception_handling_table): Label exception -+ codes, thoroughly. Add TMU3 and TMU4 vectors for 7751, and also add -+ 7760 vectors. -+ -+ * drivers/char/sh-sci.[ch]: Add 7760 support. -+ -+ * arch/sh/Kconfig, arch/sh/Makefile, arch/sh/tools/mach-types: Add -+ CONFIG_SH_7751_SYSTEMH rules. -+ -+ * arch/sh/boards/systemh/Makefile, arch/sh/boards/systemh/io.c, -+ arch/sh/boards/systemh/irq.c, arch/sh/boards/systemh/setup.c, -+ include/asm-sh/systemh/7751systemh.h, include/asm-sh/systemh/io.h: -+ Add SystemH 7751R support (ported from MPC Data's 2.4.18 tree). -+ -+ * arch/sh/configs/defconfig-systemh: Provide a rough defconfig. -+ -+2003-10-10 Paul van Gool <pvangool@mimotech.com> -+ -+ * arch/sh/boards/se/7751/pci.c: Replaced compile-time check -+ 'PCIBIOS_MIN_MEM != SH7751_PCI_MEMORY_BASE' with a runtime -+ check (BUG_ON()). -+ -+2003-10-09 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/drivers/dma/dma-pvr2.c (pvr2_get_dma_residue): Added. -+ (pvr2_dma_interrupt): Set xfer_complete when the completion -+ interrupt fires. -+ -+ * drivers/video/pvr2fb.c (pvr2fb_open, pvr2fb_release): Removed. -+ (pvr2fb_dc_init): Do request_dma() for pvr2 channel here instead. -+ (pvr2fb_dc_exit): Likewise for free_dma(). -+ -+ * arch/sh/kernel/time.c (sched_clock): Cloned from v850. -+ -+ * net/sunrpc/clnt.c (call_verify): Compile fix. Make all users of -+ task->tk_pid use dprintk(). -+ -+ * Makefile, Documentation/cachetlb.txt, arch/sh/kernel/init_task.c, -+ arch/sh/kernel/irq.c, arch/sh/kernel/process.c, arch/sh/kernel/time.c, -+ arch/sh/kernel/traps.c, arch/sh/mm/init.c, arch/sh/mm/ioremap.c, -+ drivers/char/generic_serial.c, drivers/char/tty_io.c, -+ drivers/ide/Kconfig, drivers/serial/Kconfig, drivers/video/Kconfig, -+ fs/nfs/inode.c, include/asm-sh/cacheflush.h, include/asm-sh/mmzone.h, -+ include/asm-sh/pgtable.h, include/asm-sh/bigsur/serial.h, -+ include/asm-sh/ec3104/serial.h, include/linux/mm.h, mm/memory.c, -+ mm/mmap.c: Merge 2.6.0-test7. -+ -+ * Makefile, arch/sh/Kconfig, arch/sh/kernel/setup.c, -+ drivers/char/Makefile, drivers/char/keyboard.c, drivers/char/sysrq.c, -+ drivers/char/tty_io.c, drivers/ide/Kconfig, drivers/serial/Kconfig, -+ drivers/serial/Makefile, drivers/video/Kconfig, include/asm-sh/mman.h, -+ include/asm-sh/posix_types.h, include/asm-sh/processor.h, -+ include/asm-sh/signal.h include/linux/input.h, -+ include/linux/miscdevice.h, include/linux/mm.h, mm/memory.c, -+ mm/mmap.c: Merge 2.6.0-test6. -+ -+2003-10-08 Paul van Gool <pvangool@mimotech.com> -+ -+ * arch/sh/boards/se/7751/pci.c: Since PCIBIOS_MIN_MEM is no -+ longer a hardcoded define, we can no longer use it with the -+ preprocessor. -+ -+ * arch/sh/drivers/pci/pci-sh7751.c: Include linux/delay.h to get -+ definition of mdelay. -+ -+2003-10-08 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/video/pvr2fb.c (pvr2fb_open, pvr2fb_release, pvr2fb_write): -+ Added zero-copy DMA when CONFIG_SH_DMA is set. -+ (pvr2fb_common_init): Map through the store queues when we have -+ CONFIG_SH_STORE_QUEUES set. -+ -+2003-10-01 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/signal.c (OR_R0_R0): Define. -+ (struct sigframe): Extend retcode to hold 8 instructions. -+ (struct rt_sigframe): Likewise. -+ (setup_frame): Put 5 "or r0,r0" instructions to avoid an SH-4 -+ core bug. Flush more cache line if needed. -+ (setup_rt_frame): Likewise. -+ -+2003-09-30 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/drivers/dma/Kconfig: Add a couple of options, clean up -+ channel number selection for both on-chip and off-chip channels. -+ -+ * arch/sh/drivers/dma/dma-sh.c: Relatively large batch of changes. -+ Dropped SAR/DAR/CHCR/DMATCR[] usage and went to a direct mapping of -+ the registers directly. We now support all 8 channels of the 7751R. -+ -+ * arch/sh/drivers/dma/dma-sh.h: Define MAX_DMAC_CHANNELS (wrap to -+ CONFIG_NR_ONCHIP_DMA_CHANNELS). -+ -+ * arch/sh/entry.S (interrupt_table): Add hooks for DMTE4-7 on the -+ 7751R. -+ -+ * include/asm-sh/dma.h: Cleanup MAX_DMA_CHANNELS definition based -+ off of config options. -+ -+ * include/asm-sh/irq.h: Add DMTE4-7 definitions. -+ -+ * include/asm-sh/cpu-sh3/dma.h: Kill off old definitions. Define -+ SH_DMAC_BASE. -+ * include/asm-sh/cpu-sh4/dma.h: Same here. -+ -+2003-09-23 Sean McGoogan <Sean.McGoogan@superh.com> -+ -+ * arch/sh/kernel/entry.S: preserve EXPEVT across nested interrupts. -+ -+ * arch/sh/kernel/cpu/sh4/fpu.c: Ensure that FPSCR.PR == FPSCR.SZ == 1 -+ never occurs. -+ -+2003-09-22 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/drivers/pci/pci-sh7751.c: Fixup pci-sh7751.h path. -+ -+ * arch/sh/boards/snapgear/io.c: Same here. -+ -+ * arch/sh/mm/cache-sh4.c (detect_cpu_and_cache_system): Add run-time -+ probing for the SH7760 and the SH4-202. Force EMODE on subtypes that -+ have it available. -+ -+ * include/asm-sh/processor.h: Add CPU_SH7760 and CPU_SH4_202 -+ definitions. -+ -+2003-09-22 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/signal.c (MOVW, TRAP16): Define. -+ (struct sigframe): Change retcode so to hold 3 words. -+ (struct rt_sigframe): Likewise. Remove pinfo and puc members. -+ (setup_frame): Use mov.w 1f,r3; trap #0x10; 1: .word N sequence -+ in trampoline. -+ (setup_rt_frame): Likewise. Don't set pinfo and puc of frame. -+ -+2003-09-21 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add a sane default for SH7751 PCLK value. -+ -+ * arch/sh/boards/bigsur/Makefile: Remove pci.o -+ * arch/sh/boards/bigsur/pci.c: Ported for new SH7751 PCI changes, and -+ moved .. -+ * arch/sh/drivers/pci/ops-bigsur.c: here. -+ -+ * arch/sh/boards/snapgear/Makefile, arch/sh/boards/snapgear/pci.c, -+ arch/sh/drivers/pci/ops-snapgear.c: Same changes as for BigSur. -+ -+ * arch/sh/drivers/pci/Makefile: Add bigsur/snapgear ops. -+ -+ * arch/sh/mm/init.c: Include linux/pagemap.h, shut up compiler. -+ -+ * include/asm-sh/pci-sh7751.h: Added changes for new interface, and -+ moved .. -+ * arch/sh/drivers/pci/pci-sh7751.h: here. -+ -+ * arch/sh/drivers/pci/pci-sh7751.c: Fixup pci_probe definition, we -+ don't deal with anything other then conf1 access, so drop the unused -+ flags. -+ (__area_sdram_check): Added. Responsible for BCR1/BCR2 validation -+ for a given area. -+ (sh7751_pcic_init): Added. Do general purpose initialization here. -+ window0/window1 values are passed in in the form of an address map -+ structure. Any boards doing this type of general initialization -+ should be using this code instead (so far BigSur and SnapGear boards, -+ though this will also include the SystemH 7751R). -+ (pcibios_setup): Get rid of conf1 and rom args, as they aren't used. -+ -+ * include/asm-sh/pci.h: Get rid of hardcoded PCIBIOS_MIN_{IO,MEM} -+ definitions. Wrap these to their respective resources in -+ board_pci_channels instead. -+ -+ * drivers/serial/sh-sci.c: Updates for new SH-SCI driver. -+ -+2003-09-18 David McCullough <davidm@snapgear.com> -+ -+ * arch/sh/boards/snapgear/pci/pci.c: fixup the memory and IO regions -+ to get PCI working. -+ -+2003-09-17 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/drivers/pci/pci-sh7751.c (sh7751_pci_write): Fixup error -+ path where interrupts weren't getting reenabled. -+ -+2003-09-16 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/drivers/dma/Makefile: Add dma-isa.o and dma-g2.o. -+ * arch/sh/drivers/dma/dma-isa.c: New file (provides wrapper for old -+ ISA DMA API to new DMA API). -+ -+ * arch/sh/drivers/dma/dma-g2.c: New file (adds preliminary support -+ for G2 DMA -- currently being tested for SPU DMA, though there -+ are still some issues with the interrupt not firing correctly). -+ -+ * include/asm-sh/dma.h (claim_dma_lock, release_dma_lock): Moved to -+ dma-isa.c. -+ -+2003-09-08 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile, arch/sh/Kconfig, arch/sh/boards/dmida/mach.c, -+ arch/sh/boards/dreamcast/irq.c, arch/sh/boards/ec3104/irq.c, -+ arch/sh/boards/harp/mach.c, arch/sh/boards/hp6xx/hp620/mach.c, -+ arch/sh/boards/hp6xx/hp680/mach.c, arch/sh/boards/hp6xx/hp690/mach.c, -+ arch/sh/boards/overdrive/mach.c, arch/sh/boards/saturn/irq.c, -+ arch/sh/boards/unknown/mach.c, arch/sh/kernel/cpufreq.c, -+ drivers/Makefile, drivers/char/generic_serial.c, -+ drivers/char/tty_io.c, drivers/ide/Kconfig, drivers/video/Kconfig, -+ drivers/ide/pci/alim15x3.c, drivers/net/8139too.c, -+ drivers/pci/pci.ids, drivers/serial/Kconfig, drivers/serial/Makefile, -+ drivers/video/Makefile, drivers/video/fbmem.c, fs/nfs/inode.c, -+ include/asm-sh/semaphore.h, include/linux/miscdevice.h, -+ include/linux/mm.h, include/linux/pci_ids.h, mm/memory.c, -+ mm/mmap.c: Merge 2.6.0-test5. -+ -+2003-09-06 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Reorder CPU family / subtype selection. -+ -+2003-09-06 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/lib/div64-generic.c (__div64_32): Bug fix. -+ -+2003-09-03 TAKANO Nobuyuki <n_takano@sas-tokyo.co.jp> -+ Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * drivers/char/sh-sci.c (sci_init_pins_scif): Mask correct -+ bits of SCPCR. -+ (sci_set_real_termios): Don't change TTY_HW_COOK_IN and -+ TTY_HW_COOK_OUT flags. -+ * drivers/char/sh-sci.h (O_OTHER, I_OTHER): Remove. -+ -+2003-09-02 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/signal.c (setup_frame): Set additional arguments -+ for the signal handler correctly. -+ (setup_rt_frame): Likewise. -+ -+2003-09-01 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add CONFIG_SH_DSP. -+ -+ * arch/sh/kernel/entry.S: Save and restore DSP registers when -+ CONFIG_SH_DSP is set. -+ * arch/sh/kernel/head.S: Do initial callin to sh_cpu_init instead -+ of sh_cache_init. -+ -+ * arch/sh/kernel/ptrace.c: Add PTRACE_SETDSPREGS/PTRACE_GETDSPREGS -+ cases to copyin/out dsp regs. -+ -+ * arch/sh/kernel/setup.c (setup_arch): Remove UBC and FPU setup, -+ this is done at sh_cpu_init() time instead. -+ -+ * arch/sh/kernel/traps.c (is_dsp_init): Added. -+ (do_reserved_inst, do_illegal_slot_inst): Check for DSP instruction -+ when CONFIG_SH_DSP is set. -+ -+ * arch/sh/kernel/cpu/Makefile: Add init.o. -+ * arch/sh/kernel/cpu/init.c: New file. Do initial CPU init here. -+ Add DSP init code. -+ -+ * arch/sh/mm/init.c (sh_cache_init): Moved to arch/sh/kernel/cpu/init.c -+ -+ * include/asm-sh/processor.h: Add CPU_HAS_DSP flag. -+ * include/asm-sh/ptrace.h: Add DSP regs. -+ -+ * arch/sh/kernel/irq.c (probe_irq_on): Convert the last remaining -+ synchronize_irq() to barrier(). -+ -+ * arch/sh/kernel/smp.c: Convert cpu_online_map and cpu_possible_map -+ to cpumask_t. -+ (__cpu_up): Use copy_process() instead of do_fork() to manually fork -+ idle task on cpu. -+ (start_secondary): Setup VBR properly for secondary cpu, and also -+ increment cpus_booted. -+ (stop_this_cpu): cpu_relax() in busy loop. -+ -+ * include/asm-sh/spinlock.h: Add a RW_LOCK_BIAS definition, update -+ RW_LOCK_UNLOCKED to initialize the counter with the bias. -+ (rwlock_is_locked): Use atomic_read() to look at counter value. -+ (_raw_write_trylock): New function. Mostly cloned from x86_64. -+ -+ * include/asm-sh/smp.h (cpu_online, cpu_possible): Use cpu_isset() -+ to work with new cpumask_t types for the maps. -+ (num_online_cpus): Removed. -+ -+2003-08-31 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/entry.S (sys_call_table): Add fadvise64_64 syscall. -+ * arch/sh/kernel/sys_sh.c (sys_fadvise64_64_wrapper): New. -+ * include/asm-sh/unistd.h: Add fadvise64_64 syscall. -+ -+2003-08-27 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/net/Kconfig: Kill off CONFIG_8139TOO_DREAMCAST. -+ * drivers/net/8139too.c: Likewise. Get rid of SEGABBA references, -+ use RTL8139 instead. Also use USE_BUF16K for rx ring buffer size -+ selection. -+ -+2003-08-25 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/drivers/dma/Makefile, arch/sh/drivers/dma/dma-api.c, -+ arch/sh/drivers/dma/Kconfig, arch/sh/drivers/dma/dma-pvr2.c, -+ arch/sh/drivers/dma/dma-sh.[ch]: Added new DMA subsystem with -+ drivers for the SH DMAC and the DC PVR2. -+ -+ * arch/sh/kernel/cpu/Makefile: Remove dma.c. -+ * arch/sh/kernel/cpu/dma.c: Deleted. -+ -+ * arch/sh/mm/Makefile: Add rule for pg-dma.c. -+ * arch/sh/mm/pg-dma.c: Added. This implemented optimized versions -+ of copy_page() and clear_page() using the SH DMAC (selectable with -+ CONFIG_DMA_PAGE_OPS). -+ * arch/sh/mm/clear_page.S (clear_page): Renamed to clear_page_slow. -+ * arch/sh/mm/copy_page.S (copy_page): Renamed to copy_page_slow. -+ * arch/sh/mm/init.c: Add copy_page/clear_page function pointers, -+ assign these to the _slow routines at startup, override them later -+ when something better (ie, DMA) comes along. -+ -+ * include/asm-sh/dma.h: Rewritten entirely. -+ * include/asm-sh/page.h: Fixup copy/clear_page definitions. -+ * include/asm-sh/processor.h (cpu_relax): Get rid of the barrier() -+ wrapper, use sleep instead, this tends to be more friendly when -+ it comes to power consumption, and gives us something meaningful -+ to do in a busy loop. -+ -+2003-08-23 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/pci/pci.c (pcibios_enable_device): Use pci_name() instead -+ of dev->dev.name/slot_name. -+ (pcibios_set_master): Likewise. -+ -+ * arch/sh/vmlinux.lds.S: Moved .. -+ * arch/sh/kernel/vmlinux.lds.S: here. -+ -+ * arch/sh/boot/compressed/Makefile: Fixup vmlinux.lds.s path. -+ -+ * Makefile, arch/sh/kernel/Makefile, drivers/Makefile, -+ drivers/char/keyboard.c, drivers/ide/Kconfig, -+ drivers/ide/pci/alim15x3.c, drivers/mtd/maps/Kconfig, -+ drivers/net/8139too.c, drivers/net/Kconfig, -+ drivers/pcmcia/hd64465_ss.c, fs/nfs/inode.c, -+ include/linux/mm.h, include/linux/pci_ids.h, -+ kernel/timer.c, mm/memory.c: Merge 2.6.0-test4. -+ -+2003-08-22 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/Kconfig: Rename BOOT_LINK_ADDR to BOOT_LINK_OFFSET. -+ * arch/sh/boot/compressed/Makefile: Likewise. -+ -+2003-08-14 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/Kconfig: Add BOOT_LINK_ADDR. Add '0x' prefix to hex -+ parameters. -+ * arch/sh/Makefile: Remove bzImage target. -+ * arch/sh/boot/Makefile: Likewise. -+ * arch/sh/boot/compressed/Makefile: Likewise. Compute IMAGE_OFFSET -+ with BOOT_LINK_ADDR option. -+ * arch/sh/configs/defconfig-adx: Add '0x' prefix to hex parameters. -+ * arch/sh/configs/defconfig-cqreek: Likewise. -+ * arch/sh/configs/defconfig-dreamcast: Likewise. -+ * arch/sh/configs/defconfig-se7751: Likewise. -+ -+2003-08-11 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/Makefile: Add bzImage support. -+ * arch/sh/boot/Makefile: Likewise. -+ * arch/sh/boot/compressed/Makefile: Likewise. -+ * arch/sh/boot/compressed/head.S: Likewise. Revived. -+ -+2003-08-09 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile, arch/sh/defconfig, arch/sh/boards/dreamcast/pci.c, -+ arch/sh/boards/mpc1211/pci.c, arch/sh/boards/overdrive/galileo.c, -+ arch/sh/configs/defconfig-adx, arch/sh/configs/defconfig-cqreek, -+ arch/sh/mm/cache-sh2.c, arch/sh/mm/cache-sh3.c, -+ drivers/char/tty_io.c, drivers/char/watchdog/shwdt.c, -+ drivers/ide/Kconfig, drivers/ide/pci/alim15x3.c, -+ drivers/net/8139too.c, drivers/net/Kconfig, drivers/pci/pci.ids, -+ drivers/serial/Kconfig, include/asm-sh/processor.h, -+ include/linux/pci_ids.h, mm/memory.c: Merge 2.6.0-test3. -+ -+2003-08-05 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add CONFIG_PCI_AUTO_UPDATE_RESOURCES to -+ have the PCI auto code update BARs automatically. This is -+ the default for just about everyone, read the help text for -+ more information. -+ -+ * arch/sh/kernel/pci.c (pcibios_init): Remove pcibios_fixup(). -+ (pcibios_update_resource): Use pci_name() to access dev->slot_name. -+ (pcibios_enable_device): Same here. -+ -+ * arch/sh/kernel/pci_auto.c (pciauto_setup_bars): Manually preserve -+ the existing BAR value when trying to figure out the BAR size. Only -+ change the BAR value when CONFIG_PCI_AUTO_UPDATE_RESOURCES is set. -+ -+ * arch/sh/boards/dreamcast/pci.c: Rewritten. -+ -+ * include/linux/pci_ids.h: Add PCI_DEVICE_ID_SEGA_BBA as well as -+ PCI_VENDOR_ID_SEGA. -+ -+2003-08-04 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Makefile: Add arch/sh/pci/. -+ -+ * arch/sh/kernel/cpu/sh4/pci-sh7751.c: Moved to arch/sh/pci/. -+ * arch/sh/kernel/cpu/sh4/pci-st40.[ch]: Same here. -+ -+2003-08-02 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/cchips/hd6446x/hd6446{1,5}/io.c (hd6446{1,5}_insb, -+ hd6446{1,5}_insw, hd6446{1,5}_insl, hd6446{1,5}_outsb, -+ hd6446{1,5}_outsw, hd6446{1,5}_outsl): Deleted. Use the generic -+ functions. -+ -+ * arch/sh/cchips/hd6446x/hd6446{1,5}/setup.c: Cleanup irq -+ return values for new API. -+ -+ * include/asm-sh/hd6446{1,5}/io.h: Remove unused I/O functions. -+ -+ * arch/sh/boards/snapgear/io.c (snapgear_insb, snapgear_insw, -+ snapgear_outsb, snapgear_outsw): Deleted. We can use the -+ generic functions here as well. -+ -+ * include/asm-sh/snapgear/io.h: Remove unused I/O functions. -+ -+ * arch/sh/boards/se/77{0x,51}/io.c (se_readb, se_readw, se_readl, -+ se_writeb, se_writew, se_writel): Deleted. We can use the -+ generic interface for this instead. -+ -+ * arch/sh/boards/se/77{0x,51}/mach.c: Remove the aforementioned -+ I/O functions + c99 initializers. -+ -+ * include/asm-sh/se{,7751}/io.h: Remove unused I/O functions. -+ -+ * arch/sh/kernel/cpu/sh4/pci-sh7751.c -+ (sh7751_pci_read, sh7751_pci_write): Do general cleanup, -+ simplify read and write operations in general. Fixes a -+ bug with getting bogus data back on my 7751R board. -+ -+2003-08-01 Paul van Gool <pvangool@mimotech.com> -+ -+ * arch/sh/boards/se/7751/pci.c: Should allow for more than -+ 1 PCI device. Changed last devfn from 1 to 0xff. -+ -+2003-07-31 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Makefile, arch/sh/boards/snapgear/Makefile, -+ arch/sh/boards/snapgear/io.c, arch/sh/boards/snapgear/pci.c -+ arch/sh/boards/snapgear/rtc.c, arch/sh/boards/snapgear/setup.c, -+ arch/sh/tools/mach-types, drivers/net/8139too.c, -+ include/asm-sh/irq.h, include/asm-sh/mc146818rtc.h, -+ include/asm-sh/pci.h, include/asm-sh/rtc.h, -+ include/asm-sh/snapgear/io.h: Add SecureEdge5410 support. -+ -+ * arch/sh/kernel/cpu/sh4/pci-sh7751.c: Ported to new PCI Auto -+ API. -+ -+2003-07-31 Paul van Gool <pvangool@mimotech.com> -+ -+ * arch/sh/boards/se/7751/pci.c: Added empty pcibios_fixup -+ function. Added pci_channel definition for SE7751(R) board. -+ -+2003-07-29 Paul Mundt <lethal@linux-sh.org> -+ -+ * include/asm-sh/bigsur/io.h, include/asm-sh/mpc1211/io.h, -+ include/asm-sh/hd64465/io.h, include/asm-sh/overdrive/io.h, -+ include/asm-sh/hd64461/io.h, include/asm-sh/adx/io.h, -+ include/asm-sh/ec3104/io.h, include/asm-sh/cat68701/io.h, -+ include/asm-sh/dreamcast/io.h, include/asm-sh/se/io.h, -+ include/asm-sh/saturn/io.h, include/asm-sh/sh2000/io.h, -+ include/asm-sh/se7751/io.h: Kill off I/O definitions and -+ general __WANT_IO_DEF mess, we grab these implicitly through -+ the machvec now. -+ -+ * include/asm-sh/io.h: Bit of a policy change, we now force -+ _everything_ through the machine vector. Each board already -+ provides its own definitions for what it wants, there's no -+ reason to have to repeat this in every board's io.h. -+ -+ (__set_io_port_base): Added. We use this for setting a -+ common port base that can then be used by the generic -+ isa_port2addr implementation. -+ -+ * arch/sh/kernel/setup.c (sh_mv_setup): Wrap the mv_io_base -+ assignment to use __set_io_port_base(). -+ -+ * arch/sh/boards/dreamcast/Makefile: Remove io.c -+ * arch/sh/boards/dreamcast/setup.c: Get rid of dreamcast -+ specific isa_port2addr implementation, we use the generic -+ one now. -+ -+ (platform_setup): Init the port base with __set_io_port_base(). -+ -+ * arch/sh/boards/dreamcast/io.c: Deleted. -+ -+ * include/asm-sh/dreamcast/io.h: Deleted. -+ -+2003-07-28 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/char/watchdog/shwdt.c (sh_wdt_open): Get rid of -+ MOD_INC_USE_COUNT. Use __module_get() for module refcounting -+ instead. -+ -+ * arch/sh/kernel/setup.c (setup_arch): Get rid of machvec -+ setup code. -+ (sh_mv_setup): Added. Move setup code here. Also walk the -+ sh_mv and manually load up generic routines for anything -+ that board-specific code hasn't filled in. -+ -+ * arch/sh/boards/dreamcast/Makefile: Remove mach.c -+ * arch/sh/boards/dreamcast/mach.c: Deleted. -+ * arch/sh/boards/dreamcast/setup.c: Move mv definition here, -+ also clean it up for the new changes. -+ -+ * arch/sh/boards/saturn/Makefile: Remove mach.c -+ * arch/sh/boards/saturn/mach.c: Deleted. -+ * arch/sh/boards/saturn/setup.c: Follow the dreamcast change -+ here as well. -+ -+ * arch/sh/boards/mpc1211/Makefile: Remove mach.c -+ * arch/sh/boards/mpc1211/rtc.c (mpc1211_time_init): Added. -+ Wrap rtc definitions to rtc_{get,set}_time, and init them -+ properly. -+ * arch/sh/boards/mpc1211/setup.c: Add rtc timer init code, -+ and follow the other boards for mv changes. -+ * arch/sh/boards/mpc1211/mach.c: Deleted. -+ -+ * arch/sh/boards/cqreek/Makefile, arch/sh/boards/cqreek/mach.c, -+ arch/sh/boards/cqreek/setup.c: Follow mv changes. -+ -+ * arch/sh/boards/sh2000/Makefile, arch/sh/boards/sh2000/mach.c, -+ arch/sh/boards/sh2000/setup.c: Follow mv changes. -+ -+ * arch/sh/boards/hp6xx/hp680/mach.c: Remove generic_ and -+ sh_rtc_xxx references, since this is handled for us now. -+ * arch/sh/boards/hp6xx/hp690/mach.c: Same here. -+ -+ * arch/sh/boards/overdrive/mach.c: And here. -+ -+ ... and the same for the rest of the boards, so we won't bother -+ listing them all here again. Look at linuxsh-cvs for this date -+ if you really care. -+ -+ * include/asm-sh/machvec.h: Remove several unused functions. -+ -+2003-07-28 Paul van Gool <pvangool@mimotech.com> -+ -+ * arch/sh/configs/defconfig-se7751: Added new 2.6.0-test2 -+ config settings: -+ -+ CONFIG_IOSCHED_AS -+ CONFIG_IOSCHED_DEADLINE -+ CONFIG_LBD -+ -+2003-07-27 Paul van Gool <pvangool@mimotech.com> -+ -+ * include/asm-sh/pci-sh7751.h: Re-added in order to add -+ SH7751R_DEVICE_ID definition. -+ -+ * arch/sh/kernel/cpu/sh4/pci-sh7751.c: Initialized mask -+ variable to prevent compiler from complaining. -+ -+ Changed PCIDBG statement to use new variable name instead -+ of old Linux 2.4 one. -+ -+ Changed PCI hardware check to also check for 7751R hardware -+ and not just 7751. -+ -+2003-07-27 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile, arch/sh/Makefile, arch/sh/mm/init.c, -+ drivers/ide/Kconfig, drivers/net/8139too.c, drivers/net/Kconfig, -+ drivers/pci/pci.ids, drivers/serial/Kconfig, -+ drivers/serial/Makefile, drivers/video/Makefile, fs/nfs/inode.c, -+ include/linux/pci_ids.h, kernel/time.c: Merge 2.6.0-test2. -+ -+ * arch/sh/kernel/cpu/sh4/pci-sh7751.c: Merge changes from -+ mainline with a few fixes. -+ -+ (pcibios_allocate_resources): Deprecate pci_for_each_dev(), -+ use pci_find_device() instead. -+ (pcibios_assign_resources): Same here. -+ -+ * arch/sh/kernel/setup.c: Use asm/sections.h. -+ * arch/sh/kernel/traps.c: Same here. -+ -+ * arch/sh/configs/defconfig-dreamcast: Update defconfig. -+ -+ * include/asm-sh/local.h: New file. -+ * include/asm-sh/sections.h: New file. -+ -+2003-07-27 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/ptrace.c: Fix single step. -+ -+2003-07-26 Paul van Gool <paul.vangool@rinconnetworks.com> -+ -+ * arch/sh/Makefile: Fix for defconfig-% rules when there's no -+ prior .config. -+ -+ * arch/sh/configs/defconfig-se7751: Add SE7751 defconfig. -+ -+2003-07-25 Paul Mundt <lethal@linux-sh.org> -+ -+ * Documentation/sh/new-machine.txt: Added documentation on how to -+ work with the new tree. -+ -+2003-07-22 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add KGDB options back in. -+ -+ * arch/sh/configs/defconfig-dreamcast: Update DC defconfig. -+ -+ * arch/sh/Makefile: Add support for building a defconfig out of -+ arch/sh/configs/. Also add a 'make help' text for SH. And finally, -+ also rename cpu- to cflags- to make the KGDB options look a bit -+ saner. -+ -+ Builds for provided defconfigs can now be launched in the format -+ of: 'make defconfig-$(boardname)' followed by vmlinux/zImage/etc. -+ -+2003-07-21 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/cpu/sh4/Makefile: Remove irq_intc2.o for generic -+ 7751 builds, leave this as ST40 specific for now. -+ -+ * arch/sh/Kconfig: Get rid of CONFIG_PCI_BIOS cruft. -+ -+ * arch/sh/kernel/cpu/sh4/pci-sh7751.c: Same here (forward port of -+ changes from David Woodhouse against 2.4 branch). -+ -+ * arch/sh/Makefile: Link in arch/sh/lib/ before any of the other -+ libs-y directories. -+ -+ * arch/sh/lib/Makefile: Add div64-generic.o -+ * arch/sh/lib/div64-generic.c: New file. Provide a compliant -+ __div64_32 interface that wraps to our __xdiv64_32. -+ -+ * include/asm-sh/div64.h (do_div): Removed. Wrap to the generic -+ interface at asm-generic/div64.h instead. -+ -+2003-07-19 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/video/pvr2fb.c: Rewrite. Use the hardware palette, and add -+ support for PCI-based PVR2 boards (such as the neon250 in my case). -+ -+2003-07-19 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/entry.S (sys_call_table): Add new syscalls. -+ * arch/sh/kernel/irq.c (do_IRQ): Use kstat_this_cpu. -+ * include/asm-sh/hardirq.h (irq_cpustat_t): Remove unused members. -+ * include/asm-sh/unistd.h: Add new syscalls. -+ -+2003-07-17 Paul Mundt <lethal@linux-sh.org> -+ -+ Merge with 2.5.74 ... 2.6.0-test1. -+ -+2003-07-16 Paul Mundt <lethal@linux-sh.org> -+ -+ * include/asm-sh/segment.h: Re-added (some headers unfortunately still -+ seem to require this..). -+ * include/asm-sh/cache.h: Fixup L1_CACHE_BYTES definition (use the shift -+ defined per-cpu family). -+ * include/asm-sh/cpu-sh2/cache.h: Remove L1_CACHE_BYTES definition, and -+ add a L1_CACHE_SHIFT definition instead. -+ * include/asm-sh/cpu-sh3/cache.h: Same here. -+ * include/asm-sh/cpu-sh4/cache.h: and here. -+ -+2003-07-15 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/mm/cache-sh4.c: Add a cpu flag for p2 cache restriction -+ for users who need it (7750, 7750S/7750R?) and test that instead -+ of the subtype. -+ -+ * include/asm-sh/processor.h: Define CPU_HAS_P2_FLUSH_BUG. -+ -+2003-07-14 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/entry.S (sys_call_table): Add new syscalls. -+ * arch/sh/kernel/irq.c (__report_bad_irq, report_bad_irq): New. -+ (noirqdebug_setup): Likewise. -+ (note_interrupt): Likewise. -+ (do_IRQ): Call note_interrupt if required. -+ * arch/sh/kernel/module.c (module_arch_cleanup): new. -+ * arch/sh/mm/fault.c (do_page_fault): Use in_atomic. Use -+ VM_FAULT_xxx symbolic constants. Use fixup_exception. -+ * arch/sh/mm/ioremap.c: Fix so to follow i386 changes. -+ * drivers/char/sh-sci.c (sci_hungup, sci_close): Add again. -+ (sci_real_drive): Add sci_hungup and sci_close. -+ (sci_rx_interrupt): Return IRQ_HANDLED. -+ (sci_tx_interrupt, sci_br_interrupt, sci_br_interrupt): Likewise. -+ (sci_init_drivers): Change return type of handlers. -+ * drivers/net/stnic.c (do_stnic_intr): Return the result of -+ ei_interrupt. -+ * include/asm-sh/hardirq.h: Remove commented out part. -+ * include/asm-sh/pgalloc.h (pte_alloc_one_kernel): Use -+ __GFP_REPEAT feature. -+ (pte_alloc_one): Likewise. -+ * include/asm-sh/unistd.h: Update for new syscalls. -+ -+2003-07-14 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * include/asm-sh/system.h (switch_to): Set LAST properly. -+ -+2003-07-06 Dominik Brodowski <linux@brodo.de> -+ Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/pcmcia/hd64465_ss.c: Update for new PCMCIA API. -+ -+2003-06-29 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig, drivers/serial/Kconfig, drivers/serial/Makefile, -+ drivers/char/keyboard.c, fs/nfs/inode.c, include/linux/highmem.h, -+ include/linux/input.h, include/linux/pci_ids.h, kernel/timer.c, -+ Makefile: Merge 2.5.73. -+ -+ * arch/sh/Kconfig, arch/sh/kernel/time.c, drivers/char/keyboard.c, -+ drivers/ide/Kconfig, include/linux/input.h, kernel/sysctl.c, -+ kernel/time.c, kernel/timer.c, Makefile: Merge 2.5.72. -+ -+2003-06-15 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile, arch/sh/kernel/irq.c, arch/sh/lib/Makefile, -+ drivers/Makefile, drivers/char/Makefile, -+ drivers/char/generic_serial.c, drivers/char/sh-sci.c, -+ drivers/char/tty_io.c, drivers/ide/Kconfig, drivers/mtd/mtdcore.c, -+ drivers/mtd/mtdpart.c, drivers/mtd/chips/cfi_cmdset_0002.c, -+ drivers/mtd/chips/jedec_probe.c, drivers/mtd/maps/Kconfig, -+ drivers/mtd/maps/Makefile, drivers/mtd/maps/solutionengine.c, -+ drivers/net/8139too.c, drivers/net/Kconfig, drivers/pci/pci.ids, -+ drivers/serial/Kconfig, drivers/serial/Makefile, -+ drivers/video/Kconfig, drivers/video/Makefile, include/asm-sh/bug.h, -+ include/asm-sh/pci.h, include/linux/highmem.h, -+ include/linux/pci_ids.h, include/linux/mtd/partitions.h, -+ kernel/sys.c, kernel/sysctl.c, kernel/time.c, kernel/timer.c, -+ mm/memory.c: Merge 2.5.71. -+ -+2003-06-13 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/cpu/dma.c: Fix up exports so modules can use dma -+ functions without resulting in undefined symbols. -+ -+2003-06-01 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/irq.c (handle_IRQ_event): Check handler return value, -+ also report if no one cared about the interrupt. -+ -+2003-05-27 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile, arch/sh/mm/init.c, drivers/Makefile, -+ drivers/char/keyboard.c, drivers/char/sh-sci.c, -+ drivers/char/sysrq.c, drivers/char/tty_io.c, -+ drivers/net/8139too.c, drivers/net/Kconfig, -+ drivers/pci/pci.ids, drivers/video/fbmem.c -+ fs/locks.c, fs/nfs/inode.c, include/linux/elf.h, -+ include/linux/input.h, include/linux/mm.h, -+ include/linux/pci_ids.h, kernel/sys.c, kernel/sysctl.c, -+ kernel/timer.c, mm/memory.c: Merge 2.5.70. -+ -+ * include/asm-sh/elf.h: Move ELF relocation definitions here. -+ -+ * arch/sh/kernel/process.c (kernel_thread): Use the new do_fork() API. -+ (sys_clone, sys_fork, sys_vfork) : Same here. -+ -+ * arch/sh/kernel/cpu/dma.c (dma_err, dma_tei): Use new irq API. -+ -+2003-05-24 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add note for CONFIG_SH_WDT about HZ scaling. -+ -+ * drivers/char/watchdog/shwdt.c: General updates.. add note about -+ HZ scaling here as well. -+ -+ * drivers/serial/Kconfig: Add SCI definitions. -+ * drivers/serial/Makefile: Same here. -+ -+ * drivers/serial/sh-sci.c, drivers/serial/sh-sci.h: Add rewrite -+ of SH-SCI driver for new serial API. -+ -+ * include/asm-sh/param.h: Set HZ to 1000 when the WDT is enabled. -+ -+ * include/asm-sh/watchdog.h: Move cpu-specific functions and -+ definitions out of the way. -+ * include/asm-sh/cpu-sh[234]/watchdog.h: .. and put them here. -+ -+ * arch/sh/kernel/pci.c (pcibios_align_resource): Define this as a -+ weak symbol, so we can override it. -+ -+ * arch/sh/boards/mpc1211/pci.c (pcibios_align_resource): Added. -+ -+2003-05-19 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/setup.c (topology_init): Added. -+ (c_start, c_next): Add support for NR_CPUS > 1. -+ -+ * arch/sh/kernel/cpu/sh4/pci-st40.c: Cleanup irq handler return type. -+ -+ * arch/sh/cchips/hd6446x/hd64465/gpio.c: Various cleanups.. modules, -+ resource allocation, etc. Also fixup irq handler return type. -+ -+ * drivers/video/pvr2fb.c: Further cleanups. -+ -+ * include/asm-sh/machvec.h: Get rid of machvec machtype tracking, -+ do this dynamically through the new mach-type generation interface. -+ -+ * arch/sh/boards: Get rid of all mv_hw_* references. -+ -+ * arch/sh/Makefile: Add rule to build arch/sh/tools. -+ -+ * arch/sh/tools/Makefile, arch/sh/tools/machgen.sh, -+ arch/sh/tools/mach-types: Added. -+ -+ This completes the initial mach-type generation code. From now on, -+ definitions that previously were hardcoded in machvec.h will be -+ automatically generated as include/asm-sh/machtypes.h. -+ -+2003-05-17 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/cpufreq.c (sh_cpufreq_setstate): Add rudimentary SMP -+ support, also verify that CPU is online. -+ (sh_cpufreq_cpu_init): Remove the policy->cpu != 0 check, look at -+ cpu_online() instead. -+ -+2003-05-16 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/setup.c (scif_sercon_device): Remove. -+ * arch/sh/kernel/time.c (timer_interrupt): Use irqreturn_t for return -+ type. -+ * arch/sh/kernel/Makefile: Make SH cpufreq driver independant of -+ cpufreq core. Use CONFIG_SH_CPU_FREQ instead. -+ * arch/sh/kernel/cpufreq.c: Rewritten for new API. -+ -+ * arch/sh/Kconfig: Add cpufreq definitions. -+ -+ * include/asm-sh/thread_info.h: Drop redefinition of TI_PRE_COUNT. -+ -+2003-05-16 Saito.K <ksaito@interface.co.jp> -+ -+ * arch/sh/Kconfig: Add mpc1211 support. -+ * arch/sh/Makefile: Add mpc1211 support. -+ * arch/sh/vmlinux.lds.S: Add mpc1211 support. -+ -+ * arch/sh/boards/mpc1211/Makefile: New file. -+ * arch/sh/boards/mpc1211/io.c: New file. -+ * arch/sh/boards/mpc1211/led.c: New file. -+ * arch/sh/boards/mpc1211/mach.c: New file. -+ * arch/sh/boards/mpc1211/pci.c: New file. -+ * arch/sh/boards/mpc1211/rtc.c: New file. -+ * arch/sh/boards/mpc1211/setup.c: New file. -+ -+ * arch/sh/kernel/sh_ksyms.c (memscan, __copy_user, __udivdi3, -+ __flush_purge_region, __down_trylock): Add to exported symbols. -+ -+ * drivers/char/keyboard.c: Add mpc1211 support. -+ -+ * drivers/ide/Kconfig: Add mpc1211 support. -+ * drivers/ide/pci/alim15x3.c: Add mpc1211 support. -+ -+ * drivers/mtd/chips/jedec_probe.c: Add Fujitsu MBM29F040C support. -+ -+ * drivers/mtd/maps/Kconfig: Add mpc1211 support. -+ * drivers/mtd/maps/Makefile: Add mpc1211 support. -+ * drivers/mtd/maps/mpc1211.c: Add mpc1211 support. -+ -+ * drivers/video/Kconfig: Add Chips 69000 display support. -+ * drivers/video/Makefile: Add Chips 69000 display support. -+ * drivers/video/asiliantfb.c: New file. -+ * drivers/video/fbmem.c: Add Chips 69000 display support. -+ -+ * include/asm-sh/dma.h: Add mpc1211 support. -+ * include/asm-sh/floppy.h: New file. -+ * include/asm-sh/irq.h: Add mpc1211 support. -+ (irq_canonicalize): here as an inline function. -+ * include/asm-sh/keyboard.h: Add mpc1211 support. -+ * include/asm-sh/machvec.h: Add mpc1211 support. -+ * include/asm-sh/mc146818rtc.h: Add mpc1211 support. -+ -+ * include/asm-sh/mpc1211/dma.h: New file. -+ * include/asm-sh/mpc1211/io.h: New file. -+ * include/asm-sh/mpc1211/keyboard.h: New file. -+ * include/asm-sh/mpc1211/m1543c.h: New file. -+ * include/asm-sh/mpc1211/mc146818rtc.h: New file. -+ * include/asm-sh/mpc1211/mpc1211.h: New file. -+ * include/asm-sh/mpc1211/pci.h: New file. -+ -+ * include/asm-sh/pci.h: Add mpc1211 support. -+ (sg_dma_address): Fix typo. -+ * include/asm-sh/scatterlist.h: Copy from kernel.org. -+ -+ * include/linux/pci_ids.h: Add Chips 69000 display support. -+ -+2003-05-12 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/boards/Makefile: Removed. -+ * arch/sh/Makefile: Include top-level .config for rules that don't set -+ include_config in the top-level Makefile. (ie, make clean/mrproper). -+ -+2003-05-12 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/boards/Makefile: New file. -+ -+2003-05-10 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/cpu-sh4/cache.h (CCR_CACHE_EMODE): Defined. -+ * arch/sh/mm/cache-sh4.c (detect_cpu_and_cache_system): Check CCR_CACHE_EMODE setting. -+ (__flush_dcache_all_ex): New function. -+ (__flush_cache_4096_all_ex): New function. -+ (flush_cache_4096_all): Moved from clear_page.S, changed for 2-way cache. -+ (flush_icache_range): Do flush-cache-all. -+ (flush_cache_sigtramp): Don't use flush_icache_range for efficiency. -+ (flush_cache_all): Check cache ways and use relevant function. -+ (flush_dcache_page): Reverted to previous version (2.4.20). -+ (__flush_cache_page): Likewise. -+ (flush_cache_range): External function declaration moved to the top. -+ * arch/sh/mm/clear_page.S (__clear_user): Bug fix from 2.4 branch. -+ (flush_cache_4096_all): Renamed to __flush_cache_4096_all. -+ * arch/sh/mm/init.c (sh_cache_init): Don't change CCR_CACHE_EMODE bit of CCR. -+ -+ * arch/sh/Makefile: Follow i386 changes. -+ * arch/sh/boot/compressed/Makefile: Likewise. -+ * arch/sh/boot/Makefile: Restored and follow i386 changes. -+ * arch/sh/boot/compressed/vmlinux.scr: New. -+ * arch/sh/.cvsignore: ignore vmlinux.lds.s -+ * arch/sh/boot/compressed/.cvsignore: Add sub-target files. -+ -+ * include/asm-sh/bug.h: Restore and follow i386 changes. -+ * mm/memory.c: Follow 2.5.69. -+ * include/net/inet_ecn.h: Removed. -+ * include/asm-sh/ide.h (ide_init_default_hwifs): Bug fix from 2.4 branch. -+ * include/asm-sh/kmap_types.h: Follow i386 changes. -+ -+2003-05-07 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/lib/udivdi3.c: New file. -+ * arch/sh/lib/Makefile (obj-y): Add udivdi3.o. -+ -+2003-05-07 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/cpu/sh4/pci-sh7751.c (pci_conf1_read): General -+ cleanup. Should now build and read values correctly. -+ * arch/sh/kernel/cpu/sh4/pci-st40.c (st40pci_read): Same here. -+ -+ * arch/sh/mm/cache-sh4.c (flush_icache_range): Clear out valid -+ bit for each way in the icache. -+ -+ * drivers/video/Makefile: Make pvr2fb use cfb files. -+ * drivers/video/pvr2fb.c: Updates. -+ -+2003-05-07 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile (CFLAGS): Use -O1 to avoid miss compiling by gcc-3.2. -+ (core-y): Add usr/. -+ -+ * arch/sh/Makefile (LDFLAGS_BLOB): Define. -+ -+ * arch/sh/kernel/cpu/rtc.c (sh_rtc_gettimeofday): Don't make -+ overflow. -+ * arch/sh/kernel/entry.S: Add gUSA support. Call syscall_tail -+ only when returning from fork. Add new syscalls. -+ * arch/sh/kernel/io_7751se.c: Fix typo. -+ * arch/sh/kernel/io_se.c (delay): Wait more. -+ * arch/sh/kernel/irq.c: Follow i386 changes. -+ * arch/sh/kernel/module.c: Rewriting. -+ * arch/sh/kernel/process.c (kernel_thread_helper): New. -+ (kernel_thread): Use kernel_thread_helper. Return error value also. -+ (dump_task_regs, dump_task_fpu): New. -+ (copy_thread): Handle CLONE_SETTLS flag and initialize child tids. -+ (__switch_to): Return PREV pointer. -+ (sys_clone): Handle tid pointers. -+ * arch/sh/kernel/ptrace.c: Cleanup and follow i386 changes. -+ * arch/sh/kernel/signal.c (handle_signal): Add gUSA support. -+ (do_signal): Handle ERESTART_RESTARTBLOCK case. -+ * arch/sh/kernel/sys_sh.c (sys_ipc): Use sys_semtimedop and -+ handle SEMTIMEDOP. -+ * arch/sh/kernel/time.c (TICK_SIZE): Use tick_nsec. -+ (do_gettimeoffset): Lock critical region. -+ (do_gettimeofday): Follow i386 changes. -+ (time_init): Override tick_nsec here. -+ -+ * arch/sh/lib/Makefile (obj-y): Add div64.o. -+ * arch/sh/lib/div64.S: New file. -+ -+ * arch/sh/mm/cache-sh2.c (detect_cpu_and_cache_system): Use -+ SH_CACHE_* instead of CACHE_* because CACHE_VALID collides with -+ the one in NFS header file. -+ * arch/sh/mm/cache-sh3.c (detect_cpu_and_cache_system): Likewise. -+ (__flush_wback_region): Likewise. -+ (__flush_purge_region): Likewise. -+ * arch/sh/mm/cache-sh4.c (flush_cache_4096): Likewise. -+ * arch/sh/mm/init.c (sh_cache_init): Likewise. -+ * arch/sh/mm/extable.c (fixup_exception): New. -+ * arch/sh/mm/tlb-sh4.c (update_mmu_cache): Set write through -+ bit of PTEL if CONFIG_SH_WRITETHROUGH defined. -+ -+ * drivers/net/stnic.c (ei_interrupet): Change return type. -+ -+ * include/asm-sh/byteorder.h (___arch__swab64): New. -+ (__arch__swab64): Define. -+ * include/asm-sh/cache.h: Rename CACHE_* to SH_CACHE_*. -+ * include/asm-sh/delay.h (ndelay): Define. -+ * include/asm-sh/div64.h (do_div): Implement a real 64/32-bit -+ division. -+ * include/asm-sh/elf.h: Follow i386 change. -+ * include/asm-sh/hardirq.h: Likewise. -+ * include/asm-sh/ide.h: Include generic definitions. -+ * include/asm-sh/ipc.h (SEMTIMEDOP): Define. -+ * include/asm-sh/module.h (MODULE_PROC_FAMILY): Define. -+ * include/asm-sh/param.h: Follow i386 changes. -+ * include/asm-sh/pci.h (pci_map_sg): Fix dma_address in loop. -+ (pci_dma_sync_sg): Likewise. -+ * include/asm-sh/pgtable.h: Change _PAGE_FILE to 0x80 and drop this -+ bit from _PAGE_FLAGS_HARDWARE_MASK. -+ * include/asm-sh/processor.h: Follow i386 changes. -+ * include/asm-sh/ptrace.h: Remove PTRACE_OLDSETOPTIONS and -+ define PTRACE_O_TRACESYSGOOD. -+ * include/asm-sh/rwsem.h: Cut© from i386. -+ * include/asm-sh/semaphore.h: Follow i386 changes. -+ * include/asm-sh/thread_info.h: Follow i386 changes. -+ (struct thread_info): Make CPU and PREEMPT_COUNT 32-bit. -+ * include/asm-sh/tlb.h (tlb_start_vma): Call flush_cache_range. -+ (tlb_end_vma): Call flush_tlb_range. -+ * include/asm-sh/types.h: Follow i386 changes. -+ * include/asm-sh/uaccess.h: Remove fixup_exception. -+ * include/asm-sh/unistd.h: Define new system call numbers. -+ -+ * include/linux/elf.h: Define SH relocation types. -+ -+ * kernel/timer.c (tick_sec): Don't use static initializer. -+ (tick_nsec): Likewise. -+ (init_timers): Initialize tick_sec and tick_nsec here. -+ -+2003-05-05 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/setup.c (sh_console_device): Removed. -+ -+ * drivers/char/sh-sci.c: General tty cleanup, get rid of minor() and -+ mk_kdev() usage. -+ -+ * drivers/video/hitfb.c (hitfb_init): fb_info.node cleanups, get rid -+ of NODEV and minor(). -+ * drivers/video/pvr2fb.c (pvr2fb_interrupt): Use new irqreturn_t type. -+ (pvr2fb_init): get rid of NODEV and minor(). -+ -+ * include/asm-sh/pgalloc.h (pte_alloc_one_kernel): Use __GFP_REPEAT -+ for pte allocation. -+ -+ Merge 2.5.69. -+ -+2003-05-01 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/entry.S (ret_from_fork): Add back in. Invoke -+ schedule_tail(), since its not just for SMP anymore. -+ * arch/sh/kernel/traps.c (dump_stack): Added. -+ * arch/sh/kernel/module.c: New file. -+ -+ * include/asm-sh/module.h: Rework for new module interface. -+ -+2003-04-22 Paul Mundt <lethal@linux-sh.org> -+ -+ Merge with 2.5.67 and 2.5.68. -+ -+2003-04-18 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/clear_page.S (__flush_cache_4096): Revert previous change -+ and modified for efficiency. -+ -+2003-04-17 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/clear_page.S (__flush_cache_4096): Don't change associated -+ data that is to be flushed. -+ -+2003-04-01 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Move the CONFIG_MMU option further down and -+ add some rudimentary help text. -+ -+ * arch/sh/vmlinux.lds.s: Add __param and __initramfs sections. -+ -+ * arch/sh/kernel/entry.S: Deprecate sys_create_module, -+ sys_query_module, and sys_get_kernel_syms. -+ -+ * arch/sh/mm/extable.c (search_extable): Added. Use the unified -+ extable handling code. -+ (search_one_table, search_exception_table): Removed. -+ * arch/sh/mm/fault.c (do_page_fault): Use the unified extable -+ search. -+ * arch/sh/kernel/traps.c (die_if_no_fixup): Same here. -+ -+ * include/asm-sh/uaccess.h (search_exception_table): Removed. -+ -+ * drivers/block/rd.c: Include linux/mm.h for page_address(). -+ -+2003-03-31 Paul Mundt <lethal@linux-sh.org> -+ -+ * include/asm-sh/pgtable.h (pte_file, pte_to_pgoff, -+ pgoff_to_pte): Added. Also set PTE_FILE_MAX_BITS. -+ -+ * drivers/char/watchdog/shwdt.c: Cleanup. -+ -+ * drivers/video/pvr2fb.c: Further API fixes. -+ -+ Merge with 2.5.62 ... 2.5.66. -+ -+2003-03-30 Paul Mundt <lethal@linux-sh.org> -+ -+ Merge with 2.5.47 ... 2.5.61. -+ -+2003-03-29 Paul Mundt <lethal@linux-sh.org> -+ -+ Merge with 2.5.46. -+ -+2003-03-24 Daniel Jacobowitz <drow@false.org> -+ Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/ptrace.c (ubc_set_tracing): Break before executing -+ instruction. -+ -+2003-03-24 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/entry.S: Call sys_pread_wrapper/sys_pwrite_wrapper -+ instead of sys_pread64/sys_pwrite64. -+ * arch/sh/kernel/sys_sh.c (sys_pread_wrapper,sys_pwrite_wrapper): -+ New function. -+ -+ * arch/sh/mm/copy_page.S (__copy_user): Add missing exception handling -+ point. -+ -+2003-01-28 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile, arch/sh/Kconfig, drivers/block/rd.c, -+ drivers/Makefile, drivers/char/Makefile, -+ drivers/char/tty_io.c, drivers/net/8139too.c, -+ drivers/net/Kconfig, drivers/video/epson1355fb.c, -+ drivers/video/hitfb.c, drivers/video/pvr2fb.c, -+ include/asm-sh/signal.h, init/do_mounts.c, kernel/ptrace.c, -+ kernel/timer.c, mm/memory.c: Merge 2.5.51. -+ -+ * Makefile, drivers/Makefile, drivers/char/Makefile, -+ drivers/pci/pci.ids, include/asm-sh/processor.h, -+ init/do_mounts.c, kernel/ptrace.c, kernel/timer.c: Merge 2.5.50. -+ -+ * Makefile, drivers/char/Makefile, drivers/char/Kconfig, -+ drivers/char/tty_io.c, drivers/pcmcia/hd64465_ss.c, -+ fs/nfs/inode.c, fs/mpage.c: Merge 2.5.49. -+ -+ * drivers/char/shwdt.c: Move to watchdog/ -+ -+ * arch/sh/Kconfig, drivers/char/tty_io.c, init/do_mounts.c, -+ drivers/input/keyboard/Kconfig, fs/nfs/inode.c, fs/mpage.c, -+ include/asm-sh/stat.h, include/linux/input.h, kernel/time.c, -+ kernel/timer.c, Makefile: Merge 2.5.48. -+ -+ * Makefile, arch/sh/Kconfig, arch/sh/kernel/pci-sh7751.c, -+ arch/sh/kernel/pci_st40.c, drivers/block/rd.c, -+ drivers/char/sh-sci.c, drivers/char/shwdt.c, -+ drivers/char/sysrq.c, drivers/char/tty_io.c, -+ drivers/net/Kconfig, drivers/pci/pci.ids, fs/nfs/inode.c, -+ fs/mpage.c, kernel/timer.c: Merge 2.5.47. -+ -+ * Makefile, arch/sh/Kconfig, arch/sh/kernel/irq.c, -+ arch/sh/kernel/process.c, arch/sh/kernel/ptrace.c, -+ drivers/Makefile, drivers/block/rd.c, drivers/char/Makefile, -+ drivers/char/sysrq.c, drivers/net/Kconfig, init/do_mounts.c, -+ include/asm-sh/processor.h, include/asm-sh/ptrace.h, -+ kernel/ptrace.c, kernel/timer.c, mm/memory.c: Merge 2.5.46. -+ -+2003-01-16 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add CONFIG_DEBUG_SPINLOCK. -+ -+ * arch/sh/kernel/traps.c (per_cpu_trap_init, gdb_vbr_init): Added. -+ (trap_init): Do some generic exception table setup, and wrap to -+ per_cpu_trap_init() to setup boot cpu. -+ -+ * include/asm-sh/spinlock.h (_raw_spin_lock, _raw_spin_unlock, -+ _raw_read_lock, _raw_read_unlock, _raw_write_lock, -+ _raw_write_unlock): And preliminary spin/read/write locks. -+ -+ Clean up CONFIG_DEBUG_SPINLOCK stuff. -+ -+2003-01-15 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/vmlinux.lds.S: Don't use static values for cacheline or -+ page size. Use L1_CACHE_BYTES/PAGE_SIZE accordingly. -+ -+2003-01-13 Paul Mundt <lethal@linux-sh.org> -+ -+ * include/asm-sh/uaccess.h (__access_ok, set_fs, get_fs): Added for -+ CONFIG_MMU=n. -+ -+2003-01-10 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/entry.S: Wrap sys_madvise and sys_readahead -+ to sys_ni_syscall if !CONFIG_MMU. Fixup exception handling -+ when we don't have an MMU (or if its disabled). -+ -+2003-01-09 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add CONFIG_BINFMT_FLAT. -+ -+ * mm/Makefile, mm/filemap.c, mm/mmap.c, mm/nommu.c, -+ mm/page_alloc.c, mm/slab.c, mm/vmscan.c, kernel/fork.c, -+ kernel/sys.c, kernel/sysctl.c, fs/exec.c, fs/locks.c, -+ fs/mpage.c, fs/proc/array.c, fs/proc/base.c, -+ fs/proc/proc_misc.c, drivers/char/mem.c, -+ include/linux/blkdev.h, include/linux/mm.h, -+ include/linux/page-flags.h, include/linux/slab.h, -+ include/linux/swap.h: Merge uClinux 2.5.45-uc1-mm patch. -+ -+ * fs/Makefile: Add binfmt_flat. -+ * fs/binfmt_flat.c: New file. -+ -+ * include/linux/flat.h: New file. -+ -+2003-01-05 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Makefile: Do a bit of cleaning, and lay the groundwork -+ for include/asm-sh/cpu/ -+ -+2003-01-01 Paul Mundt <lethal@linux-sh.org> -+ -+ * ChangeLog-2002: New file, move the old one out of the way. -+ -+ * arch/sh/boot/compressed/Makefile: Add top-level include dir -+ to CFLAGS/AFLAGS. -+ -+ * arch/sh/kernel/process.c (sys_fork): Can't fork() properly -+ with no MMU (at least under uClinux), return -EINVAL instead. -+ -+ * arch/sh/mm/Makefile: Build pg-sh4.c for all SH-4, not just -+ ones with an MMU. -+ * arch/sh/mm/tlb-nommu.c (update_mmu_cache): Added. -+ -+ * include/asm-sh/bugs.h (check_bugs): Add a default rule for -+ CPU subtype. -+ * include/asm-sh/pgtable.h: Fixup page protection flags for -+ systems without an MMU .. wrap to __pgprot(0). -+ * include/asm-sh/processor.h (save_fpu): Make it work on -+ SH-4 again. -+ -+ * include/asm-sh/addrspace.h: Move CPU specific definitions out of -+ the way.. reference asm/cpu/addrspace.h instead. -+ * include/asm-sh/cpu-sh3/addrspace.h, -+ include/asm-sh/cpu-sh4/addrspace.h: Added. -+ -diff -ruN linux-2.6.17-vanilla/ChangeLog-2004 linux-2.6.17/ChangeLog-2004 ---- linux-2.6.17-vanilla/ChangeLog-2004 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/ChangeLog-2004 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,930 @@ -+2004-12-03 Tom Rini <trini@kernel.crashing.org> -+ -+ * arch/sh/configs/se7750_defconfig: Add defconfig for ms7750sse01 -+ * include/asm-sh/system.h (__cmpxchg_u32, __cmpxchg, cmpxchg): Add -+ so that we provide a simple cmpxchg(). Borrowed from MIPS. -+ -+2004-12-03 Saito.K <ksaito@interface.co.jp> -+ -+ * include/asm-sh/irq.h: Add CTP/PCI-SH03 IDE. -+ * include/asm-sh/sh03/ide.h: New file. -+ -+2004-10-25 Paul Mundt <paul.mundt@nokia.com> -+ -+ * arch/sh/kernel/signal.c (handle_signal): Modify to take a -+ struct k_sigaction arg. -+ (do_signal): get_signal_to_deliver() now fills in the k_sigaction -+ struct, pass this into handle_signal(). -+ -+ * arch/sh/kernel/entry.S (sys_call_table): Update for 2.6.9 syscalls, -+ sys_waitid in particular. -+ -+ * include/asm-sh/bitops.h (ext2_find_next_zero_bit): addr is specified -+ as a char *, which causes find_next_zero_bit() to complain. Cast it. -+ -+ * include/asm-sh/pgtable.h (ptep_get_and_clear): Get rid of inline -+ bogosity causing compile death. -+ -+ * include/asm-sh/system.h: Kill off linux/kernel.h include, as it's -+ both unecessary and causes a circular dependency. -+ -+ * include/asm-sh/unistd.h: syscall updates. -+ -+2004-10-24 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/signal.c (get_sigframe): Fix sigaltstack behavior. -+ -+2004-10-15 Tom Rini <trini@kernel.crashing.org> -+ -+ * arch/sh/ramdisk/Makefile: Fix for usage with O= -+ -+2004-10-15 Tom Rini <trini@kernel.crashing.org> -+ -+ * include/asm-sh/bitops.h (find_next_zero_bit): First parameter is -+ now a const unsigned long. -+ (sched_find_first_bit): Likewise. -+ -+2004-10-14 Paul Mundt <paul.mundt@nokia.com> -+ -+ * arch/sh/Kconfig: Cleanup PCLK values. -+ -+ * arch/sh/configs/microdev_defconfig: Add microdev defconfig. -+ -+ * arch/sh/boards/superh/microdev/setup.c (smc91x_setup): Added -+ smc91x platform device registration. -+ -+ * arch/sh/kernel/early_printk.c (scif_sercon_init): Fixup SCBRR -+ calculations to use CONFIG_SH_PCLK_FREQ value. -+ * arch/sh/kernel/sh_ksyms.c (__div64_32, strcpy): Exported to -+ satisfy module builds. -+ (csum_ipv6_magic, clear_page): Likewise. -+ -+ * include/asm-sh/bug.h: Make BUG() oops. -+ * include/asm-sh/checksum.h: Fix IPv6 compile. -+ * include/asm-sh/unistd.h (_exit): Removed. -+ -+ * drivers/net/Kconfig: Enable smc91x for SuperH. -+ * drivers/net/smc91x.[ch]: Cleanup ISA support, add support for -+ SH4-202 MicroDev. -+ -+2004-10-13 Masahiro Miyake <miya@lineo.co.jp> -+ -+ * arch/sh/boards/snapgear/setup.c: Use asm/cpu/timer.h for TMU -+ definitions. -+ -+ * arch/sh/kernel/time.c: Likewise. -+ -+ * include/asm-sh/cpu-sh3/freq.h: Add FRQCR definition for SH7300. -+ -+ * include/asm-sh/cpu-sh3/timer.h: New file, TMU definitions. -+ * include/asm-sh/cpu-sh4/timer.h: New file. -+ -+2004-10-04 Saito.K <ksaito@interface.co.jp> -+ -+ * arch/sh/Kconfig: Add CTP/PCI-SH03 support. -+ * arch/sh/Makefile: Add CTP/PCI-SH03 support. -+ * arch/sh/boards/sh03/Makefile: New file. -+ * arch/sh/boards/sh03/led.c: New file. -+ * arch/sh/boards/sh03/pci.c: New file. -+ * arch/sh/boards/sh03/rtc.c: New file. -+ * arch/sh/boards/sh03/setup.c: New file. -+ * arch/sh/config/sh03_defconfig: New file. -+ * arch/sh/drivers/pci/pci-sh7751.c: Add CTP/PCI-SH03 support. -+ * drivers/char/Kconfig: Add CTP/PCI-SH03 support. -+ * drivers/char/Makefile: Add CTP/PCI-SH03 support. -+ * drivers/char/sh03rtc.c: New file. -+ * include/asm-sh/sh03/io.h: New file. -+ * include/asm-sh/sh03/sh03.h: New file. -+ -+2004-10-01 Paul Mundt <paul.mundt@nokia.com> -+ -+ * arch/sh/drivers/pci/pci-sh7751.c (pcibios_fixup_irqs): Define as a -+ weak symbol so other boards can overload the fixups. -+ -+2004-09-24 Tom Rini <trini@kernel.crashing.org> -+ -+ * arch/sh/Makefile: Test for machdir-y not being empty before -+ adding to core-y. -+ -+2004-09-24 Tom Rini <trini@kernel.crashing.org> -+ -+ * drivers/net/8139too.c: Revert changes that moved asserts() around. -+ -+2004-09-24 Tom Rini <trini@kernel.crashing.org> -+ -+ * arch/sh/boards/se/7751/io.c: pci-sh7751.h has moved, update include. -+ * arch/sh/boards/se/7751/pci.c: pci-sh7751.h has moved, update include. -+ -+2004-09-24 Tom Rini <trini@kernel.crashing.org> -+ -+ * arch/sh/tools/Makefile: Switch from machgen.sh to gen-mach-types -+ * arch/sh/tools/machgen.sh: Remove -+ * arch/sh/tools/gen-mach-types: Add -+ * arch/sh/Makefile: Update the cpu and mach symlink rules to match -+ how ARM does it. -+ * This updates our symlink and machtypes.h stuff to match what -+ ARM does today which fixes O= building. -+ -+2004-09-24 Tom Rini <trini@kernel.crashing.org> -+ -+ * include/asm-sh: adc.h, addrspace.h, cache.h, cacheflush.h, dma.h, -+ freq.h, mmu_context.h, processor.h, rtc.h, shmparam.h, ubc.h, -+ watchdog.h: Protect all contents with #ifdef __KERNEL__ -+ * include/asm-sh/user.h: remove <linux/types.h> and <asm/processor.h> -+ from the #include list. -+ * The net result is that glibc can now compile with these headers. -+ -+2004-08-19 Alex Bennee <kernel-hacker@bennee.com> -+ -+ * arch/sh/drivers/pci/pci-st40.c Updated PLL calculation -+ * arch/sh/drivers/pci/pci-st40.c Fixes to init -+ * arch/sh/drivers/pci/pci-st40.[ch] Updated RBAR -+ -+2004-08-19 Alex Bennee <kernel-hacker@bennee.com> -+ -+ * Forward porting of INTC2 IRQ Handling from 2.4 -+ * added intc2 irq initialisation -+ * removed make_intc2_irq call from from pci -+ * updated intc2 irq functions -+ * updated st40 pci irq code -+ * fixed pcibios_init to return ok -+ -+2004-08-19 Alex Bennee <kernel-hacker@bennee.com> -+ -+ * moved map_harp_irq -> pcibios_map_platform_irq in harp/setup.c -+ * added subsys_initcall(pcibios_init) to ST40 PCI code. -+ -+2004-08-03 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/cpu/sh4/probe.c (detect_cpu_and_cache_system): Add -+ CPU_HAS_PERF_COUNTER for SH7750/SH7750S. -+ -+ * arch/sh/kernel/setup.c (cpu_flags): Add perfctr flag. -+ -+ * arch/sh/oprofile/Makefile: Add op_model_sh7750 rule. -+ * arch/sh/oprofile/op_model_sh7750.c: New file, OProfile support for -+ SH7750/SH7750S performance counters. -+ -+ * include/asm-sh/processor.h: Add CPU_HAS_PERF_COUNTER. -+ -+2004-07-28 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/drivers/dma/dma-pvr2.c: Update for DMA API changes. -+ * arch/sh/drivers/dma/dma-g2.c: Likewise. -+ -+2004-07-26 Paul Mundt <lethal@linux-sh.org> -+ -+ More fixups by Hosokawa-san <hosokawa@ace-jp.com> -+ -+ * arch/sh/drivers/pci/fixups-rts7751r2d.c (pci_fixup_pcic): Use -+ PCI_REG() for proper register offsets. Additional PCIC init. -+ -+ * arch/sh/drivers/pci/ops-rts7751r2d.c (sh7751_pci_map): Fix window0 -+ size, add dummy window1. -+ -+ * arch/sh/drivers/pci/pci-sh7751.c (pci_fixup_ide_bases): Enable this -+ for RTS7751R2D/HS7751RVoIP. -+ (pcibios_fixups): Likewise. -+ -+ * arch/sh/drivers/pci/pci.c (pcibios_enable_device): Add mask check. -+ -+2004-07-07 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/mm/cache-sh[234].c (detect_cpu_and_cache_system): Moved .. -+ * arch/sh/kernel/cpu/sh[234]/probe.c: here. -+ * arch/sh/kernel/cpu/sh[234]/Makefile: Add probe.o rule. -+ -+2004-07-05 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/time.c (time_init): RTS7751R2D and HS7751RVoIP don't -+ need special handling for the interval value.. -+ -+2004-06-28 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/asm-offsets.c: New file. -+ * arch/sh/kernel/entry.S: Include asm/asm-offsets.h. -+ -+ * arch/sh/Makefile: Add asm-offsets rules. -+ -+ * include/asm-sh/thread_info.h: Remove struct elem references, do -+ them dynamically at build time via asm-offsets instead. -+ -+ * arch/sh/lib/memcpy-sh4.S: Merge Stuart's SH-4 optimized memcpy(). -+ * arch/sh/lib/Makefile: Use memcpy-sh4 for CONFIG_CPU_SH4. -+ -+2004-06-28 Hiroshi DOYU <Hiroshi_DOYU@montavista.co.jp> -+ -+ * arch/sh/Kconfig, arch/sh/Makefile,arch/sh/kernel/process.c, -+ arch/sh/kernel/setup.c,arch/sh/kernel/signal.c,arch/sh/kernel/time.c, -+ arch/sh/kernel/cpu/sh4/Makefile,arch/sh/kernel/cpu/sh4/ex.S, -+ arch/sh/mm/cache-sh4.c, arch/sh/tools/mach-types, drivers/serial/sh-sci.c -+ drivers/serial/sh-sci.h, include/asm-sh/irq.h include/asm-sh/processor.h, -+ include/asm-sh/cpu-sh4/freq.h: Modified for sh73180cp01 -+ -+ * arch/sh/boards/se/73180/Makefile, arch/sh/configs/se73180_defconfig -+ arch/sh/boards/se/73180/io.c, arch/sh/boards/se/73180/irq.c, -+ arch/sh/boards/se/73180/led.c, arch/sh/boards/se/73180/setup.c, -+ include/asm-sh/se73180/io.h, include/asm-sh/se73180/se73180.h, -+ include/asm-sh/irq-sh73180.h: New files for sh73180cp01 -+ -+2004-06-26 Paul Mundt <lethal@linux-sh.org> -+ -+ * sound/oss/voyagergx_sound.c (request_dma2): Use irqreturn_t for irq -+ callback. -+ (do_irq): Convert to irqreturn_t. -+ (init_voyagergx): s/\(INT_MASK\)/VOYAGER_\1/, likewise for INT_MASK_AC. -+ -+ * arch/sh/drivers/dma/dma-api.c: Don't export unregister_dmac(). -+ -+ * arch/sh/boards/dreamcast/setup.c: Wrap dreamcast_consistent_alloc -+ and dreamcast_consistent_free into the machvec. -+ -+ * arch/sh/boards/renesas/rts7751r2d/mach.c: consistent API wrappers -+ in the machvec are only built in if CONFIG_USB_OHCI_HCD is set, -+ check this in the machvec assignment so we don't get undefined symbols -+ at link time (Noted by Hosokawa-san <hosokawa@ace-jp.com>). -+ -+ * arch/sh/cchips/voyagergx/consistent.c (voyagergx_consistent_alloc): -+ return NULL when we aren't capable of doing the allocation (this will -+ then wrap to consistent_alloc() in the generic path). -+ (voyagergx_consistent_free): return non-0 to have the generic path -+ wrap to consistent_free(), and get rid of its invocation here. -+ -+ * arch/sh/drivers/pci/dma-dreamcast.c (__pci_alloc_consistent): -+ Renamed to dreamcast_consistent_alloc(). -+ (__pci_free_consistent): Renamed to dreamcast_consistent_free(). -+ Both cleaned up to work with new model. -+ -+ * include/asm-sh/dma-mapping.h: Get rid of dreamcast-specific hacks, -+ these are now wrapped properly through the machvec. -+ (dma_alloc_coherent): Check return val of mv_consistent_alloc(), -+ wrap to consistent_alloc() if the former isn't interested in the -+ mapping. -+ (dma_free_coherent): Likewise, but for mv_consistent_free() and -+ consistent_free(). -+ -+ * include/asm-sh/machvec.h (mv_consistent_free): Change return-type -+ to int. -+ -+ * arch/sh/kernel/cpu/irq_ipr.c: export make_ipr_irq to satisfy module -+ dependancies. -+ * arch/sh/mm/consistent.c: export consistent_alloc/consistent_free. -+ * sound/oss/voyagergx_8051.c: export init_8051/command_8051. -+ -+ * arch/sh/configs/rts7751r2d_defconfig: Update RTS7751R2D defconfig. -+ -+2004-06-25 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/time.c (sh_do_profile): Add oprofile hook. -+ Change to take pt_regs. -+ (do_timer_interrupt): Hand off regs to sh_do_profile() -+ instead of just PC value (profile_hook() expects this). -+ -+2004-06-15 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add CONFIG_CPU_SUBTYPE_SH7705. -+ -+ * arch/sh/kernel/cpu/irq_ipr.c, arch/sh/kernel/cpu/sh3/ex.S, -+ arch/sh/kernel/entry.S, arch/sh/kernel/setup.c, -+ arch/sh/kernel/time.c: Add support for SH7705. -+ -+ * include/asm-sh/irq.h, include/asm-sh/processor.h: Likewise. -+ -+ * arch/sh/boards/systemh: Moved .. -+ * arch/sh/boards/renesas/systemh: here. -+ -+ * arch/sh/Makefile: Update systemh path. -+ * arch/sh/boards/renesas/systemh/Makefile: Adjust pci.o path. -+ -+2004-06-10 Hiroshi DOYU <Hiroshi_DOYU@montavista.co.jp> -+ -+ * arch/sh/Kconfig, arch/sh/Makefile, -+ arch/sh/kernel/entry.S, arch/sh/kernel/setup.c, -+ arch/sh/kernel/time.c, arch/sh/kernel/cpu/irq_ipr.c, -+ arch/sh/kernel/cpu/sh3/ex.S, arch/sh/tools/mach-types, -+ drivers/serial/sh-sci.c, drivers/serial/sh-sci.h, -+ include/asm-sh/bugs.h, include/asm-sh/irq.h, -+ include/asm-sh/ubc.h: modified for sh7300cp01 -+ -+ * arch/sh/boards/se/7300/Makefile, arch/sh/boards/se/7300/io.c, -+ arch/sh/boards/se/7300/irq.c, arch/sh/boards/se/7300/led.c, -+ arch/sh/boards/se/7300/mach.c, arch/sh/boards/se/7300/setup.c, -+ arch/sh/configs/se7300_defconfig, include/asm-sh/se7300/io.h, -+ include/asm-sh/se7300/irq-sh7300.h, include/asm-sh/se7300/se7300.h: -+ New files for sh7300cp01 -+ -+2004-06-08 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/ide/Kconfig: Add CONFIG_IDE_SH. -+ * drivers/ide/Makefile: Add CONFIG_IDE_SH rule. -+ * drivers/ide/ide.c: Merge from mainline. -+ (probe_for_hwifs): Add ide_sh_init(). -+ * drivers/ide/sh/ide-sh.c: New file, generic host driver for SuperH. -+ -+ * include/asm-sh/ide.h: Update for new API. -+ * include/asm-sh/irq.h: Only load asm/mach/ide.h on platforms where -+ the irq definitions vary from the standard 14/15. -+ -+2004-06-07 Hiroshi DOYU <Hiroshi_DOYU@montavista.co.jp> -+ -+ * arch/sh/Kconfig: Added support for embedded ramdisk -+ * arch/sh/Makefile: Likewise -+ * arch/sh/kernel/setup.c (setup_arch): Likewise -+ * arch/sh/ramdisk/Makefile: New file. Likewise -+ * arch/sh/ramdisk/ld.script: New file. Likewise -+ * arch/sh/kernel/vmlinux.lds.S: Likewise -+ -+2004-06-04 Andriy Skulysh <askulysh@image.kiev.ua> -+ -+ * arch/sh/mm/cache-sh3.c (detect_cpu_and_cache_system): use -+ way_incr instead of way_shift. -+ * arch/sh/mm/cache-sh3.c (__flush_wback_region): Likewise. -+ -+ * include/asm-sh/ide.h (ide_init_hwif_ports): Removed. -+ * include/asm-sh/hp6xx/ide.h: Fix typo. -+ * include/asm-sh/hp6xx/hp6xx.h: hp680 updates. -+ * include/asm-sh/cpu-sh3/dac.h: Likewise. -+ * arch/sh/kernel/sh_ksyms.c: Export consistent_sync. -+ -+ * arch/sh/kernel/cpu/adc.c: New file. Added simple SH ADC support. -+ * include/asm-sh/adc.h: Likewise. -+ * arch/sh/Kconfig: Likewise. -+ * arch/sh/kernel/cpu/Makefile: Likewise. -+ -+ * drivers/input/touchscreen/hp680_ts_input.c: New file. Added Jornada 680 -+ touchscreen support. -+ * drivers/input/touchscreen/Makefile: Likewise. -+ * drivers/input/touchscreen/Kconfig: Likewise. -+ -+2004-06-02 Alex Bennee <kernel-hacker@bennee.com> -+ -+ * arch/sh/KConfig: Added ST subtypes from ST Tree (Dave McKay) -+ * arch/sh/KConfig: Added CONFIG_DEBUG_INFO from other arch's -+ -+2004-06-02 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/setup.c (show_cpuflags): Fix off-by-1 index -+ for flag names. -+ -+2004-05-28 Paul Mundt <lethal@linux-sh.org> -+ -+ * include/asm-sh/pgalloc.h (ptep_test_and_clear_young): Removed. -+ (ptep_test_and_clear_dirty): Removed. -+ (ptep_set_wrprotect): Likewise. -+ (ptep_mkdirty): Likewise. -+ (ptep_get_and_clear): Removed for SH-3. -+ -+ * include/asm-sh/pgtable.h (pte_same): Removed. -+ -+ Use generic ptep_xxx() routines for everything other than the SH-4 -+ version of ptep_get_and_clear(). -+ -+2004-05-25 Alex Bennee <kernel-hacker@bennee.com> -+ -+ * arch/sh/kernel/time.c: Fixed clock detection for ST40 -+ -+2004-05-07 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/ptrace.c (sys_ptrace): Handle PTRACE_SETOPTIONS in -+ default case. -+ -+2004-05-05 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/process.c (default_idle): Add hlt_counter check to -+ determine if we can use sleep or not. Use cpu_sleep() instead of -+ cpu_relax(). -+ * include/asm-sh/processor.h (cpu_relax): Renamed to cpu_sleep(). -+ Add dummy definition for cpu_relax(). -+ -+2004-05-02 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/traps.c (is_dsp_inst,trap_init): Don't use bit operation -+ macros for cpu_data->flags. -+ * arch/sh/kernel/cpu/init.c (dsp_init,sh_cpu_init): Likewise. -+ * arch/sh/mm/tlb-sh3.c (__flush_tlb_page): Likewise. -+ * arch/sh/mm/cache-sh3.c (detect_cpu_and_cache_system): Likewise. -+ * arch/sh/mm/cache-sh4.c (detect_cpu_and_cache_system): Likewise. -+ (flush_cache_4096): Likewise. Jump to P2 area when accessing I-cache -+ array. -+ -+2004-04-30 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/checksum.h (csum_ipv6_magic): Remove #ifdef CONFIG_IPV6. -+ -+ * arch/sh/boot/compressed/Makefile (CONFIG_MEMORY_START, -+ CONFIG_BOOT_LINK_OFFSET): Add '0x' prefix to dummy value. -+ -+2004-04-28 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * drivers/serial/sh-sci.h: Fix typo. -+ * drivers/serial/sh-sci.c (sci_handle_breaks): Test SCIF_ORER definition -+ instead of sub cpu type. -+ (sci_er_interrupt): Fix compile error. -+ -+ * arch/sh/boot/compressed/Makefile (CONFIG_MEMORY_START, -+ CONFIG_BOOT_LINK_OFFSET): Assign dummy values if these 2 variables are -+ not defined, in order to suppress error message. -+ -+ * include/asm-sh/sigcontext.h: Do not include asm/cpu/sigcontext.h. -+ (struct sigcontext): Moved from asm-sh/cpu*/sigcontext.h. -+ * include/asm-sh/cpu-sh2/sigcontext.h,include/asm-sh/cpu-sh3/sigcontext.h, -+ include/asm-sh/cpu-sh4/sigcontext.h: Removed. -+ -+2004-04-23 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/boot/compressed/misc.c: New file. Fix for gcc-3.4. -+ -+2004-04-21 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * include/asm-sh/user.h: New file. Don't include linux/types.h. -+ -+2004-04-15 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/consistent.c: Export consistent_sync. -+ -+ * arch/sh/kernel/time.c (time_init): Allow 1% mismatch for auto detected -+ clock frequency. -+ -+ * include/asm-sh/serial.h: New file. Remove irq_canonicalize. -+ -+ * arch/sh/Makefile: Target 'all' depends on zImage. -+ -+2004-04-13 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * drivers/serial/sh-sci.h (SCI_CTRL_FLAGS_REIE): Defined. -+ * drivers/serial/sh-sci.c (sci_er_interrupt): Add handling scif overrun -+ error. -+ (sci_start_rx): Enable Rx error interrupt. -+ (sci_stop_rx): Disable Rx error interrupt. -+ -+ * arch/sh/mm/cache-sh4.c (detect_cpu_and_cache_system): Don't force set -+ EMODE before flushing all D-cache. Refer CVR on SH4_501/SH4-202 only. -+ * arch/sh/kernel/cpu/init.c (cache_init): Flush only 1 way if EMODE is -+ not set. Writing 0 to address array is enough for flushing. Force EMODE -+ here (after flushing data cache). -+ -+ * include/asm-sh/unistd.h: Include linux/linkage.h. -+ -+ * drivers/char/rtc.c: New file. Fix ioctl return code when RTC_IRQ==0. -+ -+2004-04-13 Yoshinori Sato <ysato@users.sourceforge.jp> -+ -+ * drivers/serial/Kconfig: New file. Add SERIAL_SH_SCI dependency on -+ H8300. -+ * drivers/serial/sh-sci.h (CPU_SCI_FNS, sci_rxd_in): Fix compilation -+ error. -+ * drivers/serial/sh-sci.c (sci_init_pins_sci, serial_console_setup, -+ sci_transmit_chars, sci_receive_chars, sci_set_termios, sci_init): -+ Fix compilation error on H8300. -+ -+2004-04-08 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * include/asm-sh/pgtable.h (__pte_to_swp_entry): Take into account -+ _PAGE_WT bit. -+ (__swp_entry_to_pte, pte_to_pgoff, pgoff_to_pte): Likewise. -+ -+2004-03-29 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/mm/consistent.c (consistent_alloc): Fix page freeing logic. -+ -+2004-03-26 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/mm/init.c (set_pte_phys): Added. -+ (__set_fixmap): Added. Use set_pte_phys() to set fixmap translation. -+ -+ * include/asm-sh/fixmap.h: New file. -+ -+ * include/asm-sh/pgtable.h: Adjust VMALLOC_END to play nicely with -+ fixmap. Add PAGE_KERNEL_NOCACHE. -+ -+2004-03-21 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Makefile: Remove defconfig- parsing, this is now done in a -+ generic fashion by the top-level Makefile. -+ -+ Remove -Os on CONFIG_EMBEDDED, this is now done already by -+ CONFIG_CC_OPTIMIZE_FOR_SIZE. -+ -+ * arch/sh/configs/defconfig-%: Renamed to %_defconfig. -+ * arch/sh/configs/dreamcast_defconfig: Update dreamcast defconfig. -+ -+ * Documentation/sh/new-machine.txt: Update notes about defconfigs. -+ -+ * arch/sh/Kconfig: Re-order the cpufreq options, move them into their -+ own menu in the same way i386 does. -+ -+ * arch/sh/drivers/dma/Kconfig: Place DMA options inside their own menu. -+ * arch/sh/cchips/Kconfig: Likewise. -+ -+ * drivers/video/pvr2fb.c (pvr2fb_setcolreg): Work still needs to be -+ done on the hardware palette, use the pseudo_palette as a fallback for -+ 16/32bpp modes for the time being (this could be worked around with -+ getcolreg(), but as that's gone now...). -+ -+ * drivers/maple/Kconfig: Removed. -+ -+ * drivers/input/mouse/maplemouse.c (dc_mouse_connect): init input dev, -+ cleanup compile warnings. Don't use MOD_INC_USE_COUNT. -+ (dc_mouse_disconnect): Don't use MOD_DEC_USE_COUNT. -+ -+ * drivers/input/keyboard/maple_keyb.c (dc_kbd_connect): Same as for -+ maplemouse. -+ (dc_kbd_disconnect): Likewise. -+ -+ * drivers/input/joystick/maplecontrol.c: Likewise. -+ -+ * include/asm-sh/pgtable.h (pgprot_writecombine): Added. -+ -+ * drivers/video/fbmem.c (fb_mmap): Add sh as a pgprot_writecombine() -+ user. -+ -+2004-03-16 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Add HugeTLB page size selection. -+ -+ * arch/sh/mm/Makefile: Add hugetlbpage.o -+ * arch/sh/mm/hugetlbpage.c: Cloned from sparc64. -+ * arch/sh/mm/tlb-sh4.c (update_mmu_cache): Use _PAGE_WT in the -+ CONFIG_SH_WRITETHROUGH case. -+ -+ * fs/Kconfig: Add SuperH to the list of platforms that support -+ hugetlbfs. -+ -+ * include/asm-sh/page.h: Add huge page support. -+ * include/asm-sh/pgtable.h: Make PAGE_FILE use _PAGE_WT to free -+ up _PAGE_SZ[0-1] bits and add huge page support that makes use -+ of these. -+ -+2004-03-15 Andriy Skulysh <askulysh@image.kiev.ua> -+ -+ * arch/sh/boards/hp6xx/hp680/mach.c, -+ arch/sh/boards/hp6xx/hp680/setup.c, arch/sh/cchips/hd6446x/hd64461/io.c, -+ arch/sh/cchips/hd6446x/hd64461/setup.c, arch/sh/kernel/cpu/irq_ipr.c, -+ arch/sh/kernel/sh_ksyms.c, drivers/ide/legacy/ide-cs.c, -+ drivers/input/keyboard/Kconfig, drivers/input/keyboard/Makefile, -+ drivers/input/keyboard/hp600_keyb.c, drivers/input/keyboard/scan_keyb.c, -+ drivers/input/keyboard/scan_keyb.h, drivers/pcmcia/Kconfig, -+ drivers/pcmcia/Makefile, drivers/pcmcia/hd64461_ss.c, -+ drivers/serial/sh-sci.c, drivers/video/hitfb.c, -+ include/asm-sh/cpu-sh3/dac.h, include/asm-sh/hd64461/hd64461.h, -+ include/asm-sh/hd64461/io.h, include/asm-sh/hp6xx/hp6xx.h, -+ include/asm-sh/irq.h, sound/oss/Kconfig, sound/oss/Makefile, -+ sound/oss/sh_dac_audio.c: hp680 updates. -+ -+2004-03-13 Peter Garrone <pgarrone@linuxmail.org> -+ -+ * arch/sh/kernel/traps.c (show_stack): Set stack pointer from -+ task structure so that sysrq dumps stack calltrace for each task -+ rather than N repeats of current task. -+ -+2004-03-11 Yutaro Ebihara <ebiharaml@si-linux.com> -+ Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/sys_sh.c (arch_get_unmapped_area): #ifdef'ed -+ for HAVE_ARCH_UNMAPPED_AREA. Speedup searching. -+ * include/asm-sh/cpu-sh3/cacheflush.h (HAVE_ARCH_UNMAPPED_AREA): -+ Define. -+ -+2004-03-11 Paul Mundt <lethal@linux-sh.org> -+ -+ * include/asm-sh/dma-mapping.h (dma_set_mask): Cloned from MIPS. -+ (dma_sync_single_range): Added. -+ -+ * arch/sh/boards/adx/Makefile, arch/sh/boards/bigsur/Makefile, -+ arch/sh/boards/cat68701/Makefile, arch/sh/boards/cqreek/Makefile, -+ arch/sh/boards/dmida/Makefile, arch/sh/boards/dreamcast/Makefile, -+ arch/sh/boards/ec3104/Makefile, arch/sh/boards/harp/Makefile, -+ arch/sh/boards/hp6xx/hp620/Makefile, arch/sh/boards/hp6xx/hp680/Makefile, -+ arch/sh/boards/hp6xx/hp690/Makefile, arch/sh/boards/mpc1211/Makefile, -+ arch/sh/boards/overdrive/Makefile, arch/sh/boards/saturn/Makefile, -+ arch/sh/boards/se/770x/Makefile, arch/sh/boards/se/7751/Makefile, -+ arch/sh/boards/sh2000/Makefile, arch/sh/boards/snapgear/Makefile, -+ arch/sh/boards/systemh/Makefile, arch/sh/boards/unknown/Makefile, -+ arch/sh/Kconfig, arch/sh/cchips/hd6446x/hd64461/Makefile, -+ arch/sh/cchips/hd6446x/hd64465/Makefile, arch/sh/kernel/sys_sh.c, -+ drivers/Makefile, drivers/cdrom/Makefile, drivers/char/sh-sci.c, -+ drivers/char/tty_io.c, drivers/ide/pci/alim15x3.c, drivers/ide/Kconfig, -+ drivers/pci/pci.ids, drivers/serial/Makefile, drivers/serial/Kconfig, -+ drivers/video/Makefile, drivers/video/Kconfig, drivers/video/fbmem.c, -+ drivers/Kconfig, include/asm-sh/cache.h, include/asm-sh/hardirq.h, -+ include/asm-sh/kmap_types.h, include/asm-sh/param.h, -+ include/asm-sh/unistd.h, include/linux/pci_ids.h, include/linux/mm.h, -+ include/linux/fb.h, include/linux/serial_core.h, Makefile, -+ mm/memory.c, mm/mmap.c, net/ipv4/ipconfig.c: Merge 2.6.4. -+ -+ * arch/sh/drivers/pci/Kconfig: Remove CONFIG_PCI_DMA. -+ * arch/sh/drivers/pci/Makefile: Remove pci-dma.o -+ * arch/sh/drivers/pci/pci-dma.c: Deleted. -+ * arch/sh/drivers/pci/dma-dreamcast.c (pci_alloc_consistent): -+ Renamed to __pci_alloc_consistent(). -+ (pci_free_consistent): Renamed to __pci_free_consistent(). -+ -+ * arch/sh/mm/Makefile: Add consistent.o -+ * arch/sh/mm/consistent.c: New file. -+ -+ * include/asm-sh/dma-mapping.h: Implement DMA mapping support using -+ consistent_xxxx() interface. -+ * include/asm-sh/pci.h: Wrap PCI DMA routines to DMA mapping API. -+ -+ * TODO: DMA mapping is done, knock it off the list.. -+ -+2004-02-28 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/Kconfig: Merged from mainline. Add maple. -+ -+ * drivers/maple/Kconfig: New file. -+ -+ * arch/sh/Kconfig: Get rid of the majority of drivers/ sources, use -+ the top-level drivers/Kconfig instead. Move maple definitions out -+ to their own Kconfig. -+ -+ * drivers/serial/sh-sci.c (sci_receive_chars): Fixup break_flag -+ references to satisfy SH-3 build. -+ -+2004-02-26 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/configs/defconfig-hp680: Update defconfig. -+ -+ * arch/sh/cchips/Kconfig: Add CONFIG_HD6446X_SERIES option, make this -+ selectable by anyone instead of relying on individual boards to select. -+ -+ * arch/sh/kernel/time.c: Fixup IFC/BFC/STC tables for SH-3. -+ -+ * arch/sh/boards/hp6xx/hp680/setup.c: Include asm/io.h. -+ -+ * drivers/video/hitfb.c (hitfb_set_par): Doesn't exist, don't reference -+ it in fb ops. -+ -+ * include/asm-sh/dma-mapping.h (dma_alloc_coherent): Added dummy -+ code to satisfy new dmapool interface when CONFIG_PCI=n. -+ (dma_free_coherent): Likewise. -+ -+2004-02-24 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/cpu/sh4/sq.c (sq_flush): Fix thinko, addr is input, -+ not output. -+ (sq_flush_range): Fix completion wait, read from P4SEG_STORE_QUE -+ instead of the base address of a given SQ mapping. -+ (__sq_alloc_map): Add 1 to map->size to fix an off by one issue -+ that induced an unhandled address translation fault. -+ (__sq_remap): Revamp locking to be saner for SMP and preempt. -+ Get rid of old page table setup code, setup a SQ VMA instead. -+ (sq_remap): Add sanity checks on phys addr. PAGE_ALIGN() size. -+ (sq_unmap): Get rid of old code that only worked for a single -+ translation, wrap to vfree() instead to undo the work done by -+ remap_area_pages() in __sq_remap(). -+ -+ * arch/sh/mm/ioremap.c (p3_iounmap): void function doesn't return. -+ -+2004-02-22 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/boards/se/770x/io.c (se_insb): Don't use casted object -+ as lvalue. -+ (se_insw, se_outsb, se_outsw): Likewise. -+ * arch/sh/kernel/io.c (memcpy_fromio, memcpy_toio): Likewise. -+ * arch/sh/kernel/module.c (COPY_UNALIGNED_WORD): Likewise. -+ -+2004-02-22 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/boards/se/770x/irq.c: Include the correct machine -+ specific header file. -+ * arch/sh/kernel/cf-enabler.c: Likewise. -+ * drivers/net/stnic.c: Likewise. -+ -+2004-02-21 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/entry.S (sys_call_table): Kill off .rept usage for -+ padding. Use sys_ni_syscall directly for NR_syscalls. -+ -+2004-02-20 Yoshinori Sato <ysato@users.sourceforge.jp> -+ -+ * drivers/char/sh-sci.c (sci_request_irq): Don't reference -+ sci_br_interrupt on SCI_ONLY systems. -+ -+2004-02-20 Yutaro Ebihara <ebiharaml@si-linux.com> -+ -+ * arch/sh/mm/init.c (mem_init): Set max_mapnr and num_physpages -+ correctly. -+ -+2004-02-19 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/char/watchdog/shwdt.c (sh_wdt_init): Fix build error. -+ * drivers/serial/sh-sci.h: Move PORT_SCI/SCIF/IRDA definitions .. -+ -+ * include/linux/serial_core.h: .. here. -+ -+ * include/asm-sh/pci.h (pci_map_page, pci_unmap_page): Added. -+ -+ * arch/sh/drivers/pci/Kconfig: Set CONFIG_SH_PCIDMA_NONCOHERENT by -+ default. -+ * arch/sh/mm/extable.c (search_extable): Deleted. We use the generic -+ one instead. -+ -+ * drivers/serial/sh-sci.[ch]: Add h8 support. -+ -+2004-02-19 Peter Garrone <pgarrone@linuxmail.org> -+ -+ * drivers/serial/sh-sci.c, drivers/serial/sh-sci.h: Fix rx interrupt -+ and sysrq handling. -+ -+2004-02-19 Paul Mundt <lethal@linux-sh.org> -+ Richard Curnow <richard.curnow@superh.com> -+ -+ * arch/sh/mm/cache-sh4.c (detect_cpu_and_cache_system): Add effective -+ CCN CVR probing so that the way_shift/entry_mask/sets are probed -+ from CVR.ICS/CVR.OCS at run-time on anything that isn't a direct-mapped -+ cache. -+ -+ * include/asm-sh/processor.h: Define CCN_CVR. -+ -+2004-02-19 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_range): Fix pte-table boundary -+ check logic. -+ (detect_cpu_and_cache_system): Don't set CPU_HAS_P2_FLUSH_BUG for -+ SH7750R. -+ -+2004-02-18 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile, arch/sh/Kconfig, drivers/char/Makefile, -+ drivers/char/keyboard.c, drivers/char/tty_io.c, -+ drivers/char/watchdog/shwdt.c, drivers/ide/Kconfig, -+ drivers/ide/pci/alim15x3.c, drivers/net/8139too.c, -+ drivers/net/stnic.c, drivers/pci/pci.ids, drivers/video/Kconfig, -+ drivers/video/Makefile, drivers/video/fbmem.c, fs/nfs/inode.c, -+ include/asm-sh/io.h, include/asm-sh/pci.h, include/linux/fb.h, -+ include/linux/input.h, include/linux/mm.h, include/linux/pci_ids.h, -+ mm/memory.c: Merge 2.6.3. -+ -+2004-02-10 Yoshinori Sato <ysato@users.sourceforge.jp> -+ -+ * drivers/char/sh-sci.c, drivers/char/sh-sci.h: Add H8/300 support. -+ -+2004-02-06 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/process.c (copy_thread): Don't clear TIF_USEDFPU -+ here. -+ -+ * include/asm-sh/signal.h: Hide kernel stuff from userland. -+ -+2004-02-04 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig, drivers/char/keyboard.c, drivers/char/Makefile, -+ drivers/char/sysrq.c, drivers/char/tty_io.c, -+ drivers/char/watchdog/shwdt.c, drivers/ide/Kconfig, -+ drivers/input/keyboard/maple_keyb.c, drivers/net/8139too.c, -+ drivers/pci/pci.ids, drivers/serial/Kconfig, drivers/video/Makefile, -+ drivers/video/Kconfig, drivers/video/fbmem.c, fs/nfs/inode.c, -+ include/asm-sh/byteorder.h, include/asm-sh/floppy.h, -+ include/asm-sh/pgtable.h, include/asm-sh/smp.h, -+ include/asm-sh/spinlock.h, include/linux/miscdevice.h, -+ include/linux/input.h, include/linux/pci_ids.h, include/linux/mm.h, -+ Makefile, mm/memory.c, mm/mmap.c, mm/msync.c: Merge 2.6.2. -+ -+2004-02-01 Andriy Skulysh <askulysh@image.kiev.ua> -+ -+ * drivers/video/hitfb.c (hitfb_set_base, hitfb_accel_wait, -+ hitfb_accel_start, hitfb_accel_set_dest, hitfb_accel_solidfill, -+ hitfb_accel_bitblt, hitfb_fillrect, hitfb_copyarea, -+ hitfb_pan_display, hitfb_blank): Add hitfb acceleration. -+ -+ * arch/sh/boards/hp6xx/hp680/setup.c: Added. -+ -+ * arch/sh/cchips/hd6446x/hd64461/io.c (hd64461_insb, -+ hd64461_insw, hd64461_insl, hd64461_outsb, hd64461_outsw, -+ hd64461_outsl): Added. -+ -+ * arch/sh/configs/defconfig-hp680: Added. -+ -+ * include/asm-sh/hd64461/hd64461.h: Add definitions. -+ * include/asm-sh/hd64461/io.h: Add io definitions. -+ -+2004-02-01 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/video/pvr2fb.c (pvr2fb_check_var): Fix typo in pixclock -+ verification. Clean up FB_SYNC_BROADCAST mess being set even with -+ VO_VGA. And finally, don't clobber the margins when being invoked -+ through __fb_try_mode(). -+ (pvr2fb_common_init): Use fb_memset() instead of memset_io(). -+ We always have 256 cmap entries, alloc accordingly. -+ -+ * drivers/video/hitfb.c (hitfb_init): Move color bitfield setting .. -+ (hitfb_check_var): here. -+ -+ Also get rid of hd64461_xxx() IO routine usage, use fb_readX/writeX() -+ instead, use the generic routines outright, and take care of the -+ port2mem issues in the board setup code. -+ -+ * drivers/video/Makefile: Yank cfbcopyarea.o from the hitfb objs, -+ we don't use it anymore. -+ -+ * arch/sh/boards/hp6xx/hp680/setup.c (platform_setup): Setup the -+ io port base, use generic io routines. -+ -+2004-01-18 Paul Mundt <lethal@linux-sh.org> -+ -+ * include/linux/fb.h: Merged from stock 2.6.1. Add sh to the list of -+ platforms to wrap fb_xxx to __raw_xxx. -+ -+2004-01-12 Kaz Kojima <kkojima@rr.iij4u.or.jp> -+ -+ * arch/sh/kernel/signal.c (handle_signal): Disable interrupts -+ in gUSA handling when enabling preemption. -+ * arch/sh/kernel/process.c (__switch_to): Do gUSA handling -+ when enabling preemption. -+ * arch/sh/kernel/entry.S: Jump to resume_userspace if it's -+ return to user space also in preemption case. Don't use short -+ branches with far labels to avoid the assembler warnings. -+ Correct the condition for exception path. -+ -+2004-01-12 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/cpu/sh4/fpu.c (save_fpu): Clear PF_USEDFPU before -+ saving fpu to avoid fpscr corruption while preemption. -+ * arch/sh/kernel/process.c (copy_thread): Remove setting SR_FD -+ already done in unlazy_fpu. -+ -+2004-01-12 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/entry.S (restore_all): Don't inherit current FD-bit, -+ resotore saved FD-bit instead. -+ (handle_exception): Set FD-bit when entering kernel. -+ * arch/sh/kernel/cpu/sh4/fpu.c (save_fpu): Add 2nd argument 'regs'. -+ Reset FD-bit while fpu proccesing. Add 'regs' parameter for -+ release_fpu. -+ (restore_fpu): Reset FD-bit while fpu proccesing. -+ (fpu_init): Likewise. -+ (do_fpu_error): Add 'regs' parameter for save_fpu. -+ (do_fpu_state_restore): Add 'regs' parameter for grab_fpu. -+ * arch/sh/kernel/process.c (flush_thread): Add 'regs' parameter for -+ clear_fpu. -+ (dump_fpu): Add 'regs' parameter for unlazy_fpu. -+ (copy_thread): Likewise. -+ (__switch_to): Likewise. -+ * arch/sh/kernel/signal.c (save_sigcontext_fpu): Add 'regs' argument. -+ Add 'regs' parameter for unlazy_fpu. -+ (restore_sigcontext): Add 'regs' parameter for clear_fpu. -+ (setup_sigcontext): Add 'regs' parameter for save_sigcontext_fpu. -+ * arch/sh/kernel/cpu/init.c (sh_cpu_init): Use disable_fpu instead -+ of release_fpu. -+ * include/asm-sh/processor.h: Include asm/ptrace.h for struct pt_regs. -+ (start_thread): Set FD bit. -+ (enable_fpu): New function. -+ (disable_fpu): New function. -+ (release_fpu): Set FD-bit of saved SR instead of current SR. -+ (grub_fpu): Clear FD-bit of saved SR instead of current SR. -+ (unlazy_fpu): Add 'regs' argument. Pass 'regs' to save_fpu. -+ (clear_fpu): Add 'regs' argument. Pass 'regs' to release_fpu. -+ * include/asm-sh/ptrace.h: Don't include asm/processor.h -+ -+2004-01-12 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/kernel/cpu/rtc.c (sh_rtc_gettimeofday): Don't call -+ schedule_timeout. Re-read RTC registers if MSB of R64CNT was changed -+ while reading them on SH-4 which has unreliable CF bit. Reduce -+ interrupt disabled area. -+ -+2004-01-12 Masaki Saitoh <masaki-saitoh@aandd.co.jp> -+ -+ * arch/sh/kernel/cpu/rtc.c (sh_rtc_gettimeofday): Protect RTC -+ from interrupt. -+ (sh_rtc_settimeofday): Likewise. -+ * arch/sh/kernel/irq.c (do_IRQ): Prevent any preemption while -+ the handler called. -+ -+2004-01-12 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/mm/fault.c (update_mmu_cache): Protect __flush_tlb_page -+ from interrupt. -+ -+2004-01-09 Paul Mundt <lethal@linux-sh.org> -+ -+ * Makefile, arch/sh/Kconfig, arch/sh/kernel/irq.c, -+ drivers/char/keyboard.c, drivers/ide/Kconfig, -+ drivers/mtd/chips/jedec_probe.c, drivers/net/8139too.c, -+ drivers/pci/pci.ids, include/linux/input.h, include/linux/mm.h, -+ include/linux/pci_ids.h, mm/memory.c, mm/mmap.c: Merge 2.6.1. -+ -+2004-01-08 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/video/Kconfig: Drop CONFIG_FB_PVR2_DEBUG, we use the -+ standard pr_debug() facility these days. -+ * drivers/video/pvr2fb.c (pvr2fb_write): Cleanup return semantics. -+ We manually need to page_cache_release() each pinned page, regardless -+ of whether we get everything we asked for or not. -+ -+2004-01-07 Paul Mundt <lethal@linux-sh.org> -+ -+ * drivers/video/pvr2fb.c (pvr2fb_write): If we get a contiguous -+ region from get_user_pages(), do the write in one giant transfer. -+ Kill the flush_dcache_page(), this is already done in generic code. -+ (pvr2fb_init): Fix allocation typo, make sure we allocate the -+ proper size.. this was inadvertently trampling the cmap. -+ (pvr2fb_common_init): Actually allocate the cmap by way of -+ fb_alloc_cmap(). -+ -+2004-01-04 Paul Mundt <lethal@linux-sh.org> -+ -+ * scripts/treelink.sh, scripts/treeunlink.sh: Add arch and BK dirs -+ to the prune list. -+ -diff -ruN linux-2.6.17-vanilla/ChangeLog-2005 linux-2.6.17/ChangeLog-2005 ---- linux-2.6.17-vanilla/ChangeLog-2005 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/ChangeLog-2005 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,162 @@ -+2005-10-31 Andriy Skulysh <askulysh@image.kiev.ua> -+ -+ Hitfb update. -+ -+ * drivers/video/hitfb.c: Fix pannig and bitblt. -+ (hitfb_sync): New function. -+ (hitfb_check_var): New function. -+ (hitfb_set_par): New function. -+ * drivers/video/backlight/hp680_bl.c: Use platform device id -1. -+ -+2005-08-22 Andriy Skulysh <askulysh@image.kiev.ua> -+ -+ Add SH3 DMA support. -+ -+ * include/asm-sh/cpu-sh3/dma-sh.h: New file. -+ * include/asm-sh/cpu-sh4/dma-sh.h: New file. -+ * arch/sh/drivers/dma/dma-sh.c: Add SH3 DMA. -+ * arch/sh/drivers/dma/dma-sh.h: Likewise. -+ * include/asm-sh/cpu-sh3/dma.h: Likewise. -+ * include/asm-sh/dma.h: Likewise. -+ -+2005-08-15 Andriy Skulysh <askulysh@image.kiev.ua> -+ -+ Fix bug in hd64461 pcmcia module. -+ -+ * drivers/pcmcia/hd64461_ss.c: Better init procedure. -+ * arch/sh/boards/hp6xx/setup.c: Disable hd64461 pcmcia and DAC at boot. -+ -+2005-07-25 SUGIOKA Toshinobu <sugioka@itonet.co.jp> -+ -+ * arch/sh/lib/memset.S (memset): Correct 2nd argument handling. -+ -+2005-06-15 Andriy Skulysh <askulysh@image.kiev.ua> -+ -+ Add linux backlight support for HP Jornada 680. -+ -+ * drivers/video/hitfb.c: Remove jornada's backlight stuff. -+ * drivers/video/backlight/Makefile: New file. -+ * drivers/video/backlight/Kconfig: New file. -+ * drivers/video/backlight/hp680_bl.c: New file. -+ -+2005-06-10 Andriy Skulysh <askulysh@image.kiev.ua> -+ -+ Add sh7709 clock support. -+ -+ * arch/sh/kernel/cpu/clock.c: Propagate bus clock. -+ * arch/sh/kernel/cpu/sh3/clock-sh7709.c: New file. -+ * arch/sh/kernel/cpu/sh3/Makefile: Add clock-sh7709.o. -+ * sound/oss/sh_dac_audio.c: Update to clock framework. -+ -+2005-06-10 Andriy Skulysh <askulysh@image.kiev.ua> -+ -+ Fix hp6xx changes. Split HP600 keyboard routine for 620 and 680/690. -+ -+ * include/asm-sh/irq.h: Fix hp6xx changes. -+ * drivers/input/touchscreen/Kconfig: Likewise. -+ * drivers/video/hitfb.c: HP690 seems to have only 512 Kb video memory. -+ * drivers/input/keyboard/hp620_keyb.c: New file. -+ * drivers/input/keyboard/hp680_keyb.c: New file. -+ * drivers/input/keyboard/hp600_keyb.c: Removed file. -+ * drivers/input/keyboard/Makefile: Split update. -+ * drivers/input/keyboard/Kconfig: Split update. -+ -+2005-05-21 Paul Mundt <lethal@linux-sh.org> -+ -+ Patches from Hosokawa-san <hosokawa@ace-jp.com>: -+ -+ * drivers/char/Makefile: Add rtc9701_rtc rule that was dropped. -+ * drivers/char/rtc9701_rtc.c: Update rtc_lock definition. -+ (rtc9701_rtc_interrupt): Modify for irqreturn_t type. -+ -+2005-03-26 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/Kconfig: Make TMU selectable (CONFIG_SH_TMU). -+ Drop CONFIG_SH_PCLK_CALC, we make this the default if we -+ have an RTC and no set PCLK value. -+ -+ * arch/sh/boards/overdrive/Makefile: Drop time.o -+ * arch/sh/boards/overdrive/time.c: Deleted. -+ * arch/sh/boards/overdrive/setup.c (platform_setup): Drop -+ od_time_init usage, rely on the clock framework instead. -+ -+ * arch/sh/kernel/Makefile: Add timers/ -+ * arch/sh/kernel/time.c: Rip out clock and TMU code. -+ * arch/sh/kernel/setup.c: Remove clock reporting, use the generic -+ show_clocks() provided by the clock framework instead. -+ -+ * arch/sh/kernel/timers/timer.c: New file, common bits for timer -+ framework. -+ * arch/sh/kernel/timers/timer-tmu.c: Move TMU system timer code -+ here, hook into common timer framework. -+ -+ * arch/sh/kernel/cpu/Makefile: Add clock.o -+ * arch/sh/kernel/cpu/clock.c: New file, adding clock framework. -+ -+ * arch/sh/kernel/cpu/sh3/Makefile: Add clock support. -+ * arch/sh/kernel/cpu/sh3/clock-sh3.c, -+ arch/sh/kernel/cpu/sh3/clock-sh7300.c, -+ arch/sh/kernel/cpu/sh3/clock-sh7705.c: SH-3 clock support. -+ -+ * arch/sh/kernel/cpu/sh4/Makefile: Add clock support. -+ * arch/sh/kernel/cpu/sh4/clock-sh4-202.c, -+ arch/sh/kernel/cpu/sh4/clock-sh4.c, -+ arch/sh/kernel/cpu/sh4/clock-sh73180.c: SH-4 clock support. -+ -+ * drivers/serial/sh-sci.c: Update for clock framework. -+ * drivers/serial/sh-sci.h: Likewise. -+ -+ * include/asm-sh/clock.h: New file for clock framework. -+ * include/asm-sh/timer.h: New file for timer framework. -+ -+ * include/asm-sh/freq.h: Remove unused cruft. -+ * include/asm-sh/processor.h: Remove clocks from struct sh_cpuinfo. -+ -+ * include/asm-sh/timex.h: Update CLOCK_TICK_RATE to match HZ. -+ -+2005-03-10 Andriy Skulysh <askulysh@image.kiev.ua> -+ -+ * drivers/pcmcia/hd64461_ss.c (hd64461_init_soket): Update -+ for 2.6.11. -+ -+2005-03-06 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/mm/cache-sh4.c (flush_cache_range): page align the -+ end address, this was causing an unaligned fault in some cases. -+ -+ Also check the size of the range, of the range >= 64 pages, -+ just purge the entire dcache instead of manually walking the -+ page tables and checking for aliases. This gives a noticeable -+ performance win, as per sh64. -+ -+2005-03-02 Paul Mundt <lethal@linux-sh.org> -+ -+ Merge 2.6.11. -+ -+ * TODO: Get rid of the in-kernel TODO list, we will use the wiki -+ instead. -+ -+ * arch/sh/configs/*_defconfig: Update for 2.6.11. -+ -+2005-02-02 Kristoffer Ericson <kristoffer@jlime.com> -+ -+ * arch/sh/boards/hp6xx/hp620/Makefile: Add setup.o rule. -+ * arch/sh/boards/hp6xx/hp620/setup.c: New file adding hp620 setup -+ code (cloned from hp680 with some minor modification). -+ -+2005-02-01 Kristoffer Ericson <kristoffer@jlime.com> -+ -+ * drivers/pcmcia/hd64461_ss.c (hd64461_set_mem_map): Fix build problem -+ with start address. -+ -+2005-01-31 Paul Mundt <lethal@linux-sh.org> -+ -+ * arch/sh/kernel/cpufreq.c (sh_cpufreq_setstate): Update for cpumask -+ changes. -+ -+2005-01-31 Paul Mundt <lethal@linux-sh.org> -+ Christoph Hellwig <hch@lst.de> -+ -+ * arch/sh/Kconfig, arch/sh/kernel/irq.c, include/asm-sh/hardirq.h: -+ Patch from Christoph Hellwig implementing generic hardirq support. -+ Initial testing done by Tom Rini on SE7750. -diff -ruN linux-2.6.17-vanilla/Documentation/CVS/Entries linux-2.6.17/Documentation/CVS/Entries ---- linux-2.6.17-vanilla/Documentation/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/Documentation/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+D/sh//// -diff -ruN linux-2.6.17-vanilla/Documentation/CVS/Repository linux-2.6.17/Documentation/CVS/Repository ---- linux-2.6.17-vanilla/Documentation/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/Documentation/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/Documentation -diff -ruN linux-2.6.17-vanilla/Documentation/CVS/Root linux-2.6.17/Documentation/CVS/Root ---- linux-2.6.17-vanilla/Documentation/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/Documentation/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/Documentation/sh/CVS/Entries linux-2.6.17/Documentation/sh/CVS/Entries ---- linux-2.6.17-vanilla/Documentation/sh/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/Documentation/sh/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,4 @@ -+/kgdb.txt/1.2/Fri Nov 1 17:19:12 2002// -+/new-machine.txt/1.6/Sun Jan 15 17:32:05 2006// -+/register-banks.txt/1.1/Sat Jan 7 20:22:21 2006// -+D -diff -ruN linux-2.6.17-vanilla/Documentation/sh/CVS/Repository linux-2.6.17/Documentation/sh/CVS/Repository ---- linux-2.6.17-vanilla/Documentation/sh/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/Documentation/sh/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/Documentation/sh -diff -ruN linux-2.6.17-vanilla/Documentation/sh/CVS/Root linux-2.6.17/Documentation/sh/CVS/Root ---- linux-2.6.17-vanilla/Documentation/sh/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/Documentation/sh/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/Documentation/sh/new-machine.txt linux-2.6.17/Documentation/sh/new-machine.txt ---- linux-2.6.17-vanilla/Documentation/sh/new-machine.txt 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/Documentation/sh/new-machine.txt 2006-07-12 16:54:19.000000000 +0000 -@@ -41,11 +41,6 @@ - | - .. more boards here ... - --It should also be noted that each board is required to have some certain --headers. At the time of this writing, io.h is the only thing that needs --to be provided for each board, and can generally just reference generic --functions (with the exception of isa_port2addr). -- - Next, for companion chips: - . - `-- arch -@@ -104,12 +99,13 @@ - Both the Solution Engine and the hp6xx boards are an example of this. - - After you have setup your new arch/sh/boards/ directory, remember that you --also must add a directory in include/asm-sh for headers localized to this --board. In order to interoperate seamlessly with the build system, it's best --to have this directory the same as the arch/sh/boards/ directory name, --though if your board is again part of a family, the build system has ways --of dealing with this, and you can feel free to name the directory after --the family member itself. -+should also add a directory in include/asm-sh for headers localized to this -+board (if there are going to be more than one). In order to interoperate -+seamlessly with the build system, it's best to have this directory the same -+as the arch/sh/boards/ directory name, though if your board is again part of -+a family, the build system has ways of dealing with this (via incdir-y -+overloading), and you can feel free to name the directory after the family -+member itself. - - There are a few things that each board is required to have, both in the - arch/sh/boards and the include/asm-sh/ heirarchy. In order to better -@@ -122,6 +118,7 @@ - * arch/sh/boards/vapor/setup.c - Setup code for imaginary board - */ - #include <linux/init.h> -+#include <asm/rtc.h> /* for board_time_init() */ - - const char *get_system_type(void) - { -@@ -152,79 +149,57 @@ - } - - Our new imaginary board will also have to tie into the machvec in order for it --to be of any use. Currently the machvec is slowly on its way out, but is still --required for the time being. As such, let us take a look at what needs to be --done for the machvec assignment. -+to be of any use. - - machvec functions fall into a number of categories: - - - I/O functions to IO memory (inb etc) and PCI/main memory (readb etc). -- - I/O remapping functions (ioremap etc) -- - some initialisation functions -- - a 'heartbeat' function -- - some miscellaneous flags -- --The tree can be built in two ways: -- - as a fully generic build. All drivers are linked in, and all functions -- go through the machvec -- - as a machine specific build. In this case only the required drivers -- will be linked in, and some macros may be redefined to not go through -- the machvec where performance is important (in particular IO functions). -- --There are three ways in which IO can be performed: -- - none at all. This is really only useful for the 'unknown' machine type, -- which us designed to run on a machine about which we know nothing, and -- so all all IO instructions do nothing. -- - fully custom. In this case all IO functions go to a machine specific -- set of functions which can do what they like -- - a generic set of functions. These will cope with most situations, -- and rely on a single function, mv_port2addr, which is called through the -- machine vector, and converts an IO address into a memory address, which -- can be read from/written to directly. -- --Thus adding a new machine involves the following steps (I will assume I am --adding a machine called vapor): -+ - I/O mapping functions (ioport_map, ioport_unmap, etc). -+ - a 'heartbeat' function. -+ - PCI and IRQ initialization routines. -+ - Consistent allocators (for boards that need special allocators, -+ particularly for allocating out of some board-specific SRAM for DMA -+ handles). -+ -+There are machvec functions added and removed over time, so always be sure to -+consult include/asm-sh/machvec.h for the current state of the machvec. -+ -+The kernel will automatically wrap in generic routines for undefined function -+pointers in the machvec at boot time, as machvec functions are referenced -+unconditionally throughout most of the tree. Some boards have incredibly -+sparse machvecs (such as the dreamcast and sh03), whereas others must define -+virtually everything (rts7751r2d). -+ -+Adding a new machine is relatively trivial (using vapor as an example): -+ -+If the board-specific definitions are quite minimalistic, as is the case for -+the vast majority of boards, simply having a single board-specific header is -+sufficient. - -- - add a new file include/asm-sh/vapor/io.h which contains prototypes for -+ - add a new file include/asm-sh/vapor.h which contains prototypes for - any machine specific IO functions prefixed with the machine name, for - example vapor_inb. These will be needed when filling out the machine - vector. - -- This is the minimum that is required, however there are ample -- opportunities to optimise this. In particular, by making the prototypes -- inline function definitions, it is possible to inline the function when -- building machine specific versions. Note that the machine vector -- functions will still be needed, so that a module built for a generic -- setup can be loaded. -- -- - add a new file arch/sh/boards/vapor/mach.c. This contains the definition -- of the machine vector. When building the machine specific version, this -- will be the real machine vector (via an alias), while in the generic -- version is used to initialise the machine vector, and then freed, by -- making it initdata. This should be defined as: -- -- struct sh_machine_vector mv_vapor __initmv = { -- .mv_name = "vapor", -- } -- ALIAS_MV(vapor) -- -- - finally add a file arch/sh/boards/vapor/io.c, which contains -- definitions of the machine specific io functions. -- --A note about initialisation functions. Three initialisation functions are --provided in the machine vector: -- - mv_arch_init - called very early on from setup_arch -- - mv_init_irq - called from init_IRQ, after the generic SH interrupt -- initialisation -- - mv_init_pci - currently not used -- --Any other remaining functions which need to be called at start up can be --added to the list using the __initcalls macro (or module_init if the code --can be built as a module). Many generic drivers probe to see if the device --they are targeting is present, however this may not always be appropriate, --so a flag can be added to the machine vector which will be set on those --machines which have the hardware in question, reducing the probe to a --single conditional. -+ Note that these prototypes are generated automatically by setting -+ __IO_PREFIX to something sensible. A typical example would be: -+ -+ #define __IO_PREFIX vapor -+ #include <asm/io_generic.h> -+ -+ somewhere in the board-specific header. Any boards being ported that still -+ have a legacy io.h should remove it entirely and switch to the new model. -+ -+ - Add machine vector definitions to the board's setup.c. At a bare minimum, -+ this must be defined as something like: -+ -+ struct sh_machine_vector mv_vapor __initmv = { -+ .mv_name = "vapor", -+ }; -+ ALIAS_MV(vapor) -+ -+ - finally add a file arch/sh/boards/vapor/io.c, which contains definitions of -+ the machine specific io functions (if there are enough to warrant it). - - 3. Hooking into the Build System - ================================ -@@ -303,4 +278,3 @@ - oldconfig (prompting you for any new options since the time of creation), - and start you on your way to having a functional kernel for your new - board. -- -diff -ruN linux-2.6.17-vanilla/Documentation/sh/register-banks.txt linux-2.6.17/Documentation/sh/register-banks.txt ---- linux-2.6.17-vanilla/Documentation/sh/register-banks.txt 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/Documentation/sh/register-banks.txt 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,33 @@ -+ Notes on register bank usage in the kernel -+ ========================================== -+ -+Introduction -+------------ -+ -+The SH-3 and SH-4 CPU families traditionally include a single partial register -+bank (selected by SR.RB, only r0 ... r7 are banked), whereas other families -+may have more full-featured banking or simply no such capabilities at all. -+ -+SR.RB banking -+------------- -+ -+In the case of this type of banking, banked registers are mapped directly to -+r0 ... r7 if SR.RB is set to the bank we are interested in, otherwise ldc/stc -+can still be used to reference the banked registers (as r0_bank ... r7_bank) -+when in the context of another bank. The developer must keep the SR.RB value -+in mind when writing code that utilizes these banked registers, for obvious -+reasons. Userspace is also not able to poke at the bank1 values, so these can -+be used rather effectively as scratch registers by the kernel. -+ -+Presently the kernel uses several of these registers. -+ -+ - r0_bank, r1_bank (referenced as k0 and k1, used for scratch -+ registers when doing exception handling). -+ - r2_bank (used to track the EXPEVT/INTEVT code) -+ - Used by do_IRQ() and friends for doing irq mapping based off -+ of the interrupt exception vector jump table offset -+ - r6_bank (global interrupt mask) -+ - The SR.IMASK interrupt handler makes use of this to set the -+ interrupt priority level (used by local_irq_enable()) -+ - r7_bank (current) -+ -diff -ruN linux-2.6.17-vanilla/Makefile linux-2.6.17/Makefile ---- linux-2.6.17-vanilla/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/Makefile 2006-07-12 16:54:19.000000000 +0000 -@@ -172,7 +172,7 @@ - # Default value for CROSS_COMPILE is not to prefix executables - # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile - --ARCH ?= $(SUBARCH) -+ARCH ?= sh - CROSS_COMPILE ?= - - # Architecture as present in compile.h -diff -ruN linux-2.6.17-vanilla/arch/CVS/Entries linux-2.6.17/arch/CVS/Entries ---- linux-2.6.17-vanilla/arch/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+D/sh//// -diff -ruN linux-2.6.17-vanilla/arch/CVS/Repository linux-2.6.17/arch/CVS/Repository ---- linux-2.6.17-vanilla/arch/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch -diff -ruN linux-2.6.17-vanilla/arch/CVS/Root linux-2.6.17/arch/CVS/Root ---- linux-2.6.17-vanilla/arch/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/CVS/Entries linux-2.6.17/arch/sh/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,14 @@ -+/Kconfig.debug/1.4/Mon Jan 30 16:05:57 2006/-ko/ -+D/boards//// -+D/boot//// -+D/cchips//// -+D/configs//// -+D/drivers//// -+D/kernel//// -+D/lib//// -+D/mm//// -+D/oprofile//// -+D/tools//// -+/Kconfig/1.100/Wed Jul 12 16:51:50 2006/-ko/ -+/Makefile/1.65/Wed Jul 12 16:51:50 2006/-ko/ -+D/math-emu//// -diff -ruN linux-2.6.17-vanilla/arch/sh/CVS/Repository linux-2.6.17/arch/sh/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh -diff -ruN linux-2.6.17-vanilla/arch/sh/CVS/Root linux-2.6.17/arch/sh/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/Kconfig linux-2.6.17/arch/sh/Kconfig ---- linux-2.6.17-vanilla/arch/sh/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/Kconfig 2006-07-12 16:54:19.000000000 +0000 -@@ -255,7 +255,7 @@ - value on any of the known systems will only lead to disaster. - - config MEMORY_SIZE -- hex "Physical memory size" -+ hex "Physical memory size" - default "0x00400000" - help - This sets the default memory size assumed by your SH kernel. It can -@@ -335,10 +335,19 @@ - default y - help - Selecting this option will enable support for SH processors that -- have FPU units (ie, SH77xx). -+ have FPU units (ie, SH77xx). - - This option must be set in order to enable the FPU. - -+config SH_FPU_EMU -+ bool "FPU emulation support" -+ depends on !SH_FPU && EXPERIMENTAL -+ default n -+ help -+ Selecting this option will enable support for software FPU emulation. -+ Most SH-3 users will want to say Y here, whereas most SH-4 users will -+ want to say N. -+ - config SH_DSP - bool "DSP support" - depends on !CPU_SH4 -@@ -400,9 +409,11 @@ - - endmenu - --#source "arch/sh/boards/renesas/hs7751rvoip/Kconfig" -+source "arch/sh/boards/renesas/hs7751rvoip/Kconfig" -+ -+source "arch/sh/boards/renesas/rts7751r2d/Kconfig" - --#source "arch/sh/boards/renesas/rts7751r2d/Kconfig" -+source "arch/sh/boards/renesas/r7780rp/Kconfig" - - config SH_PCLK_FREQ - int "Peripheral clock frequency (in Hz)" -@@ -454,7 +465,7 @@ - - config ISA_DMA_API - bool -- depends on SH_MPC1211 -+ depends on MPC1211 - default y - - menu "Kernel features" -@@ -636,6 +647,16 @@ - - endmenu - -+menu "Power management options (EXPERIMENTAL)" -+depends on EXPERIMENTAL -+ -+source kernel/power/Kconfig -+ -+config APM -+ bool "Advanced Power Management Emulation" -+ depends on PM -+endmenu -+ - source "net/Kconfig" - - source "drivers/Kconfig" -diff -ruN linux-2.6.17-vanilla/arch/sh/Kconfig.debug linux-2.6.17/arch/sh/Kconfig.debug ---- linux-2.6.17-vanilla/arch/sh/Kconfig.debug 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/Kconfig.debug 2006-07-12 16:54:21.000000000 +0000 -@@ -32,6 +32,7 @@ - - config KGDB - bool "Include KGDB kernel debugger" -+ select FRAME_POINTER - help - Include in-kernel hooks for kgdb, the Linux kernel source level - debugger. See <http://kgdb.sourceforge.net/> for more information. -@@ -112,13 +113,4 @@ - - endmenu - --config FRAME_POINTER -- bool "Compile the kernel with frame pointers" -- default y if KGDB -- help -- If you say Y here the resulting kernel image will be slightly larger -- and slower, but it will give very useful debugging information. -- If you don't debug the kernel, you can say N, but we may not be able -- to solve problems without frame pointers. -- - endmenu -diff -ruN linux-2.6.17-vanilla/arch/sh/Makefile linux-2.6.17/arch/sh/Makefile ---- linux-2.6.17-vanilla/arch/sh/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/Makefile 2006-07-12 16:54:19.000000000 +0000 -@@ -79,6 +79,7 @@ - LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) - - core-y += arch/sh/kernel/ arch/sh/mm/ -+core-$(CONFIG_SH_FPU_EMU) += arch/sh/math-emu/ - - # Boards - machdir-$(CONFIG_SH_SOLUTION_ENGINE) := se/770x -@@ -104,16 +105,14 @@ - machdir-$(CONFIG_SH_RTS7751R2D) := renesas/rts7751r2d - machdir-$(CONFIG_SH_7751_SYSTEMH) := renesas/systemh - machdir-$(CONFIG_SH_EDOSK7705) := renesas/edosk7705 -+machdir-$(CONFIG_SH_R7780RP) := renesas/r7780rp - machdir-$(CONFIG_SH_SH4202_MICRODEV) := superh/microdev -+machdir-$(CONFIG_SH_LANDISK) := landisk -+machdir-$(CONFIG_SH_TITAN) := titan - machdir-$(CONFIG_SH_UNKNOWN) := unknown - - incdir-y := $(notdir $(machdir-y)) -- --incdir-$(CONFIG_SH_SOLUTION_ENGINE) := se --incdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) := se7751 --incdir-$(CONFIG_SH_7300_SOLUTION_ENGINE) := se7300 --incdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) := se73180 --incdir-$(CONFIG_SH_HP600) := hp6xx -+incdir-$(CONFIG_SH_HP6XX) := hp6xx - - ifneq ($(machdir-y),) - core-y += arch/sh/boards/$(machdir-y)/ -@@ -137,17 +136,14 @@ - - CPPFLAGS_vmlinux.lds := -traditional - --ifneq ($(KBUILD_SRC),) - incdir-prefix := $(srctree)/include/asm-sh/ --else --incdir-prefix := --endif - - # Update machine arch and proc symlinks if something which affects - # them changed. We use .arch and .mach to indicate when they were - # updated last, otherwise make uses the target directory mtime. - --include/asm-sh/.cpu: $(wildcard include/config/cpu/*.h) include/config/MARKER -+include/asm-sh/.cpu: $(wildcard include/config/cpu/*.h) \ -+ include/config/MARKER FORCE - @echo ' SYMLINK include/asm-sh/cpu -> include/asm-sh/$(cpuincdir-y)' - $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi - $(Q)ln -fsn $(incdir-prefix)$(cpuincdir-y) include/asm-sh/cpu -@@ -157,7 +153,8 @@ - # don't, just reference the parent directory so the semantics are - # kept roughly the same. - --include/asm-sh/.mach: $(wildcard include/config/sh/*.h) include/config/MARKER -+include/asm-sh/.mach: $(wildcard include/config/sh/*.h) \ -+ include/config/MARKER FORCE - @echo -n ' SYMLINK include/asm-sh/mach -> ' - $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi - $(Q)if [ -d $(incdir-prefix)$(incdir-y) ]; then \ -@@ -170,7 +167,7 @@ - fi - @touch $@ - --archprepare: maketools include/asm-sh/.cpu include/asm-sh/.mach -+archprepare: include/asm-sh/.cpu include/asm-sh/.mach maketools - - PHONY += maketools FORCE - maketools: include/linux/version.h FORCE -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/CVS/Entries linux-2.6.17/arch/sh/boards/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,21 @@ -+D/adx//// -+D/bigsur//// -+D/cat68701//// -+D/cqreek//// -+D/dmida//// -+D/dreamcast//// -+D/ec3104//// -+D/harp//// -+D/hp6xx//// -+D/landisk//// -+D/mpc1211//// -+D/overdrive//// -+D/renesas//// -+D/saturn//// -+D/se//// -+D/sh03//// -+D/sh2000//// -+D/snapgear//// -+D/superh//// -+D/titan//// -+D/unknown//// -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/CVS/Repository linux-2.6.17/arch/sh/boards/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/CVS/Root linux-2.6.17/arch/sh/boards/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/adx/CVS/Entries linux-2.6.17/arch/sh/boards/adx/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/adx/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/adx/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Makefile/1.5/Thu Mar 11 18:08:01 2004// -+/irq.c/1.2/Fri Nov 1 17:19:14 2002// -+/irq_maskreg.c/1.3/Fri Oct 28 13:12:47 2005/-ko/ -+/setup.c/1.4/Mon Aug 4 01:38:06 2003// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/adx/CVS/Repository linux-2.6.17/arch/sh/boards/adx/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/adx/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/adx/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/adx -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/adx/CVS/Root linux-2.6.17/arch/sh/boards/adx/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/adx/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/adx/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/bigsur/CVS/Entries linux-2.6.17/arch/sh/boards/bigsur/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/bigsur/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/bigsur/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,6 @@ -+/Makefile/1.6/Thu Mar 11 18:08:02 2004// -+/io.c/1.4/Tue Mar 8 06:46:55 2005// -+/irq.c/1.5/Fri Oct 28 13:12:47 2005// -+/led.c/1.2/Fri Nov 1 17:19:14 2002// -+/setup.c/1.5/Mon Dec 27 23:14:24 2004// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/bigsur/CVS/Repository linux-2.6.17/arch/sh/boards/bigsur/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/bigsur/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/bigsur/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/bigsur -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/bigsur/CVS/Root linux-2.6.17/arch/sh/boards/bigsur/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/bigsur/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/bigsur/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/cat68701/CVS/Entries linux-2.6.17/arch/sh/boards/cat68701/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/cat68701/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/cat68701/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.5/Thu Mar 11 18:08:02 2004// -+/irq.c/1.2/Fri Nov 1 17:19:15 2002// -+/setup.c/1.3/Mon Aug 4 01:44:39 2003// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/cat68701/CVS/Repository linux-2.6.17/arch/sh/boards/cat68701/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/cat68701/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/cat68701/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/cat68701 -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/cat68701/CVS/Root linux-2.6.17/arch/sh/boards/cat68701/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/cat68701/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/cat68701/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/cqreek/CVS/Entries linux-2.6.17/arch/sh/boards/cqreek/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/cqreek/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/cqreek/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.6/Thu Mar 11 18:08:02 2004// -+/irq.c/1.4/Fri Oct 28 13:12:47 2005/-ko/ -+/setup.c/1.5/Mon Aug 4 01:51:58 2003// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/cqreek/CVS/Repository linux-2.6.17/arch/sh/boards/cqreek/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/cqreek/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/cqreek/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/cqreek -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/cqreek/CVS/Root linux-2.6.17/arch/sh/boards/cqreek/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/cqreek/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/cqreek/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/cqreek/irq.c linux-2.6.17/arch/sh/boards/cqreek/irq.c ---- linux-2.6.17-vanilla/arch/sh/boards/cqreek/irq.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/cqreek/irq.c 2006-07-12 16:54:19.000000000 +0000 -@@ -1,4 +1,4 @@ --/* $Id: irq.c,v 1.1.2.4 2002/11/04 20:33:56 lethal Exp $ -+/* $Id: irq.c,v 1.3 2003/05/04 19:29:46 lethal Exp $ - * - * arch/sh/boards/cqreek/irq.c - * -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/dmida/CVS/Entries linux-2.6.17/arch/sh/boards/dmida/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/dmida/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/dmida/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,3 @@ -+/Makefile/1.4/Thu Mar 11 18:08:02 2004// -+/mach.c/1.5/Tue Sep 9 00:14:07 2003// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/dmida/CVS/Repository linux-2.6.17/arch/sh/boards/dmida/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/dmida/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/dmida/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/dmida -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/dmida/CVS/Root linux-2.6.17/arch/sh/boards/dmida/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/dmida/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/dmida/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/dreamcast/CVS/Entries linux-2.6.17/arch/sh/boards/dreamcast/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/dreamcast/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/dreamcast/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Makefile/1.7/Thu Mar 11 18:08:02 2004// -+/irq.c/1.5/Fri Aug 26 20:12:14 2005// -+/setup.c/1.8/Wed Jan 4 13:24:06 2006// -+/rtc.c/1.6/Sat Jul 8 20:16:03 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/dreamcast/CVS/Repository linux-2.6.17/arch/sh/boards/dreamcast/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/dreamcast/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/dreamcast/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/dreamcast -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/dreamcast/CVS/Root linux-2.6.17/arch/sh/boards/dreamcast/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/dreamcast/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/dreamcast/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/dreamcast/irq.c linux-2.6.17/arch/sh/boards/dreamcast/irq.c ---- linux-2.6.17-vanilla/arch/sh/boards/dreamcast/irq.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/dreamcast/irq.c 2006-07-12 16:54:19.000000000 +0000 -@@ -26,10 +26,10 @@ - event. - - There are three 32-bit ESRs located at 0xa05f8900 - 0xa05f6908. Event -- types can be found in include/asm-sh/dc_sysasic.h. There are three groups -- of EMRs that parallel the ESRs. Each EMR group corresponds to an IRQ, so -- 0xa05f6910 - 0xa05f6918 triggers IRQ 13, 0xa05f6920 - 0xa05f6928 triggers -- IRQ 11, and 0xa05f6930 - 0xa05f6938 triggers IRQ 9. -+ types can be found in include/asm-sh/dreamcast/sysasic.h. There are three -+ groups of EMRs that parallel the ESRs. Each EMR group corresponds to an -+ IRQ, so 0xa05f6910 - 0xa05f6918 triggers IRQ 13, 0xa05f6920 - 0xa05f6928 -+ triggers IRQ 11, and 0xa05f6930 - 0xa05f6938 triggers IRQ 9. - - In the kernel, these events are mapped to virtual IRQs so that drivers can - respond to them as they would a normal interrupt. In order to keep this -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/dreamcast/rtc.c linux-2.6.17/arch/sh/boards/dreamcast/rtc.c ---- linux-2.6.17-vanilla/arch/sh/boards/dreamcast/rtc.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/dreamcast/rtc.c 2006-07-12 16:54:19.000000000 +0000 -@@ -1,4 +1,5 @@ --/* arch/sh/kernel/rtc-aica.c -+/* -+ * arch/sh/boards/dreamcast/rtc.c - * - * Dreamcast AICA RTC routines. - * -@@ -10,15 +11,12 @@ - */ - - #include <linux/time.h> -- -+#include <asm/rtc.h> - #include <asm/io.h> - --extern void (*rtc_get_time)(struct timespec *); --extern int (*rtc_set_time)(const time_t); -- - /* The AICA RTC has an Epoch of 1/1/1950, so we must subtract 20 years (in -- seconds to get the standard Unix Epoch when getting the time, and add 20 -- years when setting the time. */ -+ seconds) to get the standard Unix Epoch when getting the time, and add -+ 20 years when setting the time. */ - #define TWENTY_YEARS ((20 * 365LU + 5) * 86400) - - /* The AICA RTC is represented by a 32-bit seconds counter stored in 2 16-bit -@@ -32,7 +30,8 @@ - * - * Grabs the current RTC seconds counter and adjusts it to the Unix Epoch. - */ --void aica_rtc_gettimeofday(struct timespec *ts) { -+void aica_rtc_gettimeofday(struct timespec *ts) -+{ - unsigned long val1, val2; - - do { -@@ -55,7 +54,8 @@ - * - * Adjusts the given @tv to the AICA Epoch and sets the RTC seconds counter. - */ --int aica_rtc_settimeofday(const time_t secs) { -+int aica_rtc_settimeofday(const time_t secs) -+{ - unsigned long val1, val2; - unsigned long adj = secs + TWENTY_YEARS; - -@@ -75,7 +75,7 @@ - - void aica_time_init(void) - { -- rtc_get_time = aica_rtc_gettimeofday; -- rtc_set_time = aica_rtc_settimeofday; -+ rtc_sh_get_time = aica_rtc_gettimeofday; -+ rtc_sh_set_time = aica_rtc_settimeofday; - } - -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/dreamcast/setup.c linux-2.6.17/arch/sh/boards/dreamcast/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/dreamcast/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/dreamcast/setup.c 2006-07-12 16:54:19.000000000 +0000 -@@ -25,18 +25,16 @@ - - #include <asm/io.h> - #include <asm/irq.h> -+#include <asm/rtc.h> - #include <asm/machvec.h> --#include <asm/machvec_init.h> - #include <asm/mach/sysasic.h> - - extern struct hw_interrupt_type systemasic_int; --/* XXX: Move this into it's proper header. */ --extern void (*board_time_init)(void); - extern void aica_time_init(void); - extern int gapspci_init(void); - extern int systemasic_irq_demux(int); - --void *dreamcast_consistent_alloc(struct device *, size_t, dma_addr_t *, int); -+void *dreamcast_consistent_alloc(struct device *, size_t, dma_addr_t *, gfp_t); - int dreamcast_consistent_free(struct device *, size_t, void *, dma_addr_t); - - const char *get_system_type(void) -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/ec3104/CVS/Entries linux-2.6.17/arch/sh/boards/ec3104/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/ec3104/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/ec3104/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Makefile/1.5/Thu Mar 11 18:08:02 2004// -+/io.c/1.2/Fri Nov 1 17:19:17 2002// -+/irq.c/1.3/Tue Sep 9 00:14:07 2003// -+/setup.c/1.3/Tue Jul 29 03:11:49 2003// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/ec3104/CVS/Repository linux-2.6.17/arch/sh/boards/ec3104/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/ec3104/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/ec3104/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/ec3104 -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/ec3104/CVS/Root linux-2.6.17/arch/sh/boards/ec3104/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/ec3104/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/ec3104/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/harp/CVS/Entries linux-2.6.17/arch/sh/boards/harp/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/harp/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/harp/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,7 @@ -+/Makefile/1.4/Thu Mar 11 18:08:02 2004// -+/irq.c/1.4/Fri Oct 28 13:12:47 2005// -+/led.c/1.2/Fri Nov 1 17:19:17 2002// -+/mach.c/1.4/Tue Sep 9 00:14:07 2003// -+/pcidma.c/1.2/Fri Nov 1 17:19:17 2002// -+/setup.c/1.3/Thu Aug 19 12:24:27 2004// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/harp/CVS/Repository linux-2.6.17/arch/sh/boards/harp/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/harp/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/harp/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/harp -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/harp/CVS/Root linux-2.6.17/arch/sh/boards/harp/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/harp/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/harp/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/hp6xx/CVS/Entries linux-2.6.17/arch/sh/boards/hp6xx/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/hp6xx/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/hp6xx/CVS/Entries 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,7 @@ -+/Makefile/1.2/Sun Jan 29 17:46:23 2006/-ko/ -+/hp6xx_apm.c/1.2/Mon Jan 30 15:57:17 2006// -+/mach.c/1.4/Wed Jan 4 14:53:18 2006/-ko/ -+/pm.c/1.2/Mon Jan 30 15:57:17 2006// -+/pm_wakeup.S/1.2/Mon Jan 30 15:57:17 2006// -+/setup.c/1.4/Sun Jan 29 22:13:39 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/hp6xx/CVS/Repository linux-2.6.17/arch/sh/boards/hp6xx/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/hp6xx/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/hp6xx/CVS/Repository 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/hp6xx -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/hp6xx/CVS/Root linux-2.6.17/arch/sh/boards/hp6xx/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/hp6xx/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/hp6xx/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/hp6xx/Makefile linux-2.6.17/arch/sh/boards/hp6xx/Makefile ---- linux-2.6.17-vanilla/arch/sh/boards/hp6xx/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/hp6xx/Makefile 2006-07-12 16:54:19.000000000 +0000 -@@ -2,5 +2,8 @@ - # Makefile for the HP6xx specific parts of the kernel - # - --obj-y := mach.o setup.o -+obj-y := mach.o setup.o -+obj-$(CONFIG_PM) += pm.o pm_wakeup.o -+obj-$(CONFIG_APM) += hp6xx_apm.o -+ - -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/hp6xx/hp6xx_apm.c linux-2.6.17/arch/sh/boards/hp6xx/hp6xx_apm.c ---- linux-2.6.17-vanilla/arch/sh/boards/hp6xx/hp6xx_apm.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/hp6xx/hp6xx_apm.c 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,123 @@ -+/* -+ * bios-less APM driver for hp680 -+ * -+ * Copyright 2005 (c) Andriy Skulysh <askulysh@gmail.com> -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License. -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/apm_bios.h> -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/interrupt.h> -+#include <asm/io.h> -+#include <asm/apm.h> -+#include <asm/adc.h> -+#include <asm/hp6xx/hp6xx.h> -+ -+#define SH7709_PGDR 0xa400012c -+ -+#define APM_CRITICAL 10 -+#define APM_LOW 30 -+ -+#define HP680_BATTERY_MAX 896 -+#define HP680_BATTERY_MIN 628 -+#define HP680_BATTERY_AC_ON 900 -+ -+#define MODNAME "hp6x0_apm" -+ -+static int hp6x0_apm_get_info(char *buf, char **start, off_t fpos, int length) -+{ -+ u8 pgdr; -+ char *p; -+ int battery_status; -+ int battery_flag; -+ int ac_line_status; -+ int time_units = APM_BATTERY_LIFE_UNKNOWN; -+ -+ int battery = adc_single(ADC_CHANNEL_BATTERY); -+ int backup = adc_single(ADC_CHANNEL_BACKUP); -+ int charging = adc_single(ADC_CHANNEL_CHARGE); -+ int percentage; -+ -+ percentage = 100 * (battery - HP680_BATTERY_MIN) / -+ (HP680_BATTERY_MAX - HP680_BATTERY_MIN); -+ -+ ac_line_status = (battery > HP680_BATTERY_AC_ON) ? -+ APM_AC_ONLINE : APM_AC_OFFLINE; -+ -+ p = buf; -+ -+ pgdr = ctrl_inb(SH7709_PGDR); -+ if (pgdr & PGDR_MAIN_BATTERY_OUT) { -+ battery_status = APM_BATTERY_STATUS_NOT_PRESENT; -+ battery_flag = 0x80; -+ percentage = -1; -+ } else if (charging < 8 ) { -+ battery_status = APM_BATTERY_STATUS_CHARGING; -+ battery_flag = 0x08; -+ ac_line_status = 0xff; -+ } else if (percentage <= APM_CRITICAL) { -+ battery_status = APM_BATTERY_STATUS_CRITICAL; -+ battery_flag = 0x04; -+ } else if (percentage <= APM_LOW) { -+ battery_status = APM_BATTERY_STATUS_LOW; -+ battery_flag = 0x02; -+ } else { -+ battery_status = APM_BATTERY_STATUS_HIGH; -+ battery_flag = 0x01; -+ } -+ -+ p += sprintf(p, "1.0 1.2 0x%02x 0x%02x 0x%02x 0x%02x %d%% %d %s\n", -+ APM_32_BIT_SUPPORT, -+ ac_line_status, -+ battery_status, -+ battery_flag, -+ percentage, -+ time_units, -+ "min"); -+ p += sprintf(p, "bat=%d backup=%d charge=%d\n", -+ battery, backup, charging); -+ -+ return p - buf; -+} -+ -+static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev, struct pt_regs *regs) -+{ -+ if (!apm_suspended) -+ apm_queue_event(APM_USER_SUSPEND); -+ -+ return IRQ_HANDLED; -+} -+ -+static int __init hp6x0_apm_init(void) -+{ -+ int ret; -+ -+ ret = request_irq(HP680_BTN_IRQ, hp6x0_apm_interrupt, -+ SA_INTERRUPT, MODNAME, 0); -+ if (unlikely(ret < 0)) { -+ printk(KERN_ERR MODNAME ": IRQ %d request failed\n", -+ HP680_BTN_IRQ); -+ return ret; -+ } -+ -+ apm_get_info = hp6x0_apm_get_info; -+ -+ return ret; -+} -+ -+static void __exit hp6x0_apm_exit(void) -+{ -+ free_irq(HP680_BTN_IRQ, 0); -+ apm_get_info = 0; -+} -+ -+module_init(hp6x0_apm_init); -+module_exit(hp6x0_apm_exit); -+ -+MODULE_AUTHOR("Adriy Skulysh"); -+MODULE_DESCRIPTION("hp6xx Advanced Power Management"); -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/hp6xx/pm.c linux-2.6.17/arch/sh/boards/hp6xx/pm.c ---- linux-2.6.17-vanilla/arch/sh/boards/hp6xx/pm.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/hp6xx/pm.c 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,88 @@ -+/* -+ * hp6x0 Power Management Routines -+ * -+ * Copyright (c) 2006 Andriy Skulysh <askulsyh@gmail.com> -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License. -+ */ -+#include <linux/config.h> -+#include <linux/init.h> -+#include <linux/suspend.h> -+#include <linux/errno.h> -+#include <linux/time.h> -+#include <asm/io.h> -+#include <asm/hd64461.h> -+#include <asm/hp6xx/hp6xx.h> -+#include <asm/cpu/dac.h> -+#include <asm/pm.h> -+ -+#define STBCR 0xffffff82 -+#define STBCR2 0xffffff88 -+ -+static int hp6x0_pm_enter(suspend_state_t state) -+{ -+ u8 stbcr, stbcr2; -+#ifdef CONFIG_HD64461_ENABLER -+ u8 scr; -+ u16 hd64461_stbcr; -+#endif -+ -+ if (state != PM_SUSPEND_MEM) -+ return -EINVAL; -+ -+#ifdef CONFIG_HD64461_ENABLER -+ outb(0, HD64461_PCC1CSCIER); -+ -+ scr = inb(HD64461_PCC1SCR); -+ scr |= HD64461_PCCSCR_VCC1; -+ outb(scr, HD64461_PCC1SCR); -+ -+ hd64461_stbcr = inw(HD64461_STBCR); -+ hd64461_stbcr |= HD64461_STBCR_SPC1ST; -+ outw(hd64461_stbcr, HD64461_STBCR); -+#endif -+ -+ ctrl_outb(0x1f, DACR); -+ -+ stbcr = ctrl_inb(STBCR); -+ ctrl_outb(0x01, STBCR); -+ -+ stbcr2 = ctrl_inb(STBCR2); -+ ctrl_outb(0x7f , STBCR2); -+ -+ outw(0xf07f, HD64461_SCPUCR); -+ -+ pm_enter(); -+ -+ outw(0, HD64461_SCPUCR); -+ ctrl_outb(stbcr, STBCR); -+ ctrl_outb(stbcr2, STBCR2); -+ -+#ifdef CONFIG_HD64461_ENABLER -+ hd64461_stbcr = inw(HD64461_STBCR); -+ hd64461_stbcr &= ~HD64461_STBCR_SPC1ST; -+ outw(hd64461_stbcr, HD64461_STBCR); -+ -+ outb(0x4c, HD64461_PCC1CSCIER); -+ outb(0x00, HD64461_PCC1CSCR); -+#endif -+ -+ return 0; -+} -+ -+/* -+ * Set to PM_DISK_FIRMWARE so we can quickly veto suspend-to-disk. -+ */ -+static struct pm_ops hp6x0_pm_ops = { -+ .pm_disk_mode = PM_DISK_FIRMWARE, -+ .enter = hp6x0_pm_enter, -+}; -+ -+static int __init hp6x0_pm_init(void) -+{ -+ pm_set_ops(&hp6x0_pm_ops); -+ return 0; -+} -+ -+late_initcall(hp6x0_pm_init); -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/hp6xx/pm_wakeup.S linux-2.6.17/arch/sh/boards/hp6xx/pm_wakeup.S ---- linux-2.6.17-vanilla/arch/sh/boards/hp6xx/pm_wakeup.S 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/hp6xx/pm_wakeup.S 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1,58 @@ -+/* -+ * Copyright (c) 2006 Andriy Skulysh <askulsyh@gmail.com> -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * -+ */ -+ -+#include <linux/linkage.h> -+#include <asm/cpu/mmu_context.h> -+ -+#define k0 r0 -+#define k1 r1 -+#define k2 r2 -+#define k3 r3 -+#define k4 r4 -+ -+/* -+ * Kernel mode register usage: -+ * k0 scratch -+ * k1 scratch -+ * k2 scratch (Exception code) -+ * k3 scratch (Return address) -+ * k4 scratch -+ * k5 reserved -+ * k6 Global Interrupt Mask (0--15 << 4) -+ * k7 CURRENT_THREAD_INFO (pointer to current thread info) -+ */ -+ -+ENTRY(wakeup_start) -+! clear STBY bit -+ mov #-126, k2 -+ and #127, k0 -+ mov.b k0, @k2 -+! enable refresh -+ mov.l 5f, k1 -+ mov.w 6f, k0 -+ mov.w k0, @k1 -+! jump to handler -+ mov.l 2f, k2 -+ mov.l 3f, k3 -+ mov.l @k2, k2 -+ -+ mov.l 4f, k1 -+ jmp @k1 -+ nop -+ -+ .align 2 -+1: .long EXPEVT -+2: .long INTEVT -+3: .long ret_from_irq -+4: .long handle_exception -+5: .long 0xffffff68 -+6: .word 0x0524 -+ -+ENTRY(wakeup_end) -+ nop -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/hp6xx/setup.c linux-2.6.17/arch/sh/boards/hp6xx/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/hp6xx/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/hp6xx/setup.c 2006-07-12 16:54:19.000000000 +0000 -@@ -16,6 +16,9 @@ - #include <asm/hp6xx/hp6xx.h> - #include <asm/cpu/dac.h> - -+#define SCPCR 0xa4000116 -+#define SCPDR 0xa4000136 -+ - const char *get_system_type(void) - { - return "HP6xx"; -@@ -25,6 +28,7 @@ - { - u8 v8; - u16 v; -+ - v = inw(HD64461_STBCR); - v |= HD64461_STBCR_SURTST | HD64461_STBCR_SIRST | - HD64461_STBCR_STM1ST | HD64461_STBCR_STM0ST | -@@ -51,5 +55,15 @@ - v8 &= ~DACR_DAE; - ctrl_outb(v8,DACR); - -+ v8 = ctrl_inb(SCPDR); -+ v8 |= SCPDR_TS_SCAN_X | SCPDR_TS_SCAN_Y; -+ v8 &= ~SCPDR_TS_SCAN_ENABLE; -+ ctrl_outb(v8, SCPDR); -+ -+ v = ctrl_inw(SCPCR); -+ v &= ~SCPCR_TS_MASK; -+ v |= SCPCR_TS_ENABLE; -+ ctrl_outw(v, SCPCR); -+ - return 0; - } -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/landisk/CVS/Entries linux-2.6.17/arch/sh/boards/landisk/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/landisk/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/landisk/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,7 @@ -+/Makefile/1.2/Wed Feb 8 21:55:09 2006/-ko/ -+/io.c/1.4/Sun Feb 5 21:55:28 2006/-ko/ -+/irq.c/1.2/Sat Nov 12 13:02:45 2005/-ko/ -+/landisk_pwb.c/1.2/Sat Nov 12 13:02:45 2005/-ko/ -+/setup.c/1.3/Tue Jan 3 22:51:46 2006/-ko/ -+/rtc.c/1.3/Sat Jul 8 20:16:03 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/landisk/CVS/Repository linux-2.6.17/arch/sh/boards/landisk/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/landisk/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/landisk/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/landisk -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/landisk/CVS/Root linux-2.6.17/arch/sh/boards/landisk/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/landisk/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/landisk/CVS/Root 2006-07-12 16:54:19.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/landisk/Makefile linux-2.6.17/arch/sh/boards/landisk/Makefile ---- linux-2.6.17-vanilla/arch/sh/boards/landisk/Makefile 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/landisk/Makefile 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,5 @@ -+# -+# Makefile for I-O DATA DEVICE, INC. "LANDISK Series" -+# -+ -+obj-y := setup.o io.o irq.o rtc.o landisk_pwb.o -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/landisk/io.c linux-2.6.17/arch/sh/boards/landisk/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/landisk/io.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/landisk/io.c 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,250 @@ -+/* -+ * arch/sh/boards/landisk/io.c -+ * -+ * Copyright (C) 2001 Ian da Silva, Jeremy Siegel -+ * Based largely on io_se.c. -+ * -+ * I/O routine for I-O Data Device, Inc. LANDISK. -+ * -+ * Initial version only to support LAN access; some -+ * placeholder code from io_landisk.c left in with the -+ * expectation of later SuperIO and PCMCIA access. -+ */ -+/* -+ * modifed by kogiidena -+ * 2005.03.03 -+ */ -+#include <linux/kernel.h> -+#include <linux/types.h> -+#include <linux/pci.h> -+#include <asm/landisk/iodata_landisk.h> -+#include <asm/addrspace.h> -+#include <asm/io.h> -+ -+extern void *area5_io_base; /* Area 5 I/O Base address */ -+extern void *area6_io_base; /* Area 6 I/O Base address */ -+ -+static inline unsigned long port2adr(unsigned int port) -+{ -+ if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6) -+ if (port == 0x3f6) -+ return ((unsigned long)area5_io_base + 0x2c); -+ else -+ return ((unsigned long)area5_io_base + PA_PIDE_OFFSET + -+ ((port - 0x1f0) << 1)); -+ else if ((0x170 <= port && port < 0x178) || port == 0x376) -+ if (port == 0x376) -+ return ((unsigned long)area6_io_base + 0x2c); -+ else -+ return ((unsigned long)area6_io_base + PA_SIDE_OFFSET + -+ ((port - 0x170) << 1)); -+ else -+ maybebadio((unsigned long)port); -+ -+ return port; -+} -+ -+/* -+ * General outline: remap really low stuff [eventually] to SuperIO, -+ * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO) -+ * is mapped through the PCI IO window. Stuff with high bits (PXSEG) -+ * should be way beyond the window, and is used w/o translation for -+ * compatibility. -+ */ -+u8 landisk_inb(unsigned long port) -+{ -+ if (PXSEG(port)) -+ return ctrl_inb(port); -+ else if (is_pci_ioaddr(port)) -+ return ctrl_inb(pci_ioaddr(port)); -+ -+ return ctrl_inw(port2adr(port)) & 0xff; -+} -+ -+u8 landisk_inb_p(unsigned long port) -+{ -+ u8 v; -+ -+ if (PXSEG(port)) -+ v = ctrl_inb(port); -+ else if (is_pci_ioaddr(port)) -+ v = ctrl_inb(pci_ioaddr(port)); -+ else -+ v = ctrl_inw(port2adr(port)) & 0xff; -+ -+ ctrl_delay(); -+ -+ return v; -+} -+ -+u16 landisk_inw(unsigned long port) -+{ -+ if (PXSEG(port)) -+ return ctrl_inw(port); -+ else if (is_pci_ioaddr(port)) -+ return ctrl_inw(pci_ioaddr(port)); -+ else -+ maybebadio(port); -+ -+ return 0; -+} -+ -+u32 landisk_inl(unsigned long port) -+{ -+ if (PXSEG(port)) -+ return ctrl_inl(port); -+ else if (is_pci_ioaddr(port)) -+ return ctrl_inl(pci_ioaddr(port)); -+ else -+ maybebadio(port); -+ -+ return 0; -+} -+ -+void landisk_outb(u8 value, unsigned long port) -+{ -+ if (PXSEG(port)) -+ ctrl_outb(value, port); -+ else if (is_pci_ioaddr(port)) -+ ctrl_outb(value, pci_ioaddr(port)); -+ else -+ ctrl_outw(value, port2adr(port)); -+} -+ -+void landisk_outb_p(u8 value, unsigned long port) -+{ -+ if (PXSEG(port)) -+ ctrl_outb(value, port); -+ else if (is_pci_ioaddr(port)) -+ ctrl_outb(value, pci_ioaddr(port)); -+ else -+ ctrl_outw(value, port2adr(port)); -+ ctrl_delay(); -+} -+ -+void landisk_outw(u16 value, unsigned long port) -+{ -+ if (PXSEG(port)) -+ ctrl_outw(value, port); -+ else if (is_pci_ioaddr(port)) -+ ctrl_outw(value, pci_ioaddr(port)); -+ else -+ maybebadio(port); -+} -+ -+void landisk_outl(u32 value, unsigned long port) -+{ -+ if (PXSEG(port)) -+ ctrl_outl(value, port); -+ else if (is_pci_ioaddr(port)) -+ ctrl_outl(value, pci_ioaddr(port)); -+ else -+ maybebadio(port); -+} -+ -+void landisk_insb(unsigned long port, void *dst, unsigned long count) -+{ -+ volatile u16 *p; -+ u8 *buf = dst; -+ -+ if (PXSEG(port)) { -+ while (count--) -+ *buf++ = *(volatile u8 *)port; -+ } else if (is_pci_ioaddr(port)) { -+ volatile u8 *bp = (volatile u8 *)pci_ioaddr(port); -+ -+ while (count--) -+ *buf++ = *bp; -+ } else { -+ p = (volatile u16 *)port2adr(port); -+ while (count--) -+ *buf++ = *p & 0xff; -+ } -+} -+ -+void landisk_insw(unsigned long port, void *dst, unsigned long count) -+{ -+ volatile u16 *p; -+ u16 *buf = dst; -+ -+ if (PXSEG(port)) -+ p = (volatile u16 *)port; -+ else if (is_pci_ioaddr(port)) -+ p = (volatile u16 *)pci_ioaddr(port); -+ else -+ p = (volatile u16 *)port2adr(port); -+ while (count--) -+ *buf++ = *p; -+} -+ -+void landisk_insl(unsigned long port, void *dst, unsigned long count) -+{ -+ u32 *buf = dst; -+ -+ if (is_pci_ioaddr(port)) { -+ volatile u32 *p = (volatile u32 *)pci_ioaddr(port); -+ -+ while (count--) -+ *buf++ = *p; -+ } else -+ maybebadio(port); -+} -+ -+void landisk_outsb(unsigned long port, const void *src, unsigned long count) -+{ -+ volatile u16 *p; -+ const u8 *buf = src; -+ -+ if (PXSEG(port)) -+ while (count--) -+ ctrl_outb(*buf++, port); -+ else if (is_pci_ioaddr(port)) { -+ volatile u8 *bp = (volatile u8 *)pci_ioaddr(port); -+ -+ while (count--) -+ *bp = *buf++; -+ } else { -+ p = (volatile u16 *)port2adr(port); -+ while (count--) -+ *p = *buf++; -+ } -+} -+ -+void landisk_outsw(unsigned long port, const void *src, unsigned long count) -+{ -+ volatile u16 *p; -+ const u16 *buf = src; -+ -+ if (PXSEG(port)) -+ p = (volatile u16 *)port; -+ else if (is_pci_ioaddr(port)) -+ p = (volatile u16 *)pci_ioaddr(port); -+ else -+ p = (volatile u16 *)port2adr(port); -+ -+ while (count--) -+ *p = *buf++; -+} -+ -+void landisk_outsl(unsigned long port, const void *src, unsigned long count) -+{ -+ const u32 *buf = src; -+ -+ if (is_pci_ioaddr(port)) { -+ volatile u32 *p = (volatile u32 *)pci_ioaddr(port); -+ -+ while (count--) -+ *p = *buf++; -+ } else -+ maybebadio(port); -+} -+ -+void __iomem *landisk_ioport_map(unsigned long port, unsigned int size) -+{ -+ if (PXSEG(port)) -+ return (void __iomem *)port; -+ else if (is_pci_ioaddr(port)) -+ return (void __iomem *)pci_ioaddr(port); -+ -+ return (void __iomem *)port2adr(port); -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/landisk/irq.c linux-2.6.17/arch/sh/boards/landisk/irq.c ---- linux-2.6.17-vanilla/arch/sh/boards/landisk/irq.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/landisk/irq.c 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,105 @@ -+/* -+ * arch/sh/boards/landisk/irq.c -+ * -+ * Copyright (C) 2001 Ian da Silva, Jeremy Siegel -+ * Based largely on io_se.c. -+ * -+ * I/O routine for I-O Data Device, Inc. LANDISK. -+ * -+ * Initial version only to support LAN access; some -+ * placeholder code from io_landisk.c left in with the -+ * expectation of later SuperIO and PCMCIA access. -+ */ -+/* -+ * modified by kogiidena -+ * 2005.03.03 -+ */ -+ -+#include <linux/config.h> -+#include <linux/init.h> -+#include <linux/irq.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+#include <asm/landisk/iodata_landisk.h> -+ -+static void enable_landisk_irq(unsigned int irq); -+static void disable_landisk_irq(unsigned int irq); -+ -+/* shutdown is same as "disable" */ -+#define shutdown_landisk_irq disable_landisk_irq -+ -+static void ack_landisk_irq(unsigned int irq); -+static void end_landisk_irq(unsigned int irq); -+ -+static unsigned int startup_landisk_irq(unsigned int irq) -+{ -+ enable_landisk_irq(irq); -+ return 0; /* never anything pending */ -+} -+ -+static void disable_landisk_irq(unsigned int irq) -+{ -+ unsigned long flags; -+ unsigned char val; -+ unsigned char mask = 0xff ^ (0x01 << (irq - 5)); -+ -+ /* Set the priority in IPR to 0 */ -+ local_irq_save(flags); -+ val = ctrl_inb(PA_IMASK); -+ val &= mask; -+ ctrl_outb(val, PA_IMASK); -+ local_irq_restore(flags); -+} -+ -+static void enable_landisk_irq(unsigned int irq) -+{ -+ unsigned long flags; -+ unsigned char val; -+ unsigned char value = (0x01 << (irq - 5)); -+ -+ /* Set priority in IPR back to original value */ -+ local_irq_save(flags); -+ val = ctrl_inb(PA_IMASK); -+ val |= value; -+ ctrl_outb(val, PA_IMASK); -+ local_irq_restore(flags); -+} -+ -+static void ack_landisk_irq(unsigned int irq) -+{ -+ disable_landisk_irq(irq); -+} -+ -+static void end_landisk_irq(unsigned int irq) -+{ -+ if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) -+ enable_landisk_irq(irq); -+} -+ -+static struct hw_interrupt_type landisk_irq_type = { -+ .typename = "LANDISK IRQ", -+ .startup = startup_landisk_irq, -+ .shutdown = shutdown_landisk_irq, -+ .enable = enable_landisk_irq, -+ .disable = disable_landisk_irq, -+ .ack = ack_landisk_irq, -+ .end = end_landisk_irq -+}; -+ -+static void make_landisk_irq(unsigned int irq) -+{ -+ disable_irq_nosync(irq); -+ irq_desc[irq].handler = &landisk_irq_type; -+ disable_landisk_irq(irq); -+} -+ -+/* -+ * Initialize IRQ setting -+ */ -+void __init init_landisk_IRQ(void) -+{ -+ int i; -+ -+ for (i = 5; i < 14; i++) -+ make_landisk_irq(i); -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/landisk/landisk_pwb.c linux-2.6.17/arch/sh/boards/landisk/landisk_pwb.c ---- linux-2.6.17-vanilla/arch/sh/boards/landisk/landisk_pwb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/landisk/landisk_pwb.c 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,348 @@ -+/* -+ * arch/sh/boards/landisk/landisk_pwb.c -- driver for the Power control switch. -+ * -+ * This driver will also support the I-O DATA Device, Inc. LANDISK Board. -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * -+ * Copylight (C) 2002 Atom Create Engineering Co., Ltd. -+ * -+ * LED control drive function added by kogiidena -+ */ -+ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/errno.h> -+#include <linux/signal.h> -+#include <linux/major.h> -+#include <linux/poll.h> -+#include <linux/init.h> -+#include <linux/delay.h> -+#include <linux/sched.h> -+#include <linux/timer.h> -+#include <linux/interrupt.h> -+ -+#include <asm/system.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+#include <asm/uaccess.h> -+#include <asm/landisk/iodata_landisk.h> -+ -+#define SHUTDOWN_BTN_MINOR 1 /* Shutdown button device minor no. */ -+#define LED_MINOR 21 /* LED minor no. */ -+#define BTN_MINOR 22 /* BUTTON minor no. */ -+#define GIO_MINOR 40 /* GIO minor no. */ -+ -+static int openCnt; -+static int openCntLED; -+static int openCntGio; -+static int openCntBtn; -+static int landisk_btn; -+static int landisk_btnctrlpid; -+/* -+ * Functions prototypes -+ */ -+ -+static int gio_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, -+ unsigned long arg); -+ -+static int swdrv_open(struct inode *inode, struct file *filp) -+{ -+ int minor; -+ -+ minor = MINOR(inode->i_rdev); -+ filp->private_data = (void *)minor; -+ -+ if (minor == SHUTDOWN_BTN_MINOR) { -+ if (openCnt > 0) { -+ return -EALREADY; -+ } else { -+ openCnt++; -+ return 0; -+ } -+ } else if (minor == LED_MINOR) { -+ if (openCntLED > 0) { -+ return -EALREADY; -+ } else { -+ openCntLED++; -+ return 0; -+ } -+ } else if (minor == BTN_MINOR) { -+ if (openCntBtn > 0) { -+ return -EALREADY; -+ } else { -+ openCntBtn++; -+ return 0; -+ } -+ } else if (minor == GIO_MINOR) { -+ if (openCntGio > 0) { -+ return -EALREADY; -+ } else { -+ openCntGio++; -+ return 0; -+ } -+ } -+ return -ENOENT; -+ -+} -+ -+static int swdrv_close(struct inode *inode, struct file *filp) -+{ -+ int minor; -+ -+ minor = MINOR(inode->i_rdev); -+ if (minor == SHUTDOWN_BTN_MINOR) { -+ openCnt--; -+ } else if (minor == LED_MINOR) { -+ openCntLED--; -+ } else if (minor == BTN_MINOR) { -+ openCntBtn--; -+ } else if (minor == GIO_MINOR) { -+ openCntGio--; -+ } -+ return 0; -+} -+ -+static int swdrv_read(struct file *filp, char *buff, size_t count, -+ loff_t * ppos) -+{ -+ int minor; -+ minor = (int)(filp->private_data); -+ -+ if (!access_ok(VERIFY_WRITE, (void *)buff, count)) -+ return -EFAULT; -+ -+ if (minor == SHUTDOWN_BTN_MINOR) { -+ if (landisk_btn & 0x10) { -+ put_user(1, buff); -+ return 1; -+ } else { -+ return 0; -+ } -+ } -+ return 0; -+} -+ -+static int swdrv_write(struct file *filp, const char *buff, size_t count, -+ loff_t * ppos) -+{ -+ int minor; -+ minor = (int)(filp->private_data); -+ -+ if (minor == SHUTDOWN_BTN_MINOR) { -+ return count; -+ } -+ return count; -+} -+ -+static irqreturn_t sw_interrupt(int irq, void *dev_id, struct pt_regs *regs) -+{ -+ landisk_btn = (0x0ff & (~ctrl_inb(PA_STATUS))); -+ disable_irq(IRQ_BUTTON); -+ disable_irq(IRQ_POWER); -+ ctrl_outb(0x00, PA_PWRINT_CLR); -+ -+ if (landisk_btnctrlpid != 0) { -+ kill_proc(landisk_btnctrlpid, SIGUSR1, 1); -+ landisk_btnctrlpid = 0; -+ } -+ -+ return IRQ_HANDLED; -+} -+ -+static struct file_operations swdrv_fops = { -+ .read = swdrv_read, /* read */ -+ .write = swdrv_write, /* write */ -+ .open = swdrv_open, /* open */ -+ .release = swdrv_close, /* release */ -+ .ioctl = gio_ioctl, /* ioctl */ -+ -+}; -+ -+static char banner[] __initdata = -+ KERN_INFO "LANDISK and USL-5P Button, LED and GIO driver initialized\n"; -+ -+int __init swdrv_init(void) -+{ -+ int error; -+ -+ printk("%s", banner); -+ -+ openCnt = 0; -+ openCntLED = 0; -+ openCntBtn = 0; -+ openCntGio = 0; -+ landisk_btn = 0; -+ landisk_btnctrlpid = 0; -+ -+ if ((error = register_chrdev(SHUTDOWN_BTN_MAJOR, "swdrv", &swdrv_fops))) { -+ printk(KERN_ERR -+ "Button, LED and GIO driver:Couldn't register driver, error=%d\n", -+ error); -+ return 1; -+ } -+ -+ if (request_irq(IRQ_POWER, sw_interrupt, 0, "SHUTDOWNSWITCH", NULL)) { -+ printk(KERN_ERR "Unable to get IRQ 11.\n"); -+ return 1; -+ } -+ if (request_irq(IRQ_BUTTON, sw_interrupt, 0, "USL-5P BUTTON", NULL)) { -+ printk(KERN_ERR "Unable to get IRQ 12.\n"); -+ return 1; -+ } -+ ctrl_outb(0x00, PA_PWRINT_CLR); -+ -+ return 0; -+} -+ -+module_init(swdrv_init); -+ -+/* -+ * gio driver -+ * -+ */ -+ -+#include <asm/landisk/gio.h> -+ -+static int gio_ioctl(struct inode *inode, struct file *filp, -+ unsigned int cmd, unsigned long arg) -+{ -+ int minor; -+ unsigned int data, mask; -+ static unsigned int addr = 0; -+ -+ minor = (int)(filp->private_data); -+ -+ /* access control */ -+ if (minor == GIO_MINOR) { -+ ; -+ } else if (minor == LED_MINOR) { -+ if (((cmd & 0x0ff) >= 9) && ((cmd & 0x0ff) < 20)) { -+ ; -+ } else { -+ return -EINVAL; -+ } -+ } else if (minor == BTN_MINOR) { -+ if (((cmd & 0x0ff) >= 20) && ((cmd & 0x0ff) < 30)) { -+ ; -+ } else { -+ return -EINVAL; -+ } -+ } else { -+ return -EINVAL; -+ } -+ -+ if (cmd & 0x01) { /* write */ -+ if (copy_from_user(&data, (int *)arg, sizeof(int))) { -+ return -EFAULT; -+ } -+ } -+ -+ switch (cmd) { -+ case GIODRV_IOCSGIOSETADDR: /* addres set */ -+ addr = data; -+ break; -+ -+ case GIODRV_IOCSGIODATA1: /* write byte */ -+ ctrl_outb((unsigned char)(0x0ff & data), addr); -+ break; -+ -+ case GIODRV_IOCSGIODATA2: /* write word */ -+ if (addr & 0x01) { -+ return -EFAULT; -+ } -+ ctrl_outw((unsigned short int)(0x0ffff & data), addr); -+ break; -+ -+ case GIODRV_IOCSGIODATA4: /* write long */ -+ if (addr & 0x03) { -+ return -EFAULT; -+ } -+ ctrl_outl(data, addr); -+ break; -+ -+ case GIODRV_IOCGGIODATA1: /* read byte */ -+ data = ctrl_inb(addr); -+ break; -+ -+ case GIODRV_IOCGGIODATA2: /* read word */ -+ if (addr & 0x01) { -+ return -EFAULT; -+ } -+ data = ctrl_inw(addr); -+ break; -+ -+ case GIODRV_IOCGGIODATA4: /* read long */ -+ if (addr & 0x03) { -+ return -EFAULT; -+ } -+ data = ctrl_inl(addr); -+ break; -+ case GIODRV_IOCSGIO_LED: /* write */ -+ mask = ((data & 0x00ffffff) << 8) -+ | ((data & 0x0000ffff) << 16) -+ | ((data & 0x000000ff) << 24); -+ landisk_ledparam = data & (~mask); -+ if (landisk_arch == 0) { /* arch == landisk */ -+ landisk_ledparam &= 0x03030303; -+ mask = (~(landisk_ledparam >> 22)) & 0x000c; -+ landisk_ledparam |= mask; -+ } else { /* arch == usl-5p */ -+ mask = (landisk_ledparam >> 24) & 0x0001; -+ landisk_ledparam |= mask; -+ landisk_ledparam &= 0x007f7f7f; -+ } -+ landisk_ledparam |= 0x80; -+ break; -+ case GIODRV_IOCGGIO_LED: /* read */ -+ data = landisk_ledparam; -+ if (landisk_arch == 0) { /* arch == landisk */ -+ data &= 0x03030303; -+ } else { /* arch == usl-5p */ -+ ; -+ } -+ data &= (~0x080); -+ break; -+ case GIODRV_IOCSGIO_BUZZER: /* write */ -+ landisk_buzzerparam = data; -+ landisk_ledparam |= 0x80; -+ break; -+ case GIODRV_IOCGGIO_LANDISK: /* read */ -+ data = landisk_arch & 0x01; -+ break; -+ case GIODRV_IOCGGIO_BTN: /* read */ -+ data = (0x0ff & ctrl_inb(PA_PWRINT_CLR)); -+ data <<= 8; -+ data |= (0x0ff & ctrl_inb(PA_IMASK)); -+ data <<= 8; -+ data |= (0x0ff & landisk_btn); -+ data <<= 8; -+ data |= (0x0ff & (~ctrl_inb(PA_STATUS))); -+ break; -+ case GIODRV_IOCSGIO_BTNPID: /* write */ -+ landisk_btnctrlpid = data; -+ landisk_btn = 0; -+ if (irq_desc[IRQ_BUTTON].depth) { -+ enable_irq(IRQ_BUTTON); -+ } -+ if (irq_desc[IRQ_POWER].depth) { -+ enable_irq(IRQ_POWER); -+ } -+ break; -+ case GIODRV_IOCGGIO_BTNPID: /* read */ -+ data = landisk_btnctrlpid; -+ break; -+ default: -+ return -EFAULT; -+ break; -+ } -+ -+ if ((cmd & 0x01) == 0) { /* read */ -+ if (copy_to_user((int *)arg, &data, sizeof(int))) { -+ return -EFAULT; -+ } -+ } -+ return 0; -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/landisk/rtc.c linux-2.6.17/arch/sh/boards/landisk/rtc.c ---- linux-2.6.17-vanilla/arch/sh/boards/landisk/rtc.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/landisk/rtc.c 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,93 @@ -+/* -+ * arch/sh/boards/landisk/rtc.c -- RTC support -+ * -+ * Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org> -+ * Copyright (C) 1999 Tetsuya Okada & Niibe Yutaka -+ */ -+/* -+ * modifed by kogiidena -+ * 2005.09.16 -+ */ -+ -+#include <linux/config.h> -+#include <linux/init.h> -+#include <linux/kernel.h> -+#include <linux/sched.h> -+#include <linux/time.h> -+#include <linux/delay.h> -+#include <linux/spinlock.h> -+#include <linux/bcd.h> -+#include <asm/rtc.h> -+ -+extern spinlock_t rtc_lock; -+ -+extern void -+rs5c313_set_cmos_time(unsigned int BCD_yr, unsigned int BCD_mon, -+ unsigned int BCD_day, unsigned int BCD_hr, -+ unsigned int BCD_min, unsigned int BCD_sec); -+ -+extern unsigned long -+rs5c313_get_cmos_time(unsigned int *BCD_yr, unsigned int *BCD_mon, -+ unsigned int *BCD_day, unsigned int *BCD_hr, -+ unsigned int *BCD_min, unsigned int *BCD_sec); -+ -+void landisk_rtc_gettimeofday(struct timespec *tv) -+{ -+ unsigned int BCD_yr, BCD_mon, BCD_day, BCD_hr, BCD_min, BCD_sec; -+ unsigned long flags; -+ -+ spin_lock_irqsave(&rtc_lock, flags); -+ tv->tv_sec = rs5c313_get_cmos_time -+ (&BCD_yr, &BCD_mon, &BCD_day, &BCD_hr, &BCD_min, &BCD_sec); -+ tv->tv_nsec = 0; -+ spin_unlock_irqrestore(&rtc_lock, flags); -+} -+ -+int landisk_rtc_settimeofday(const time_t secs) -+{ -+ int retval = 0; -+ int real_seconds, real_minutes, cmos_minutes; -+ unsigned long flags; -+ unsigned long nowtime = secs; -+ unsigned int BCD_yr, BCD_mon, BCD_day, BCD_hr, BCD_min, BCD_sec; -+ -+ spin_lock_irqsave(&rtc_lock, flags); -+ -+ rs5c313_get_cmos_time -+ (&BCD_yr, &BCD_mon, &BCD_day, &BCD_hr, &BCD_min, &BCD_sec); -+ cmos_minutes = BCD_min; -+ BCD_TO_BIN(cmos_minutes); -+ -+ /* -+ * since we're only adjusting minutes and seconds, -+ * don't interfere with hour overflow. This avoids -+ * messing with unknown time zones but requires your -+ * RTC not to be off by more than 15 minutes -+ */ -+ real_seconds = nowtime % 60; -+ real_minutes = nowtime / 60; -+ if (((abs(real_minutes - cmos_minutes) + 15) / 30) & 1) -+ real_minutes += 30; /* correct for half hour time zone */ -+ real_minutes %= 60; -+ -+ if (abs(real_minutes - cmos_minutes) < 30) { -+ BIN_TO_BCD(real_seconds); -+ BIN_TO_BCD(real_minutes); -+ rs5c313_set_cmos_time(BCD_yr, BCD_mon, BCD_day, BCD_hr, -+ real_minutes, real_seconds); -+ } else { -+ printk(KERN_WARNING -+ "set_rtc_time: can't update from %d to %d\n", -+ cmos_minutes, real_minutes); -+ retval = -1; -+ } -+ -+ spin_unlock_irqrestore(&rtc_lock, flags); -+ return retval; -+} -+ -+void landisk_time_init(void) -+{ -+ rtc_sh_get_time = landisk_rtc_gettimeofday; -+ rtc_sh_set_time = landisk_rtc_settimeofday; -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/landisk/setup.c linux-2.6.17/arch/sh/boards/landisk/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/landisk/setup.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/landisk/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,179 @@ -+/* -+ * arch/sh/boards/landisk/setup.c -+ * -+ * Copyright (C) 2000 Kazumoto Kojima -+ * Copyright (C) 2002 Paul Mundt -+ * -+ * I-O DATA Device, Inc. LANDISK Support. -+ * -+ * Modified for LANDISK by -+ * Atom Create Engineering Co., Ltd. 2002. -+ * -+ * modifed by kogiidena -+ * 2005.09.16 -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/config.h> -+#include <linux/init.h> -+#include <linux/pm.h> -+#include <linux/mm.h> -+#include <asm/machvec.h> -+#include <asm/rtc.h> -+#include <asm/landisk/iodata_landisk.h> -+#include <asm/io.h> -+ -+void landisk_time_init(void); -+void init_landisk_IRQ(void); -+ -+int landisk_ledparam; -+int landisk_buzzerparam; -+int landisk_arch; -+ -+/* cycle the led's in the clasic knightrider/sun pattern */ -+static void heartbeat_landisk(void) -+{ -+ static unsigned int cnt = 0, blink = 0x00, period = 25; -+ volatile u8 *p = (volatile u8 *)PA_LED; -+ char data; -+ -+ if ((landisk_ledparam & 0x080) == 0) -+ return; -+ -+ cnt += 1; -+ -+ if (cnt < period) -+ return; -+ -+ cnt = 0; -+ blink++; -+ -+ data = (blink & 0x01) ? (landisk_ledparam >> 16) : 0; -+ data |= (blink & 0x02) ? (landisk_ledparam >> 8) : 0; -+ data |= landisk_ledparam; -+ -+ /* buzzer */ -+ if (landisk_buzzerparam & 0x1) { -+ data |= 0x80; -+ } else { -+ data &= 0x7f; -+ } -+ *p = data; -+ -+ if (((landisk_ledparam & 0x007f7f00) == 0) && -+ (landisk_buzzerparam == 0)) -+ landisk_ledparam &= (~0x0080); -+ -+ landisk_buzzerparam >>= 1; -+} -+ -+/* -+ * The Machine Vector -+ */ -+struct sh_machine_vector mv_landisk __initmv = { -+ .mv_nr_irqs = 72, -+ .mv_inb = landisk_inb, -+ .mv_inw = landisk_inw, -+ .mv_inl = landisk_inl, -+ .mv_outb = landisk_outb, -+ .mv_outw = landisk_outw, -+ .mv_outl = landisk_outl, -+ .mv_inb_p = landisk_inb_p, -+ .mv_inw_p = landisk_inw, -+ .mv_inl_p = landisk_inl, -+ .mv_outb_p = landisk_outb_p, -+ .mv_outw_p = landisk_outw, -+ .mv_outl_p = landisk_outl, -+ .mv_insb = landisk_insb, -+ .mv_insw = landisk_insw, -+ .mv_insl = landisk_insl, -+ .mv_outsb = landisk_outsb, -+ .mv_outsw = landisk_outsw, -+ .mv_outsl = landisk_outsl, -+ .mv_ioport_map = landisk_ioport_map, -+ .mv_init_irq = init_landisk_IRQ, -+#ifdef CONFIG_HEARTBEAT -+ .mv_heartbeat = heartbeat_landisk, -+#endif -+}; -+ALIAS_MV(landisk) -+ -+const char *get_system_type(void) -+{ -+ return "LANDISK"; -+} -+ -+static void landisk_power_off(void) -+{ -+ ctrl_outb(0x01, PA_SHUTDOWN); -+} -+ -+static void check_usl5p(void) -+{ -+ volatile u8 *p = (volatile u8 *)PA_LED; -+ u8 tmp1, tmp2; -+ -+ tmp1 = *p; -+ *p = 0x40; -+ tmp2 = *p; -+ *p = tmp1; -+ -+ landisk_arch = (tmp2 == 0x40); -+ if (landisk_arch == 1) { -+ /* arch == usl-5p */ -+ landisk_ledparam = 0x00000380; -+ landisk_ledparam |= (tmp1 & 0x07c); -+ } else { -+ /* arch == landisk */ -+ landisk_ledparam = 0x02000180; -+ landisk_ledparam |= 0x04; -+ } -+} -+ -+void __init platform_setup(void) -+{ -+ landisk_buzzerparam = 0; -+ check_usl5p(); -+ -+ printk(KERN_INFO "I-O DATA DEVICE, INC. \"LANDISK Series\" support.\n"); -+ board_time_init = landisk_time_init; -+ pm_power_off = landisk_power_off; -+} -+ -+void *area5_io_base; -+void *area6_io_base; -+ -+static int __init landisk_cf_init(void) -+{ -+ pgprot_t prot; -+ unsigned long paddrbase, psize; -+ -+ /* open I/O area window */ -+ paddrbase = virt_to_phys((void *)PA_AREA5_IO); -+ psize = PAGE_SIZE; -+ prot = PAGE_KERNEL_PCC(1, _PAGE_PCC_IO16); -+ area5_io_base = p3_ioremap(paddrbase, psize, prot.pgprot); -+ if (!area5_io_base) { -+ printk("allocate_cf_area : can't open CF I/O window!\n"); -+ return -ENOMEM; -+ } -+ -+ paddrbase = virt_to_phys((void *)PA_AREA6_IO); -+ psize = PAGE_SIZE; -+ prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_IO16); -+ area6_io_base = p3_ioremap(paddrbase, psize, prot.pgprot); -+ if (!area6_io_base) { -+ printk("allocate_cf_area : can't open HDD I/O window!\n"); -+ return -ENOMEM; -+ } -+ -+ printk(KERN_INFO "Allocate Area5/6 success.\n"); -+ -+ /* XXX : do we need attribute and common-memory area also? */ -+ -+ return 0; -+} -+ -+__initcall(landisk_cf_init); -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/mpc1211/CVS/Entries linux-2.6.17/arch/sh/boards/mpc1211/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/mpc1211/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/mpc1211/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,6 @@ -+/Makefile/1.4/Thu Mar 11 18:08:02 2004/-ko/ -+/led.c/1.1/Fri May 16 17:18:15 2003/-ko/ -+/pci.c/1.6/Mon Oct 25 10:41:01 2004/-ko/ -+/setup.c/1.4/Sun Feb 5 21:55:28 2006/-ko/ -+/rtc.c/1.4/Sat Jul 8 20:16:04 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/mpc1211/CVS/Repository linux-2.6.17/arch/sh/boards/mpc1211/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/mpc1211/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/mpc1211/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/mpc1211 -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/mpc1211/CVS/Root linux-2.6.17/arch/sh/boards/mpc1211/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/mpc1211/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/mpc1211/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/mpc1211/rtc.c linux-2.6.17/arch/sh/boards/mpc1211/rtc.c ---- linux-2.6.17-vanilla/arch/sh/boards/mpc1211/rtc.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/mpc1211/rtc.c 2006-07-12 16:54:20.000000000 +0000 -@@ -130,7 +130,7 @@ - - void mpc1211_time_init(void) - { -- rtc_get_time = mpc1211_rtc_gettimeofday; -- rtc_set_time = mpc1211_rtc_settimeofday; -+ rtc_sh_get_time = mpc1211_rtc_gettimeofday; -+ rtc_sh_set_time = mpc1211_rtc_settimeofday; - } - -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/mpc1211/setup.c linux-2.6.17/arch/sh/boards/mpc1211/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/mpc1211/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/mpc1211/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -256,23 +256,12 @@ - } - } - --/* -- Initialize the board --*/ -- -- --static void delay (void) --{ -- volatile unsigned short tmp; -- tmp = *(volatile unsigned short *) 0xa0000000; --} -- --static void delay1000 (void) -+static void delay1000(void) - { - int i; - - for (i=0; i<1000; i++) -- delay (); -+ ctrl_delay(); - } - - static int put_smb_blk(unsigned char *p, int address, int command, int no) -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/overdrive/CVS/Entries linux-2.6.17/arch/sh/boards/overdrive/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/overdrive/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/overdrive/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,11 @@ -+/Makefile/1.5/Sat Mar 26 20:25:35 2005// -+/fpga.c/1.2/Fri Nov 1 17:19:19 2002// -+/galileo.c/1.4/Mon Oct 25 10:41:01 2004// -+/io.c/1.2/Fri Nov 1 17:19:19 2002// -+/irq.c/1.4/Fri Oct 28 13:12:48 2005// -+/led.c/1.3/Sun May 4 19:29:47 2003// -+/mach.c/1.4/Tue Sep 9 00:14:07 2003// -+/overdrive.ttf/1.2/Fri Nov 1 17:19:19 2002// -+/pcidma.c/1.3/Mon Dec 27 23:14:24 2004// -+/setup.c/1.3/Sat Mar 26 20:25:35 2005// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/overdrive/CVS/Repository linux-2.6.17/arch/sh/boards/overdrive/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/overdrive/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/overdrive/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/overdrive -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/overdrive/CVS/Root linux-2.6.17/arch/sh/boards/overdrive/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/overdrive/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/overdrive/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/overdrive/overdrive.ttf linux-2.6.17/arch/sh/boards/overdrive/overdrive.ttf ---- linux-2.6.17-vanilla/arch/sh/boards/overdrive/overdrive.ttf 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/overdrive/overdrive.ttf 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,770 @@ -+255,255, 98,255, 51, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -+160, 9, 52,129, 38,208, 4,154, 64, 19, 0, 89, 96, 10,100,129,137,134, 85, 6,154, 0, 25,104, 2, 77,160, 76,148, 1, 0, 0, 0, 0, 0, 6,202, 0, 25, 0, 89,100,170, 9, 52,129, 38, 80, 6,154, 68, 19,112, 2, 96, 10, 76,149,129, 50, 64, 6,200, 0,188,254, -+ 0, 21,160, 2, 84,128, 10, 80, 1, 42,128, 10, 80, 1, 42, 64, 7,180,128, 10, 80, 1, 42, 64, 5,168, 0, 61,160, 2, 0, 0, 0, 0, 0, 9, 80, 1, 46,128, 10,120, 1, 21,160, 2, 84,128, 10,208, 3, 42, 64, 5, 80, 1, 42,160, 2, 84,128, 11,112, 1,204,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 0, 16, 0, 0, 8, 0, 0, 0, 0,204,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,124,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 0,128, 2, 0, 0, 2, 0, 0, 0, 64,101,160, 0, 0, 0, 0, 0, 0, 0, 80, 0, 2, 0, 0, 74, 9, 0, 0, 0, 0,128, 66, 0, 2, 0, 0, 0, 0, 1, 32,160, 0, 4,160, 0, 16, 0, 72,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 1, 0, 32, 2, 0, 0, 0, 1, 0, 0, 0, 12,128, 4, 0, 0, 0, 0, 0, 0, 80, 0, 8, 1, 0, 32, 0, 0, 0, 0, 0, 0, 2,130, 0, 0, 0, 0, 0,130, 8,128, 16,144, 0, 2, 0, 1,160,254, -+160, 9, 54, 0, 0, 16, 0, 18, 16, 0, 72, 68, 0, 32, 0, 0, 0, 0,208, 0, 0, 64, 34,104, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 80, 24, 26, 64, 33, 1, 0, 1, 32,144, 36,192, 66, 4, 0, 26, 64, 3, 8, 0, 1,160, 16, 0,128, 66, 18, 0, 2, 0,240,252, -+ 0, 1, 48, 0, 0, 0, 0, 8, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 1, 2, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 24, 0, 2, 0, 0, 0, 0, 0, 16, 0, 4, 0, 0, 24, 0, 3, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 16,204,253, -+128, 1, 60, 0, 0,240, 0, 22, 0, 0, 88, 0, 0,224, 1, 0, 0, 0,240, 0, 0,192, 2, 96, 16, 7, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 30,192, 1, 0, 0, 12, 96, 0, 44,128, 3, 0, 0, 30,192, 3, 0, 0, 12,224, 0, 0,128, 3,240, 0, 0, 4, 72,252, -+128, 5, 54, 0, 0,208, 0, 10, 0, 0, 40, 0, 0,160, 1, 0, 0, 0,208, 0, 0, 64, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,128,132, 26, 64, 2, 0, 0, 64, 33, 40, 20,128, 4, 0, 0, 26, 64, 3, 0,130, 76, 33, 1, 0,128, 64,209, 0, 0, 0,200,252, -+128, 5, 0, 10, 0, 0, 2, 16, 0, 0, 64, 0, 0, 0, 4, 0, 0, 0, 0,128, 0, 0, 2, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 64, 8,128, 0, 1, 0, 0, 44,128,132, 32, 0, 2, 0, 0,128, 0, 0, 0, 4, 0,130, 0, 0, 0, 64,193, 34, 0, 1,188,255, -+224, 65, 8, 0, 0, 32, 64, 12, 0, 0, 56, 0, 0, 64,128, 0, 0, 0, 48, 0, 0,128, 1,120, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0,176, 64, 6,136, 2, 0, 0, 15, 68, 1, 24, 0, 5, 0, 0, 6,144,128, 24, 32, 15, 64, 1, 0, 0, 1,224, 0, 6, 8, 0,253, -+128, 1, 1, 0, 0, 0, 32, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 96, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 1, 0, 0, 12, 2, 64, 32, 0, 2, 0, 0, 0, 64, 0, 96, 64, 12,128, 0, 0, 0, 0, 0, 0, 0, 16,112,252, -+128, 5, 0, 0, 0, 0, 0, 8, 0, 0, 40, 0, 0, 0, 8, 2, 0, 0, 16, 0, 0, 0, 1, 96, 10, 9, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 2, 64, 2, 0, 0, 76, 0, 5, 16,128, 4, 0, 0, 2, 64, 0, 0, 2, 76, 36, 1, 0, 0, 20, 2, 36,136, 0, 20,254, -+ 32, 16, 53, 0, 0, 16, 0, 18, 1, 0, 40, 33, 0, 32, 0, 0,128, 6,208, 0, 0, 64, 0, 0, 0, 5, 8, 0, 4, 0, 0, 0, 0, 0, 16, 0, 26, 0, 0,104, 0, 0, 32,144, 4,128, 0, 1, 0, 18, 80, 0,104, 0, 0, 0, 0, 4,128, 66,210, 0, 2, 0,200,255, -+ 0, 0, 48, 0, 0, 0, 0, 8, 16, 0, 64, 0, 0, 0, 0, 0, 0, 6,192, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,120,252, -+ 0, 0, 60, 0, 0,192, 0, 22, 0, 0, 56, 0, 0,224, 1, 0,128, 7,240, 0, 0,192, 0, 0, 0, 7, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,120, 0, 0, 96, 0, 48, 0, 6, 4, 0, 22,192, 3,120, 0, 0, 0, 0, 0,128, 3,240, 0, 0, 4,172,254, -+ 8, 0, 54, 0, 0,192, 0, 10, 0, 0, 72, 0, 0,160, 1, 0,128, 6,208, 0, 0, 64, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 0, 0,132, 26, 0, 0,104, 0, 0, 32, 40, 48, 5, 16, 0, 0, 10, 64, 3,104, 0, 0, 0, 0,128,144, 32, 17, 32, 0,128, 92,255, -+ 0, 8, 48, 0, 0,192, 2, 16, 0, 0, 32, 0, 0, 0, 4, 0, 0, 16, 0, 0, 0, 0, 19, 0, 0, 4, 0, 0, 48, 2, 0, 0, 0, 0, 0, 4, 0, 16, 0, 0, 20, 0,128, 4, 48, 18, 18, 2, 0, 16, 0, 3, 0, 32, 0, 0, 0, 0, 10, 64, 1, 34, 0,129, 1,252, -+ 96, 64, 56, 0, 0,240, 64, 12, 0, 0, 80, 0, 0, 64,128, 0, 0, 1, 52,128, 0,128,131, 0, 0, 10, 0, 0, 12, 8, 0, 0, 0, 0, 48, 64, 6, 0, 0, 24, 0, 0, 64, 65, 12,128, 5, 0, 0, 14,128,131, 24, 0, 0, 0, 0, 60, 0, 1,224, 0, 6, 8,100,254, -+ 4, 0, 52, 0, 0,192, 0, 16, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 0, 0, 4, 0, 0, 48, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 64, 48, 0, 2, 0, 0, 16, 64, 0, 0, 0, 0, 0, 0, 0, 32, 0,192, 0, 0, 16, 13,255, -+ 0, 73, 52, 0, 0,192, 34, 8, 0, 0, 64, 0, 0, 0, 72, 0, 0, 0, 16, 0, 0, 64, 3, 0, 0, 9, 0, 0,176, 8, 0, 0, 0, 0, 0, 64, 2, 0, 0, 8, 0, 0, 0, 5,176, 8, 38, 2, 0, 8, 64,128, 8, 0, 0, 0, 0, 0, 1, 20, 2, 36,144, 0,116,254, -+160, 1, 6, 0, 0, 16, 0, 26, 0, 0, 40, 64, 0, 32, 0, 0,128, 0, 16, 0, 0, 64, 35, 1, 0, 73, 4, 0, 52, 0, 0, 0, 0, 0, 16, 0, 26, 0, 0,104, 0, 0, 32,144, 4,128, 66, 2, 0, 2, 64,163, 8, 0, 0, 0, 0, 4,128, 66,210, 0, 18, 3,236,255, -+ 0, 1, 0, 0, 0,192, 0, 24, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 4, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 96, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 36,255, -+128, 1, 48, 8, 0,240, 32, 30, 0, 0, 56, 0, 0,224, 1, 0, 0, 6,192, 0, 0, 0, 3, 0, 0, 11, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,120, 0, 0, 96, 0, 48,128, 3, 0, 0, 24, 0, 3, 1, 0, 0, 0, 0, 0,128, 3,192, 32, 16, 0,220,255, -+132, 41, 0, 0, 0,208, 4, 26, 0, 0, 72, 0, 0,160, 1, 0, 0, 6, 0, 20, 0, 0,163, 0, 0, 5, 0, 0, 52, 0, 0, 0, 0, 0, 0,132, 26, 0, 0,104, 0, 0, 32, 40, 48,137, 4, 0, 0, 0, 8, 35, 0,130, 0, 0, 0,128,144, 0,193, 8, 24, 32,121,253, -+ 4, 4, 0, 34, 0, 0, 2, 24, 0, 0, 32, 0, 0, 0, 4, 0, 0, 22,192, 32, 0, 0, 16, 1, 0, 8, 0, 0, 48, 0, 0, 0, 0, 0, 0, 8, 0, 8, 0, 0, 2, 0,128, 8,176, 0, 2, 0, 0, 88, 4, 3, 0, 8, 0, 0, 0, 0, 10, 64,193, 40, 88, 0, 76,254, -+ 96,128, 12, 0, 0, 32, 64, 28, 0, 0, 80, 0, 0, 64,128, 0,128, 7,242, 0, 0,192, 3, 0, 0, 7, 0, 0, 56, 0, 0, 0, 0, 0, 48, 64, 6, 0, 0, 24, 16, 0, 64, 65, 12, 32, 5, 0, 0, 30,192,131, 24, 0, 0, 0, 0, 12, 0, 1,240, 0, 14, 16,212,254, -+136, 65, 0, 0, 0, 0, 0, 24, 0, 0, 32, 0, 0, 0, 0, 0, 0, 6,192, 0, 0, 0, 3, 0, 0, 8, 0, 0, 48, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 64, 48, 0, 2, 0, 0, 24, 0, 3, 96, 0, 0, 0, 0, 48, 32, 0,192, 0, 24,128, 48,253, -+128, 9, 0, 9, 0, 0, 34, 24, 0, 0, 64, 0, 0, 0, 64, 0, 0, 70,193, 32, 0, 0,131, 0, 0, 4, 0, 0, 52, 0, 0, 0, 0, 0,192, 4, 0, 0, 0, 8, 0, 0, 0, 5, 48,144, 4, 0, 0, 88, 8,131, 0, 32, 0, 0, 0, 0, 1, 20,194, 40, 24, 5,208,252, -+ 32, 8, 4, 0, 0, 16, 0, 82, 8, 0, 8,132, 0, 32,132, 0,128, 0,208, 0, 0, 64, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0,208, 0, 26, 0, 0, 40, 17, 0, 32,144, 4,137, 16, 17, 0, 26, 64,163, 8, 0, 0, 0, 0, 0,128, 66, 18, 0, 82, 0,172,255, -+ 0,128, 0, 0, 0,192, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,128, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,112,253, -+ 0, 64, 0, 0, 0, 48, 32, 22, 0, 0, 32, 0, 0,128, 0, 0,128, 7,240, 0, 0,192, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0,192, 64, 30, 0, 0, 56, 16, 0, 96, 0, 12, 8, 6, 48, 0, 24, 4, 3, 96, 0, 0, 0, 0, 0,128, 3,241, 0, 0, 16,232,253, -+ 8, 0, 0, 0, 0, 16, 4, 10, 0, 0, 64, 17, 0,128, 65, 0,128, 6,209, 0, 0, 64, 0, 0, 0, 44, 2, 0, 0, 0, 0, 0, 0, 0,192, 4, 26, 0, 0, 8, 0, 0, 32, 40, 4, 0, 16, 17, 0,152, 0, 64, 0, 18, 0, 0, 0, 0,128, 16,208,136,128,128, 48,253, -+ 0, 8, 49, 33, 0, 0, 2, 16, 0, 0, 0, 1, 0, 0, 4, 0, 0, 16, 0, 66, 0, 0, 11, 0, 0, 32, 4, 0, 48, 1, 0, 0, 0, 0,128, 4, 0, 1, 0, 0, 4, 0,128, 0,144, 8, 18,194,130, 88, 8,136, 96, 16, 0, 0, 0, 0, 0, 64, 1, 68, 80,144, 93,254, -+ 96, 0, 60, 0, 0, 32, 64, 12, 0, 0,120, 64, 0, 96,128, 0, 0, 1, 50, 0, 0,128, 3, 2, 0, 15, 0, 0, 60, 16, 0, 0, 0, 0,240, 64, 6, 8, 0, 16, 64, 0, 64, 65, 40,128, 5,224, 0, 30,192, 2,120, 0, 0, 0, 0, 0, 0, 1,224, 0, 22, 0, 80,255, -+132, 65, 0, 0, 0, 0, 0, 16, 0, 0, 32, 0, 0,128, 65, 0, 0, 0, 0, 0, 0, 64, 3, 0, 0, 12, 2, 0, 0, 16, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 16, 0, 0, 64, 0, 0, 2,208, 0, 24, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0,192, 0, 16, 0,113,252, -+ 0, 17, 0, 9, 0, 0, 34, 8, 0, 0, 96, 10, 0,128, 5, 0,128, 64, 1, 0, 0, 64, 3, 0, 0,140, 0, 0, 0, 1, 0, 0, 0, 0,192,130, 0, 0, 0, 64, 2, 0, 0, 5, 36, 66, 38,210, 0,152, 8, 35, 96, 16, 0, 0, 0, 0, 0, 20, 2, 40, 16, 16,120,252, -+160, 49, 4, 0, 0,208, 0,146, 96,160, 72, 4,137, 32, 0, 0,128, 0,208, 0, 0, 64, 0,104, 0, 1, 0, 0, 52, 0, 0, 0, 0, 0,208, 0, 26, 0, 0, 40, 17, 0, 32,144, 52,128, 64, 81, 4, 2, 64, 3,104, 0, 0, 32, 17, 0,128, 0, 16, 8, 2, 0, 40,254, -+128, 1, 0, 0, 0, 0, 0, 8, 0, 0, 32, 64, 4, 4,128, 0, 0, 0,192, 0, 0, 0,128, 96, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 3, 96, 0, 0,128, 0, 1, 0, 0, 0, 32, 0, 0,248,253, -+128, 0, 0, 0, 0, 0, 64, 22, 0,131, 88, 0, 11,128, 0, 0, 0, 0,241, 0, 0, 0, 1,120, 0, 12, 0, 0, 60, 0, 0, 0, 0, 0,192, 64, 24, 0, 0, 56, 0, 0, 96, 0, 0, 0, 6, 0, 0, 24,192, 3,120, 0, 0, 96, 1, 0,128, 1,241, 0, 0, 4,208,252, -+ 4, 9, 1, 0, 0, 0, 0, 10, 0, 16, 40, 0, 5,128, 73, 0, 0, 38,208, 0, 0, 0, 19,108, 0, 76, 2, 0, 52, 0, 0, 0, 0, 0,128, 4, 64, 16, 0, 8, 20, 0, 32, 40, 0, 9, 32, 1, 68, 0, 96, 3,104, 0, 0,160, 0, 0,128, 6,208, 36, 0,128,192,252, -+ 12, 64, 0, 33, 0,192, 64, 16, 0, 9, 65, 0, 8, 0, 4, 0, 0, 22, 0, 8, 0, 0, 16, 1, 33,128, 4, 0, 0, 64, 0, 0, 0, 0,192, 2,128, 0, 0, 0, 4, 0,128, 64,128, 32, 18, 66, 4, 88, 0, 3, 0, 68, 0, 0, 1, 0, 0, 38, 1, 34, 0,129, 65,255, -+224, 1, 12, 0, 0,240, 0, 12,192, 2, 48, 0, 7, 96,128, 0,128, 7, 50,128, 0,192, 0, 24, 0, 15, 0, 0, 12, 0, 0, 0, 0, 0,240,128, 30, 4, 0, 16, 64, 0, 64, 1, 12,128, 5,240, 32, 30,132, 3, 24, 0, 0,224, 0, 0, 0, 7,160, 0, 30, 8, 84,253, -+ 8, 0, 48, 0, 0,192, 32, 16, 0, 1, 66, 0, 8,128, 1, 0, 0, 6, 0, 0, 0, 0,128, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0,192,128, 24, 0, 0, 0, 16, 0, 0, 64, 0, 0, 2, 0, 0, 24, 0, 3, 0, 0, 0, 0, 1, 0,128, 6,193, 32, 0, 16, 17,254, -+ 0, 17, 50, 9, 0,192, 4, 8, 0, 35, 32, 0, 4,128, 81, 0, 0, 70, 1, 0, 0, 0, 0, 8, 0, 76, 16, 0, 0, 0, 0, 0, 0, 0,192, 4, 24, 32, 0, 64, 2, 0, 0, 5, 0, 33, 38,194, 20,152, 4, 3, 0, 0, 0,128, 0, 0,128, 38, 64, 8,128, 0, 88,254, -+ 32, 0, 4, 0, 0, 16, 0, 18, 1, 0, 8, 0, 69,168, 1, 0,128, 6, 16, 0, 0, 64, 98, 72, 64, 41, 8, 0, 4, 0, 0, 0, 0, 0, 16, 0, 2, 64, 34, 9, 0, 0,160,144, 20,128, 68, 18, 0, 26, 64, 0,104, 0, 0, 32, 0, 4,128, 66, 18, 4, 26, 0, 46,255, -+ 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 16, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0,128, 24, 16,192,254, -+ 96, 0, 48, 0, 0, 0, 0, 22, 0, 0, 96, 32, 4,128, 1, 1, 0, 6,192, 0, 0,192, 2, 88, 0, 11, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 24,200, 2, 96, 0, 0,224, 64, 12,136, 5, 48, 0, 24, 4, 0, 96, 0, 0,128, 1, 0,128, 3, 0, 32, 24, 4,184,254, -+ 40, 0, 48, 0, 0,192, 40, 10, 0, 0, 0, 4, 64, 1, 16, 0, 0, 6, 4, 20, 0, 64, 1, 40, 0, 5, 0, 0, 0, 32, 0, 0, 0, 0, 0,132, 24, 65, 1, 96, 0, 0, 32, 16, 4,128, 2, 16, 0, 0, 0, 0, 96,130, 0,128, 73,128,160, 64, 2, 0, 24,128,173,252, -+128, 81, 48, 0, 0, 0, 2, 16, 0, 0, 32, 1, 32,132, 5, 0, 0, 64,192, 40, 0, 0, 2, 64, 0, 8, 0, 0, 48, 8, 0, 0, 0, 0, 0, 4, 0, 1, 2, 0, 1, 0, 0, 68,128, 32, 4,192, 24, 0, 1, 0, 96, 64, 0, 0, 0,128, 32, 64, 1, 2, 24,144, 8,254, -+192, 1, 60, 8, 0, 48, 64, 12, 0, 0, 88, 32, 11,224,129, 0,128, 1,241, 0, 0,128, 1, 56, 0, 6, 0, 0, 60, 0, 0, 0, 0, 0, 48, 64, 30,196, 1, 24, 32, 0, 64, 0, 8,128, 3,224, 0, 30,208,128, 24, 0, 0,224,129, 12, 0, 1, 48, 64, 22, 0,213,252, -+132, 1, 48, 8, 0,192, 0, 16, 0, 0, 32, 64, 12,130, 1, 0, 0, 6,192, 0, 0, 0, 2, 64, 0, 8, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 24, 4, 2, 0, 0, 0, 0, 0, 0, 0, 4,192, 0, 24, 0, 3, 96, 64, 0,128, 65, 0, 0, 0, 0, 0, 24, 8,247,255, -+128, 1, 48, 0, 0,192, 32, 8, 0, 0, 96, 4,140,128, 69, 0, 0, 70,194, 36, 0, 0, 1, 32, 0, 5, 0, 0, 48, 8, 0, 0, 0, 0,192, 64, 24, 1, 1, 0, 10, 0, 0, 41, 4, 33, 2,192, 0,152, 2,131, 96, 4, 0,128, 9, 48, 32, 20,130, 40, 88, 0,112,253, -+ 48, 0, 4, 0, 0, 16, 0, 18, 66, 66, 8, 12, 1,160, 17, 4,128, 64, 82, 2, 1, 64, 19, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 80, 24, 26, 64, 0, 40, 8, 0,160, 1, 4,128, 68,212, 0, 2, 81, 3,104, 0, 0,160, 1, 4,128, 66,210, 4, 66, 0, 42,254, -+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 0, 0, 0, 65, 0, 0, 0,128, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 8, 88,255, -+128, 1, 12, 0, 0,240, 0, 22,192, 2, 32, 0, 12,130, 1, 48, 0, 6,192, 0, 0, 0,129, 96, 64, 12,128,129, 48, 16, 0, 0, 0, 0, 64, 0, 24, 0, 3, 24, 16, 0, 96, 64, 60,128, 5,192, 0, 8,192,131, 96, 0, 0,128, 65, 0,128, 3,241, 32, 0, 0,212,252, -+140, 1, 4, 0, 0,208, 0, 10, 64, 1, 64, 16, 64,128, 73, 48, 0, 0,196, 72, 0, 0, 10, 96, 1, 76,136, 17, 0, 0, 0, 0, 0, 0,128,132, 64, 8,147, 8, 2, 0, 32, 16, 52,128, 2, 0, 66, 16, 68, 0, 96,130, 0, 0, 4,128,160, 32, 16, 0, 64,144,101,252, -+ 4, 4, 48, 0, 0, 0, 2, 16, 0, 2, 0, 1, 44, 2, 4, 0, 17,130, 64, 4, 0, 0, 32, 0, 0, 0, 0, 64,176, 8, 0, 0, 0, 0, 64, 4, 64, 0, 0, 0, 0, 0,128, 81, 0, 1, 4, 0, 34, 64, 8, 0, 0, 8, 0, 0, 4,129, 32, 64, 1, 2, 64,144, 80,255, -+ 96,128, 56, 8, 0, 32, 64, 12,192, 1,120, 64, 15, 96,128, 12,128, 5,240, 32, 0,192,131,120, 32, 15,228, 1, 60, 0, 0, 0, 0, 0,176, 64, 30,196, 3, 17, 64, 0,192, 1, 8,144, 3,240, 0, 30,128,131,120, 0, 0,224, 1, 60, 0, 1,224, 64, 6, 0, 29,255, -+ 12, 0, 48, 0, 0, 0, 0, 16, 0, 2, 32, 0, 12, 0, 0, 0, 0, 2,192, 0, 0, 0, 0, 96, 16, 12,128,129, 48, 0, 0, 0, 0, 0, 0, 0, 24, 0,131, 0, 0, 0,160, 65, 0, 0, 4,192, 0, 8, 64, 3, 96, 64, 0,128,129, 0, 0, 0, 64, 0, 0, 0,167,255, -+ 0, 40, 48, 0, 0, 0, 40, 8, 0, 1, 96, 10, 76, 4, 68, 0, 4, 22,193,136, 0, 0,162, 96, 2,140,130, 9,176, 16, 0, 0, 0, 0,128, 64, 24, 32, 19, 0, 32, 0,160, 5, 4, 9, 2,192,128,152, 72,128, 96, 4, 0,128, 1, 0, 32, 20, 66, 40, 8, 16,208,254, -+ 32, 0, 4, 0, 0,208, 0,146, 72, 65, 8, 0,133, 32, 0, 0,128, 0, 80, 8, 2, 64, 0, 8, 0,137,160, 1, 4, 0, 0, 0, 0, 0,208, 0, 2, 64, 0, 8, 0, 13, 32,144, 4,137,132, 16, 0, 90, 64, 0, 8, 0, 13, 32, 4, 4,128, 66,210, 0, 26, 0,140,255, -+ 0, 0, 0, 0, 0,192, 0, 8, 0, 2, 0, 0, 8, 4, 0, 0, 0, 6,128, 64, 0, 0, 0, 0, 0, 4,136, 1, 0, 0, 0, 0, 0, 0,192,128, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 2, 0, 0, 16, 16, 0, 0, 0, 12, 0,128, 0, 0, 0, 0, 0, 24, 0,240,254, -+128, 1, 48, 0, 0,240, 0, 22,192, 1, 96, 0, 7,224, 1, 0,128, 1,192, 0, 6,192, 0, 96, 16, 11,224, 1, 48, 16, 0, 0, 0, 0,192, 64, 24, 8,131,120, 0, 15, 96, 0, 12,136, 5,192, 64, 24, 8, 0, 96, 32, 15,128, 64, 48,136, 3,192, 0, 24, 0, 92,254, -+136, 1, 0, 10, 0,208, 0, 10, 64, 2, 96, 34, 9,160, 1, 0,128, 0,193, 72, 2, 64, 0, 96, 1, 5,160, 1, 48, 2, 0, 0, 0, 0,192, 4, 24, 1, 11,104, 0, 13, 32, 40, 4,128, 2,192, 0, 24, 0, 0, 96, 0, 13, 0, 17,128,128, 16,193, 36, 24, 0, 17,253, -+ 0, 4, 48, 8, 0, 0, 2, 16, 0, 1, 0, 36, 4, 0, 4, 0, 0, 16, 64, 36, 88, 0, 35, 0, 1, 8, 0, 8, 0, 9, 0, 0, 0, 0, 64, 4, 0, 0, 8, 1, 32, 32,132,128, 16, 2, 4, 0, 4, 24, 33,136, 0, 18, 32, 0,132, 0, 32, 64,193, 2, 24, 3,152,255, -+ 96,128, 12, 0, 0, 32,128, 12,128, 2,120, 0, 10, 64,128, 0, 0, 1,242, 0, 28,136,131,120, 32, 6, 96, 0, 61, 0, 0, 0, 0, 0,240, 64, 30,196, 3, 16, 0, 3, 64, 1, 40,160, 3,240, 32, 30,192, 0,120, 0, 3,232, 1, 12, 0, 1,240, 32, 30, 0,248,255, -+ 4, 64, 48, 0, 0, 0, 0, 16, 0, 1, 96, 0, 4, 0, 0, 0, 0, 0,192, 0, 24, 64, 3, 96, 32, 8, 0, 0, 48, 0, 0, 0, 0, 0,192, 0, 24, 4, 3, 0, 0, 0, 0, 64, 0, 0, 4,192, 32, 24, 0,131, 96, 0, 0,128, 0, 0, 0, 0,192, 0, 0,128, 24,255, -+ 0, 4, 48, 8, 0, 16, 0, 8, 64, 2, 96, 20, 9, 0, 68, 0,128, 64,193,136, 24, 64, 3, 96, 2, 5, 0, 0, 48, 17, 0, 0, 0, 0,192,130, 24, 0, 11, 1, 10, 0, 0, 5, 36, 66, 2,192, 0, 24, 8, 35, 96, 68, 0,128, 41,128, 16, 20,194, 32, 0, 32, 52,253, -+ 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 50,252, -+ 32, 0, 0,144, 0, 0, 0, 2, 0, 0, 0, 0, 0, 32, 0, 4,128, 0, 0, 0, 2, 64, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 32, 0, 1, 0, 0, 0, 64, 0, 0, 0, 0, 0, 1, 0, 0, 4,128, 0, 18, 0, 2, 0,180,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 1, 64, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 32, 0, 0,128, 0, 16, 0, 0,128, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,216,255, -+ 36, 0,128,136, 0, 16, 20, 2, 64, 64, 8, 68, 1, 33, 0, 4,128, 32, 18, 8, 2, 0, 8, 8, 4,129, 32, 0, 4, 5, 0, 0, 0, 0, 16, 0, 66, 64, 64, 8, 1, 1, 0, 16, 4,129,128, 0, 0, 2, 2, 0, 8, 8, 1, 32, 32, 4, 0, 0, 16, 0, 2,128, 89,252, -+ 4,128, 0, 6, 0, 0, 24,128, 16, 0, 1, 32, 0, 4, 48, 0, 0,192, 0, 0, 0, 3, 16, 2, 0,128, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 0, 0, 48, 0, 6, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0,128, 0, 0,192, 0, 4, 0,128, 64,253, -+ 32, 0, 0,128, 0, 16, 0, 0, 0, 0, 0, 0, 0, 32, 0, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 64,128, 0, 0, 0, 0, 0, 4, 0, 0, 0, 64, 2, 0,193,252, -+ 8,128, 0, 0, 0, 0, 64, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 8, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0,128, 0, 16, 0, 4, 64, 0, 16, 0, 2, 64, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0,111,252, -+ 0, 4, 0,133, 0, 0, 2, 0, 0, 16, 1, 36,128, 8, 8, 4, 0, 64, 16,130, 64, 0, 8, 8, 68,128, 40, 4,129, 32, 0, 0, 0, 0, 16, 0, 2, 2, 32, 0, 0, 1, 1, 16,128, 0, 64, 0, 4, 2, 1, 32, 8, 1, 1, 1, 16, 4, 0, 0, 0, 8, 3, 0, 72,252, -+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,252, -+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,254, -+ 0, 32, 0, 0, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 16, 0, 0, 0, 0, 8,220,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 32, 0, 0, 0, 0, 16, 0, 28,254, -+ 0, 0, 0, 0, 0, 0, 0, 32, 0, 1, 0, 0, 20, 0, 0, 0, 0, 0,128, 0, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 64, 0,128, 0, 0, 0, 0, 0, 0, 0, 0,108,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0,128, 0, 80, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 32,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 8, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 32, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 16,148,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 64, 0,240,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 4, 0, 0, 0, 0, 2,182,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,255, -+ 0, 0, 0, 0, 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0, 0, 1, 0, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,140,255, -+ 0, 0, 0, 0, 2, 0, 32, 0, 4, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 64, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 32, 32, 0, 0, 0, 0, 8, 2, 0, 0, 0, 4,124,255, -+ 0, 0, 0,136, 1, 0,128, 4, 16, 6, 0, 0, 0, 0, 0, 4, 0, 1,130, 2, 0,144, 0, 2, 32, 2, 8, 0, 0, 0, 0, 0, 0, 0, 80, 64, 2, 16, 0, 16, 0, 64,193,168, 0, 0,180, 0, 0, 0, 0, 0, 74, 65, 0, 0, 64,168,160, 0, 64, 0,128, 18, 60,255, -+ 0, 0, 0, 1,210,128, 0, 8, 4, 2, 0, 0, 0, 2, 64, 0, 0,132, 64, 0, 0, 0, 0, 0, 12, 8,128, 0, 16, 0, 0, 0, 0, 0, 0, 32,208, 0,160,144, 16,152,165, 32, 52,136,130,128, 0, 10, 64, 17, 16, 0, 0, 0, 3, 96, 9,128, 1, 90, 0, 0,180,253, -+ 0, 0, 0,128, 0, 0, 0, 8, 4, 0, 0, 0, 0, 8, 0, 1, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 32, 0, 0,128, 0, 64, 0, 0, 1, 16, 8, 4, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 0, 0,156,252, -+ 0, 0, 0, 0, 0,129, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 4, 8, 64, 32, 0, 0,129, 0, 0, 0, 0, 0, 0, 0,128, 0, 16, 0, 0, 2, 32, 0, 0,112,255, -+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 64, 90,253, -+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 8, 0, 68, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 4,128, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,254, -+ 0, 0, 0, 0, 0, 0, 32, 0, 32, 0, 0, 64, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 24, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,112,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,192,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 0, 20, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,180,254, -+128, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,124,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 32, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 2, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,152,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,253, -+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,252, -+ 64, 0, 4, 0, 0, 16, 0, 0,128, 0, 16, 0, 2, 32, 0, 4,128, 0, 64, 0, 2,128, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,128, 0, 8, 0, 0, 32, 0, 4, 4, 1, 0, 0, 0, 72, 0, 0, 0, 0, 64, 0, 0,128, 0, 0, 0, 0, 0, 96,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16, 0, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 4, 80,255, -+ 0, 0, 64, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 32,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,252, -+ 0, 4, 5, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0,228,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0,128,252, -+ 8, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,236,252, -+ 2, 0, 0, 0, 4, 64, 0, 8, 4, 0, 32, 16, 0, 0, 64, 16, 0, 2, 1, 32, 0, 0,128, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 16, 0, 4, 0, 0, 0, 8,128, 0, 0, 4, 0,129, 32, 0, 0, 0, 0, 0, 8, 2, 0, 0, 8,192,108,254, -+ 64, 0, 0, 0, 1, 1, 0, 0, 0,128, 0, 0, 4,128, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 4, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 32, 0, 0,128, 0, 0, 8, 0, 0, 0, 0, 64,219,253, -+ 32, 64, 0,128, 1, 36, 0, 4, 8, 0, 18, 32,129, 35,128,108, 6, 1, 3, 64, 0, 16, 0, 1, 0, 1, 0, 5, 8, 0, 0, 0, 0, 0, 0, 20, 2,148, 0, 17, 0, 3, 0, 0, 0, 16, 0, 6, 20, 4,128, 0, 57, 0, 0, 32, 0, 0, 48, 1, 0, 32, 4, 0,160,253, -+128, 8, 48, 8, 96,129, 0, 8, 68, 0, 32, 0, 66,128, 0, 0, 0,197, 0, 4, 24, 0, 1, 0, 12, 4, 0, 5, 16, 34, 0, 0, 0, 0,128, 72,194, 3,119, 32, 0, 32,194, 65, 24, 45,206, 64, 4, 52, 0,129, 0, 24, 0, 0, 0, 16, 1,128, 0, 92, 80, 0, 48,254, -+128, 0, 16, 8, 0, 1, 0, 8, 4, 0, 32, 0, 0,128, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 0, 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0,129, 64, 16, 8, 1, 64, 0, 0, 0,129, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,136,255, -+ 0, 0, 8, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 8, 0, 0, 0, 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 32, 0, 0, 4,129, 0, 0, 0, 64, 0, 0, 4, 2, 1, 0, 8, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 32, 8, 0,180,255, -+ 16, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,134,253, -+ 2, 0,128, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8,128, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 64, 48,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 32, 0, 64, 0, 0, 0, 0, 0, 0, 0, 4, 0, 16, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,180,252, -+ 2,160, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 16,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 56,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0,152,253, -+ 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 32, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, -+ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 8, 0,136, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 32, 0, 1, 0, 0, 0, 0, 0, 16, 16, 2, 0, 0, 8, 8, 1, 0, 0, 0, 0, 4, 0, 32, 0, 0, 88,254, -+ 32, 1, 0, 0, 0,128, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 16, 0, 0, 0, 0, 4, 0, 0, 0, 0,113,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64,182,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 16, 0, 0, 0,228,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,116,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 48, 0, 0, 0,132,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 8, 0, 16, 0, 0, 0, 48,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 16, 0,192, 8, 0, 0, 64,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0,224, 32, 0, 0, 4,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,192, 0, 0, 0,208,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 18, 0,192, 0, 0, 0,196,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 18, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 66, 2, 0, 10,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,128, 6, 0, 20,254, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 4, 2,128,225,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 24,130, 28,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 32, 28, 0,129,253, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 24, 0, 63,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 36, 24, 0, 12,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 64, 0,208, 8, 0, 0,248,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,192, 64, 0, 0,176,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 64, 0, 0,188,255, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0,109,252, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,192, 68, 0, 0, 80,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 48, 0, 0, 0, 4,252, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,128, 0, 0,128,152,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 20, 0, 0, 8,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 34, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,164, 64, 0,208, 0, 10, 9, 96,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,192, 0, 16, 0,228,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0,192, 0, 14, 0, 68,253, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0,192, 36, 18, 0, 89,253, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,192, 68, 8, 0,220,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0,240, 0, 20, 0,112,252, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,192, 64, 8,128, 16,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 16, 0, 40,254, -+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 16, 0, 0, 0, 94,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 32, 0, 0, 12,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0,192, 64, 0, 0,204,255, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0,192, 2, 0,128,101,254, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0,128, 0,128,100,253, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 48, 0, 0, 0,229,255, -+ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 64, 64, 0, 0,139,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 28,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 16, 36, 0, 0,208,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 16, 0, 0, 0, 0, 0, 44,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0,192, 0, 0, 0,168,254, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0,192, 64, 0, 0, 41,253, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,192, 68, 0, 0,144,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0,176, 0, 0, 0, 0,253, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,192, 0, 0,128,220,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0,192, 20, 0, 0,128,254, -+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 5, 4, 0, 0, 16, 0, 2, 0,246,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0,180,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1, 48, 16, 0, 48, 0, 6, 0,144,252, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 48, 1, 0, 16, 0, 2,128, 93,254, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,192, 8, 24,130,156,255, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,224, 0, 60, 32, 0,224, 32, 28, 0, 68,255, -+ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 48, 8, 0,192, 0, 24,128,109,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 1, 0,192, 0, 24, 0,236,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 38, 0, 0, 0, 0, 0, 0, 0, 0, 32, 80, 4, 9, 0,208, 16, 74, 8, 20,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 44,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 48, 8, 0,128, 0, 14, 0,216,252, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0,144,128, 0, 0, 0, 36, 18, 0, 85,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,128,132,144, 16, 0, 0, 68, 8, 0, 40,252, -+ 0, 0, 0, 0, 0, 0, 0, 0,192, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1, 44, 0, 0,240, 0, 20, 0,252,255, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 16, 0, 0, 0, 64, 8,128,224,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0,128,129, 48, 18, 0, 0, 2, 16, 0,172,255, -+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,255, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 0,128, 0, 16, 0, 2, 0,116,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 44, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,132, 0, 16, 0, 2,128,105,253, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 2, 64,128, 72,252, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 18, 0, 2, 64, 0, 8, 0, 1, 0, 0, 0,144, 0, 0, 64, 0, 8, 12,253, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0,128, 85,255, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 32, 24, 0, 2, 64, 0, 8, 0, 1, 32, 16, 0,130, 0, 0, 4,129, 32,104,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 0, 2, 0, 0, 28,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 16, 0, 0, 0, 0, 0, 0,188,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,120,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,255, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 0, 16,202,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 88,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,228,255, -+ 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8,176,254, -+ 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 74, 66, 1, 64, 16,228,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 88,254, -+ 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 52,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,120,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 88,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,124,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,148,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 4, 0, 0, 0, 0, 0, 24,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 60,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 13,255, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,176, 0, 16, 0, 40,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 36,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 22,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8,254, -+ 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0,128, 1, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,192, 2, 0, 2, 0, 0, 16, 0, 0, 0, 0, 0, 0,160, 0,128, 4, 0, 36,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0,192, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 64, 0, 0,128, 0,128, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0,100, 66, 48, 8, 5,100,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 64, 32, 8, 4,224,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16, 0, 0, 88,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 88,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,255, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 64, 0, 2, 0,201,254, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 76,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 2, 1, 0, 0, 0, 0, 0, 0, 0,208, 16, 0, 0, 0, 0, 0, 0,160, 33, 0, 0, 0, 0, 0, 0, 0,208,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,224, 1, 0, 0, 0, 0, 0, 0, 0, 16,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,192, 34, 0, 0, 0, 0, 0, 0, 32, 72, 0, 0, 0, 0, 0, 0, 0, 60,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 92,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,196,129, 0, 0, 0, 0, 0, 0, 0, 0,240, 32, 0, 0, 0, 0, 0, 0,192, 65, 0, 0, 0, 0, 0, 0, 0,200,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0,148,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 11, 1, 0, 0, 0, 0, 0, 0, 0,192, 32, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 28,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,254, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 24,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,192, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,129,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,196, 0, 2, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,252, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138, 4, 35, 0, 0, 0, 0, 0, 0, 0, 0, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,128, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,252, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,253, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,128, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 80,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,252, -+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,108,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 1, 0, 0, 0, 0, 0, 0, 0,208,255, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 1, 0, 0, 0, 0, 0, 0, 0,109,252, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,128, 9, 0, 0, 0, 0, 0, 0, 0,208,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,192, 65, 0, 0, 0, 0, 0, 0, 0,104,252, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 8, 18, 0, 0, 0, 0, 0, 0, 0, 0,192, 4, 1, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 20,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,222,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,192,131, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,144,252, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 33,252, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0,136, 0, 0, 0, 0, 0, 0, 0, 0, 64, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,208,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 96,128, 0, 0, 0, 0, 0, 0, 0, 53,254, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0,129, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0,128,130, 0, 0, 0, 0, 0, 0,128, 81, 0, 0, 0, 0, 0, 0, 0,152,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,108,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,192, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,128, 65, 0, 0, 0, 0, 0, 0, 0,188,253, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,237,253, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 16,139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,224,129, 0, 0, 0, 0, 0, 0, 0, 4,255, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 52,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 8, 16, 1, 0, 0, 0, 0, 0, 0, 0,192,128, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 44,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 64, 18, 1, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,206,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0,192, 32, 0, 0, 0, 0, 0, 0,224, 1, 0, 0, 0, 0, 0, 0, 0, 52,255, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0,160, 41, 0, 0, 0, 0, 0, 0,128,209,255, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,128,152,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,192, 2, 2, 0, 0, 0, 0, 0, 0, 0, 48, 32, 0, 0, 0, 0, 0, 0,192, 65, 0, 0, 0, 0, 0, 0, 0,249,252, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,128, 65, 0, 0, 0, 0, 0, 0, 0,175,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 8,147, 0, 0, 0, 0, 0, 0, 0, 0,192, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 32, 32, 0, 0, 0, 0, 0, 0, 0, 68,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,192, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,252, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 64, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0,101,252, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 4,136, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,152,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 96, 64, 0, 0, 0, 0, 0, 0, 0, 84,255, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,128,120,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 8, 16, 0, 0, 0, 0, 0, 0, 0, 0,192, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 44,255, -+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,252, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 16, 0, 0, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 0, 20,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,254, -+ 44, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 16, 0, 0, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2,128, 92,252, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,128,181,254, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 0, 0, 4,128, 0, 16, 0, 2, 0,100,252, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,255, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 16, 0, 64, 0, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 0,132, 4,128, 0, 16, 0, 2, 0,124,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,104,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0, 0, 28,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,184,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 60,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,188,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 1, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 56,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,172,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 64,252,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 4,140, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,176, 0, 0, 0, 0, 0, 0, 0, 68,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 8, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 9, 0, 0, 16, 20, 0, 64, 0, 8, 0, 0, 0, 0, 0, 8,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 8, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 0, 64, 0, 4, 0, 0, 0, 0, 0,116,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 88,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 88,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,252,255, -+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,105,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 32, 0, 0,128, 34, 2, 0, 26, 0, 0, 0, 0, 0, 32, 8,148, 16, 0, 0, 0, 0, 16, 0, 26, 64, 96,104, 0,129, 36, 4, 20, 64, 0,144, 2, 0, 64, 16, 72, 68, 0, 0, 0, 0,128, 6, 80, 16, 0, 0,240,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0, 0, 64, 64, 0, 0,128, 32, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,184,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,128, 3, 0, 0, 24, 0, 0, 0, 0, 0,128, 0, 48, 0, 0, 0, 0, 0,192, 32, 0, 0, 2, 2, 0, 0,128, 65, 28, 0, 0,176, 0, 0, 0,131, 88, 0, 0, 0, 0, 0, 0, 0,112, 0, 0, 0,204,252, -+ 0, 0, 0, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 0, 80, 0,128, 4, 0, 0, 24, 16, 0, 0, 0, 0, 0, 80, 0, 64, 0, 0, 0, 0,192, 8, 88, 8, 0, 96, 32, 32, 8, 16, 36, 0, 0, 80, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 22,146, 0, 0, 0,216,255, -+ 0, 0, 0, 0, 0, 0, 0, 24, 9, 0, 0, 0, 0, 0, 16, 0, 0, 2, 0, 0, 88, 0, 0, 0, 0, 0, 0,136, 16, 4, 0, 0, 0, 0,192, 4, 24, 1, 16, 97, 36, 0,130, 0, 18, 0, 0,128, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0, 38, 66, 0, 0, 0,236,253, -+ 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 96, 0, 1, 0, 5, 0, 0, 6, 16, 0, 0, 0, 0, 96, 0, 44, 0, 0, 0, 0, 0,240, 32, 30,196, 0,120, 0, 3, 96, 1, 40, 0, 0,112, 0, 0,192, 2, 56, 0, 0, 0, 0, 0,128, 7,160, 0, 0, 0,216,252, -+ 0, 0, 0, 0, 0, 0, 0, 24, 8, 0, 0, 0, 0,128, 0, 0, 0, 2, 0, 0, 24, 0, 0, 0, 0, 0, 0, 64, 48, 0, 0, 0, 0, 0,192, 64, 24, 8, 0, 96, 0, 8,130, 0, 16, 0, 0,128, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 6, 64, 0, 0, 0,160,253, -+ 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0,128, 65, 0, 0, 4, 0, 0,152, 16, 0, 0, 0, 0,128, 17,176, 64, 0, 0, 0, 0,192, 8, 24, 1, 35, 97,128, 44,128,145, 36, 0, 0, 64, 0, 0, 0, 35, 33, 0, 0, 0, 0, 0, 0, 6,145, 0, 0, 0,236,252, -+ 0, 0, 0, 0, 0, 0, 0,154, 8, 0, 8, 0, 0,160, 4, 0,128, 6, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 4, 6, 0, 0, 0, 0,208, 0, 10, 17, 0,104, 4, 0, 0, 0, 36, 64, 0,144, 64, 0, 64, 0, 8, 0, 0, 0, 0, 0,128, 66, 8, 0, 0, 0,178,254, -+ 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 16, 0, 0, 96, 32, 0, 0, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,208,253, -+ 0, 0, 0, 0, 0, 0, 0, 24, 8, 0, 0, 0, 0,128,129, 0, 0, 6, 4, 0, 24, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0,192, 32, 14, 0, 0, 96, 16, 0, 0, 0, 44, 0, 0,176, 0, 0, 0,131, 96, 32, 0, 0, 0, 0,128, 3, 0, 0, 0, 0,232,252, -+ 8, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 8, 0, 0, 70, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 18, 0, 0, 96, 2, 0, 0, 0, 20, 0, 0, 80, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0,128,205,253, -+ 0, 0, 0, 0, 0, 0, 0,136, 32, 0, 96, 2, 0,128, 32, 0, 0, 6, 1, 0,136, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,192, 4, 8, 0, 0, 32, 36, 0, 0, 0, 32, 0, 0,128, 0, 0, 0, 16, 32,128, 0, 0, 0, 0, 0, 2, 0, 0, 0,128, 40,255, -+ 0, 0, 0, 0, 0, 0, 0, 14, 0, 0,120, 32, 0, 96, 1, 0,128, 1, 0, 0, 22, 4, 0, 0, 0, 0, 0, 0, 12, 32, 0, 0, 0, 0,240, 32, 20, 0, 0,120, 0, 0, 0, 0, 28, 0, 0,112, 0, 0,192, 3, 89, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 13,252, -+ 4, 0, 0, 0, 0, 0, 0, 24, 8, 0, 96, 0, 0,128,129, 0, 0, 6, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64, 8, 0, 0, 64, 0, 0, 0, 0, 32, 0, 0,128, 0, 0, 0,131, 32, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 75,254, -+ 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 96, 0, 0,128, 1, 0, 0, 22, 1, 0,152, 32, 0, 0, 0, 0, 0, 0, 48, 10, 0, 0, 0, 0,192, 8, 16, 0, 0, 96,128, 0, 0, 0, 16, 0, 0, 64, 0, 0, 0, 11, 96, 36, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,192,253, -+ 16, 0, 0, 0, 0, 0, 0,138, 0, 0, 0, 0, 0, 32, 48, 0,128, 66, 0, 0, 26, 1, 0, 0, 0, 0, 32, 8,148, 0, 0, 0, 0, 0,208, 0, 2, 0, 0, 72, 4, 0, 32, 17, 4, 0, 0,208, 0, 0, 0, 0, 72, 8,137,160, 0, 1,128, 22, 0, 0, 0, 0,104,252, -+ 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 24, 16, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0,192, 0, 24, 0, 0, 32, 64, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 4, 8, 1, 0, 0, 6, 2, 0, 0, 0,240,254, -+ 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0,128, 0, 1,128, 3, 0, 0, 24, 0, 0, 0, 0, 0, 0, 65, 48, 0, 0, 0, 0, 0, 0, 32, 24, 8, 0, 96, 0, 0, 96, 1, 48, 0, 0,192, 0, 0, 0, 0, 88, 0, 11,224, 0, 0, 0, 6, 0, 0, 0, 0, 0,255, -+ 12, 0, 0, 0, 0, 0, 0, 24, 17, 0, 0, 0, 0, 0, 8, 0,128, 4, 0, 0,152, 16, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,192, 8, 88, 0, 0, 96, 16, 0,160, 0, 48, 9, 0, 0, 40, 0, 0, 0, 40, 0, 5, 32, 1, 0, 0, 6, 1, 0, 0, 0, 65,253, -+ 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 72, 16, 0, 0, 0, 0, 0,136, 16, 16, 0, 0, 0, 0,192, 4, 24, 5, 0, 0, 32, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 64, 0, 8,128, 0, 0, 0, 38, 0, 0, 0, 0,252,253, -+ 0, 0, 0, 0, 0, 0, 0, 22, 8, 0, 0, 0, 0, 96,128, 0, 0, 5, 0, 0, 30, 0, 0, 0, 0, 0, 96, 0, 44, 0, 0, 0, 0, 0,240, 32, 30, 0, 0, 56, 0, 0,224, 0, 60, 16, 0,240, 0, 0, 0, 0, 56, 0, 7, 64, 1, 0,128, 7, 1, 0, 0, 0, 24,253, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 48, 32, 0, 0, 0, 0,192, 64, 24, 0, 0, 0, 0, 0, 0, 1, 48, 0, 0,192, 0, 0, 0, 0, 64, 0, 8,128, 0, 0, 0, 2, 2, 0, 0,128,124,254, -+ 0, 0, 0, 0, 0, 0, 0,152, 16, 0, 0, 0, 0,128, 73, 0, 0, 4, 0, 0, 88, 16, 0, 0, 0, 0,128, 5, 50, 1, 0, 0, 0, 0,192, 8,152, 4, 0, 96, 34, 0,128, 0, 48, 10, 0,192, 68, 0, 0, 0, 32, 0, 4, 0, 1, 0, 0, 66, 0, 0, 0, 0, 92,252, -+ 0, 0, 0, 0, 0, 0, 0,154, 8, 0, 0, 0, 0,160,133, 0,128, 38, 4, 0, 2, 0, 0, 0, 0, 0, 32, 4, 5, 18, 0, 0, 0, 0, 16, 0, 90, 0, 0,104, 4, 33, 36, 17, 52, 0, 0, 16, 0, 0, 64, 2, 40, 4, 41, 32, 1, 1,128, 34, 4, 0, 0, 0, 24,253, -+ 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0,128, 1, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 8, 0, 96, 32, 0,128, 0, 1, 0, 0, 0, 0, 0, 0, 1, 65, 64, 4,132, 0, 0, 0, 4, 0, 0, 0, 0, 64,254, -+ 0, 0, 0, 0, 0, 0, 0, 24, 8, 0, 0, 0, 0, 0, 1, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,192, 0, 24, 8, 0, 96, 16, 12, 96, 1, 48, 16, 0,192, 32, 0,192, 2, 56, 0, 11, 96, 1, 0,128, 3, 0, 0, 0, 0,156,255, -+ 8, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0,129, 0, 0, 20, 1, 0, 64, 0, 0, 0, 0, 0, 0, 32, 0, 66, 0, 0, 0, 0,192, 0, 24, 1, 0, 96, 2,136,176, 0, 0, 0, 0,192, 2, 0, 64, 1, 72, 0, 5,160, 0, 0,128, 4, 0, 0, 0,128, 73,252, -+ 0, 0, 0, 0, 0, 0, 0,152, 32, 0, 0, 0, 0,128, 9, 0, 0, 6, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0,128, 8, 0, 0, 0, 0,192, 16, 8, 5, 0, 96, 36, 4, 4, 1,128, 64, 0, 0, 4, 0, 0, 2, 32, 0, 8, 0, 1, 0, 0, 2, 0, 0, 0,128,100,255, -+ 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0,224, 1, 1,128, 7, 0, 0, 6, 0, 0, 0, 0, 0, 96, 0, 13, 0, 0, 0, 0, 0,240, 0, 14, 0, 0, 88, 0, 15,224, 0, 60, 0, 0,240, 64, 0,192, 1, 80, 0, 7,224, 0, 0, 0, 5, 0, 0, 0, 0,128,254, -+ 4, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0,128, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 8, 0, 0, 0, 0, 0, 0, 24, 0, 0, 96, 0, 4, 8, 1, 48, 0, 0,192, 32, 0, 0, 2, 32, 0, 8, 0, 1, 0, 0, 2, 0, 0, 0,128,181,255, -+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,128,133, 0, 0, 38, 1, 0, 24, 9, 0, 0, 0, 0,128, 17, 48, 2, 0, 0, 0, 0, 0, 64, 24, 4, 0, 32,128, 76,128, 0, 48, 8, 0,192, 8, 0, 0, 1, 72, 0, 4,160, 0, 0, 0, 4, 0, 0, 0, 0, 44,253, -+ 0, 0, 0, 0, 0, 0, 0,154, 8, 0, 0, 0, 0, 32, 5, 0,128, 64, 0, 0, 2, 17, 0, 0, 0, 0, 32,144,164, 16, 0, 0, 0, 0, 80, 64, 90, 0, 0, 40, 4,133,164, 16, 36, 33, 0,208, 0, 0, 64, 34, 41, 8, 13, 32, 5, 0,128, 22, 16, 0, 0, 0,220,253, -+ 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0,128, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,128, 0, 24, 8, 0, 96, 32, 0, 0,129, 16, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0,128,128, 0, 0, 6, 2, 0, 0, 0,228,255, -+ 0, 0, 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0,128,129, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 64, 48, 0, 0, 0, 0, 0,112, 0, 16, 8, 0, 64, 16, 12,224, 0, 44, 0, 0,192, 64, 0,192, 2, 56, 0, 12,100, 1, 0, 0, 6,192,128, 0, 0,240,252, -+ 8, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,128, 9, 0, 0, 32, 1, 0,136, 4, 0, 0, 0, 0, 0, 4, 48, 64, 0, 0, 0, 0,144, 0, 16, 1, 0, 96, 2, 32, 36, 1, 20, 0, 0, 0, 0, 0, 64, 1, 72, 0, 0,160, 0, 0, 0, 6, 1, 2, 0,128,177,252, -+ 0, 0, 0, 0, 0, 0, 0,152, 32, 0, 0, 0, 0, 0, 32, 0, 0, 22, 0, 0, 64, 16, 0, 0, 0, 0, 0, 9, 0, 4, 0, 0, 0, 0, 64, 0, 24, 5, 0, 96, 36,132,136, 0, 32, 0, 0, 0, 2, 1, 0, 2, 32, 0, 0, 16, 1, 0, 0, 34,192, 40, 0,128,156,252, -+ 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0,224, 0, 0,128, 7, 2, 0, 6, 0, 0, 0, 0, 0,224,129, 28, 0, 0, 0, 0, 0,160, 0, 30, 0, 0,120, 0, 11, 64, 1, 28, 0, 0,240, 0, 0,192, 1, 80, 0, 15,224, 0, 0,128, 3,241, 0, 0, 0, 80,253, -+ 4, 0, 0, 0, 0, 0, 0, 24, 8, 0, 0, 0, 0, 0,128, 0, 0, 2, 0, 0, 24, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 64, 0, 24, 0, 0, 96, 0, 12,128, 0, 32, 0, 0,192, 0, 0, 0, 2, 32, 0, 12, 0, 1, 0, 0, 6,194, 0, 0,128,121,254, -+ 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0,128, 1, 0, 0, 6, 2, 0, 24, 33, 0, 0, 0, 0,128, 9,178, 64, 0, 0, 0, 0,144, 0, 24, 4, 0, 96,128, 44, 40, 1, 16, 0, 0,192, 32, 0, 0, 1, 72, 0, 44,162, 0, 0, 0, 70,192, 72, 0, 0, 40,255, -+ 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0,160,133, 0,128, 38, 4, 0, 26, 1, 0, 0, 0, 0,160, 1,164, 0, 0, 0, 0, 0,208, 24, 90, 0, 0, 40, 4, 41, 36, 0, 52, 0, 0, 80, 64, 0, 64, 16, 8, 20, 13, 32, 72, 36,160, 6,144, 16, 0, 0,134,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,128, 1, 0, 0, 6, 0, 0, 24, 16, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 0, 0, 64, 0, 24, 8, 0, 0, 64, 4, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, 0, 0, 64, 0, 0, 0,132,254, -+ 0, 0, 0, 0, 0, 0, 0, 24, 8, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 24, 0, 0, 0, 0, 0, 0,128, 48, 0, 0, 0, 0, 0,192, 32, 24, 8, 0, 96, 0, 12,128, 65, 48, 16, 0,112, 0, 0, 0,129, 96, 0, 12,132, 65, 44, 0, 6,176, 0, 0, 0,132,255, -+ 8, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0,128,129, 0, 0, 22, 1, 0,152, 16, 0, 0, 0, 0,128, 5, 48, 65, 0, 0, 0, 0,192, 8, 24, 1, 0, 0, 16, 76, 16, 8, 0, 0, 0,144, 0, 0, 0, 34, 0, 20, 0, 0, 0, 20, 0, 32, 84, 0, 0,128,149,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 9, 0, 0, 6, 1, 0, 88, 16, 0, 0, 0, 0,128, 5, 0, 16, 0, 0, 0, 0,192, 4, 24, 5, 0, 32, 32, 0,129, 81,128, 64, 0, 64, 0, 0, 0, 0, 36,128, 0,144, 0, 34, 0, 32,128, 0, 0,128,168,255, -+ 0, 0, 0, 0, 0, 0, 0, 22, 16, 0, 0, 0, 0,224, 1, 1,128, 7, 0, 0, 22, 0, 0, 0, 0, 0,224,129, 28, 0, 0, 0, 0, 0,240, 32, 30, 0, 0, 88, 0, 7,224, 1, 60, 0, 0,160, 0, 0,192, 3, 88, 0, 15, 96, 1, 28,128, 7,114, 0, 0, 0,252,253, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 6, 0, 0, 24, 0, 0, 0, 0, 0,128, 1, 0, 32, 0, 0, 0, 0,192, 64, 8, 0, 0, 96, 0, 0,128, 1, 48, 8, 0, 64, 0, 0, 0, 1, 32, 0, 12,128, 0, 32, 0, 6,128, 0, 0,128, 17,254, -+ 0, 0, 0, 0, 0, 0, 0, 24, 33, 0, 0, 0, 0,128,132, 0, 0, 34, 1, 0, 72, 16, 0, 0, 0, 0,128,137, 48, 1, 0, 0, 0, 0,192, 8, 8, 4, 0, 96, 34,140,144,145, 48, 2, 0,144, 0, 0, 0, 83, 96, 36,140,130,145, 20, 0, 70, 65, 0, 0, 0,204,253, -+ 16, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 32, 0, 0,128, 34, 4, 0, 10, 1, 0, 8, 0, 0,160, 5, 5, 18, 0, 0, 0, 0,144, 64, 10, 1, 0,104, 0, 65,162, 8, 20, 33, 0,208, 0, 2, 67, 1, 72, 4, 37,160, 4, 20,160, 0,208, 0, 2, 3, 36,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 24, 16, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 64, 0, 16, 16, 0, 96, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2, 33, 64, 8, 4,129, 32, 0, 6, 0, 0, 0, 0, 68,252, -+ 0, 0, 0, 0, 0, 0, 0, 8, 16, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 16, 0, 0, 0, 0, 0,128, 0, 1, 0, 0, 0, 0, 0,176, 0, 14, 0, 0, 96, 16, 0,128, 0, 28, 0, 0,192, 64, 8,200, 1, 88, 0, 7,224, 0, 28, 0, 6,192, 32, 16, 8,220,252, -+ 12, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 80, 0, 0, 22, 1, 0,152, 16, 0, 0, 0, 0, 0, 1, 0, 66, 0, 0, 0, 0, 80, 0, 18, 0, 0, 0, 2,128, 2, 40, 36, 0, 0, 0, 0, 0, 64, 2, 40, 0, 9, 32, 1, 36, 0, 6, 4, 4, 0,129,233,255, -+ 4, 0, 0, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 0, 4, 1, 0, 6, 1, 0, 88, 16, 0, 96, 1, 0, 0, 16,128, 0, 0, 0, 0, 0,128, 0, 8, 0, 0, 96, 0, 64, 4, 0, 18, 0, 0, 0, 2, 65, 0, 1, 64, 0, 4,128, 0, 16, 0, 38, 0, 64, 0,128, 16,255, -+ 0, 0, 0, 0, 0, 0, 0, 30, 8, 0, 0, 0, 0, 96, 0, 0,128, 3, 0, 0, 30, 0, 0,120, 64, 0,224,129, 12, 8, 0, 0, 0, 0,112, 0, 20, 0, 0,120, 16, 3, 96, 1, 40, 0, 0,240, 0, 6,144, 2, 56, 0, 10, 64, 1, 40,128, 7,241, 0, 6, 16, 64,253, -+ 12, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 65, 0, 0, 6, 0, 0, 24, 0, 0, 96, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,128, 0, 8, 0, 0, 96, 32, 0,128, 1, 16, 0, 0,192, 0, 0, 8, 1, 64, 0, 4,128, 0, 16, 0, 6,192, 0, 0,136,113,254, -+ 0, 0, 0, 0, 0, 0, 0,144, 16, 0, 0, 0, 0,128, 17, 0, 0, 38, 1, 0, 88, 16, 0, 96, 0, 0, 0, 9, 49, 9, 0, 0, 0, 0, 64, 0, 16, 0, 0, 96, 2, 72,132, 81, 36, 0, 0,192, 36, 88, 64, 2, 32, 0, 9, 0, 1, 32, 0, 38,193, 68, 24, 0,120,255, -+ 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0,160,133, 0,128, 2, 4, 0, 26, 0, 0, 0, 0, 0,160, 16, 53, 33, 0, 0, 0, 0, 16, 40, 26, 0, 0, 40, 1, 41,160, 16, 4,128, 18, 20, 0, 0, 64, 33, 9, 1, 13, 32, 8,132,136, 22, 16, 0, 0, 0,252,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,128, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 4, 4, 1, 1, 0, 4, 0, 0, 0, 0, 2, 0, 16, 0, 0, 64, 0, 0, 6, 2, 32, 0, 0,136,252, -+ 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0,128, 1, 0,128, 3, 0, 0, 24, 0, 0, 0, 0, 0,128,129, 16, 16, 0, 0, 0, 0,192, 32, 24, 0, 0, 56, 0, 12,232, 0, 48,136, 3,192,128, 0,192, 1, 96, 16, 12,130, 1, 48, 8, 4, 64, 32, 0, 0,228,255, -+ 12, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0,128,129, 0,128, 4, 0, 0,152, 32, 0, 0, 0, 0, 0, 8, 32, 2, 0, 0, 0, 0, 0, 8, 0, 8, 0, 72, 0, 76, 32, 1, 48,128, 4, 0, 2, 0, 64, 2, 0, 4, 32, 0, 68, 0, 0, 4,129, 2, 0, 0, 93,255, -+ 4, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0,128, 8, 0, 0, 2, 0, 0, 24, 16, 0, 0, 0, 0,128, 32, 0, 1, 0, 0, 0, 0, 64, 0,129, 0, 0, 32, 0, 0,132, 0, 0, 1, 2,192, 2, 0, 0, 1, 32,128, 64,128, 0, 18, 64, 38, 0, 0, 1, 0, 24,254, -+ 0, 0, 0, 0, 0, 0, 0, 22, 8, 0, 0, 0, 0,224, 0, 1, 0, 5, 0, 0, 30, 0, 0, 0, 0, 0, 96, 1, 60, 32, 0, 0, 0, 0,176, 0, 30, 8, 0, 80, 0, 7, 64, 1, 60, 16, 5,240, 32, 0,128, 2, 88, 0, 15,100, 1, 44,128, 7,241, 0, 0, 0, 36,253, -+ 12, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0,128, 1, 0, 0, 2, 0, 0, 24, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 64, 0, 24, 4, 0, 32, 0, 0,136, 0, 48, 8, 2,192, 64, 0, 0, 1, 32, 0, 12,130, 0, 16, 0, 6, 66, 0, 0,128, 8,255, -+ 0, 0, 0, 0, 0, 0, 0,152, 16, 0, 0, 0, 0,128,133, 0, 0, 4, 0, 0, 24, 5, 0, 0, 0, 0,128,129, 32, 16, 0, 0, 0, 0,192, 72, 24, 0, 0, 64, 0, 12, 32, 1,176, 0, 4,192, 8, 0, 64, 2, 96, 36, 12,128,145, 48, 18, 70,192, 64, 0, 0, 52,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,252, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 8, 0, 1, 0, 0, 0,128, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 2, 0, 12,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 76,254, -+ 44, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 16, 2, 2, 64, 0, 8, 0, 1, 32, 32, 4,132, 0, 16, 2, 2, 64, 64, 8, 8, 1, 33, 16, 4,130, 0, 16, 16, 2,128,209,253, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 8, 0, 0, 1, 0, 0,128, 0, 16, 0, 2, 24, 0, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 0,128,176,255, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 0, 64, 0, 64, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 32, 0, 8, 0, 1, 16, 0, 4, 64, 2, 0, 88,253, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 0, 0, 0, 2, 64, 0, 8, 0, 0, 0, 0, 0,128, 0, 0,227,254, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0,128, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 0, 8, 0, 66, 0, 0, 8, 1, 0, 16, 0, 32,128, 0, 8, 2, 0, 32, 0, 4,128, 0, 32, 0, 4,128, 0, 8, 2, 0,116,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 2, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 16, 0, 0, 0, 0, 0, 0, 1, 32, 0, 0,128, 0, 0, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 1, 0, 0,152,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 44,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,128,116,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 1, 0, 0, 2, 64, 0, 8, 4, 1, 32, 0, 0,128, 0, 0,184,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,188,254, -+ 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 8, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,252,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 32, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 92,253, -+ 0, 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 8, 4, 0, 32, 0, 0, 2, 0, 0, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0,128, 32, 8, 0, 2, 0, 32, 0, 0,232,252, -+ 0, 0, 0, 0, 0, 0,128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 2, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,192, 2, 16, 80, 8, 0, 0, 72,128, 16,160, 0, 4, 0, 0, 0, 80, 16, 10, 0, 32, 0, 5,128, 0, 0,128, 0, 8,248,253, -+ 0, 0, 0, 0, 0, 64, 0, 8, 0, 0, 0, 16, 0, 1, 32, 0, 18, 2,128, 0, 0, 0, 16, 0, 0, 0, 0,145, 84, 18, 0, 0, 0, 0, 0, 0,152, 4, 6, 64, 0, 0, 0, 0, 48, 0, 0,128, 0, 16, 0, 38, 1, 2, 0, 2, 64, 16, 0,130, 4, 16, 0, 0, 76,254, -+ 0, 0, 0, 0, 0,128, 0, 8, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 33, 0, 4, 0, 0, 0, 0, 92,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 1, 64, 0, 0, 0, 0, 32, 0, 0,128, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 16, 0, 0,220,252, -+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 8, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 44,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 44,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 56,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 64, 4, 0, 0, 0, 0, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 14,253, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 16, 0, 0, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 16, 0, 0,164,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0,180,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 16,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 0, 0, 0, 64, 2, 8, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,156,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 16, 0, 32, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180,252, -+ 8, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,128, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,252, -+ 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 16, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 64, 0, 0, 2, 64, 32, 0, 0,145, 1, 0, 0, 70,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,252, -+ 0, 0, 0, 0, 0, 0, 16, 0, 4, 0, 8, 0, 0, 0, 0, 8, 16, 2, 1, 0, 8, 2, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 2, 0, 0, 0, 0, 0, 0, 16, 0, 0, 64, 0, 0, 0, 0, 64, 0, 8,128, 0, 17, 0, 0, 1, 16, 0, 0,134,253, -+ 76, 0, 0, 0, 1, 0, 0, 8, 2, 0, 0, 0, 0,132, 0, 0, 16, 0,128, 0, 0, 0, 64, 0, 0, 0,128, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 32, 16, 0, 0, 64, 8, 0, 1, 0, 0, 0, 0, 1, 0, 16, 4, 2, 0, 0, 0,130, 0, 0, 0, 64, 38,253, -+ 32, 0, 0,128, 0, 0, 64, 2, 24, 0, 16, 0, 0, 40, 0, 8, 48, 1, 18, 0, 4, 8, 0, 18, 0, 0, 32, 0, 4, 0, 0, 0, 0, 0, 32, 0, 8, 24, 0, 8, 64, 40, 0, 0, 13,128, 0, 32, 0, 8, 64, 0, 16, 64, 3, 72,128, 8,128, 0,134, 66, 0, 0, 68,253, -+ 0, 0, 32, 0, 0,128, 0, 8, 2, 1, 0, 0, 4, 0, 33, 0,128, 0, 1, 0, 20, 4, 5, 0, 0,128,130, 0, 0, 0, 0, 0, 0, 0,192, 32, 72, 2, 0, 16, 8,136,132, 1, 36,136, 4, 32, 32, 8, 0, 2, 80, 32,134,200, 0, 24, 0, 4, 68, 18, 44, 0, 12,254, -+ 0, 0, 0, 0, 0, 0, 0, 8,128, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 0, 0, 4, 1, 0, 0, 0,130, 0, 0, 0, 0, 0, 0, 0, 32, 32, 8, 0, 0, 0, 0, 0, 64, 0, 0, 16, 0, 0, 32, 16, 0, 0, 0, 0, 2, 64, 0, 8, 0, 0, 32, 0, 4, 0,132,254, -+ 0, 0, 8, 0, 0, 32, 0, 0, 4, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 4, 0, 0, 16, 2,128, 0, 32, 0, 2, 0, 0, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 2, 0, 16, 0, 0,112,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 28,254, -+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0,196,255, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,236,255, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0,192,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,244,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,253, -+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 8, 0, 0, 0, 64, 0, 0, 0, 8, 0, 0, 32, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0,213,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 2, 0, 0, 8, 32, 0, 32, 0, 4,128, 0, 64, 0, 0, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 18, 0, 0, 0,104,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,254, -+ 32, 0, 4,128, 16, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 73, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212,253, -+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,254, -+ 0, 0, 12, 0, 0, 2, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 11, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,252, -+ 0, 0, 4, 0, 64, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,252, -+128, 17,176, 0, 32, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,152, 0, 0, 0, 0, 8,128, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,253, -+224,129, 56,136, 1, 0, 0, 0, 0, 0, 16, 32, 0, 0, 0, 0, 0, 0, 0, 0, 30, 8, 0, 0, 0, 6,192,129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,252, -+128, 1, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 8, 0, 0, 0, 8,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,255, -+128, 1, 48, 0, 68, 2, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,152, 0, 0, 0, 0, 4,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,252, -+ 0, 0,180,160, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 8, 0, 0, 0, 9, 40, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,255, -+ 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,128, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, -+ 0, 0, 48,128, 1, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,253, -+ 8, 0, 48,162, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2, 0, 0, 0, 5,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,193,253, -+ 0, 0,128, 0, 70, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,200,252, -+ 0, 0, 12, 16, 7, 0, 0, 0, 0, 0, 16, 32, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 6,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,254, -+ 4, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 81,253, -+ 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 80, 8, 0, 0, 0, 4,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,253, -+ 16, 0, 4,128, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 13, 32,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,254, -+ 0, 0, 48, 0, 6, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,254, -+ 12, 0, 48, 0, 6, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 13,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33,253, -+ 4, 0,128, 0, 70, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,252, -+ 0, 0, 12,144, 7, 0, 0, 0, 0, 0, 16, 32, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 14,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,254, -+ 24, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,156,252, -+ 0, 0, 0, 10, 6, 1, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0,152, 0, 0, 0, 0, 12,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,253, -+ 0, 0, 4,128, 0, 0, 0, 0, 0, 0, 8, 66, 0, 0, 0, 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 41, 40, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 4,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,254, -+ 0, 0, 60, 0, 6, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 11, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,255, -+ 8, 0, 52, 0, 0, 1, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 0, 0, 0, 72, 8, 0, 0, 0, 5,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 17,255, -+ 0, 0,128, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 80, 8, 0, 0, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 48,252, -+ 0, 0, 8,144, 1, 0, 0, 0, 0, 0, 24, 32, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 6,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,253, -+ 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215,252, -+ 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 4,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,254, -+ 16, 0, 52,128, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,252, -+ 0, 0, 48, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,254, -+ 0, 0, 0, 0, 2, 4, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,254, -+ 12, 0, 0, 0, 22, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4,254, -+ 4, 0,176, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 0, 32,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,113,253, -+ 0, 0, 60,144, 1, 2, 0, 0, 0, 0, 16, 32, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 3,196, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, -+ 12, 0, 48, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193,253, -+ 0, 0, 48, 9, 22, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,161, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,255, -+ 0, 0, 20,130, 64, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 2, 0, 0, 0, 9,160, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,168,252, -+ 0, 0, 32, 32, 0, 4, 0, 0, 0, 0, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 4,132, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 20,255, -+ 0, 0, 48, 32, 2, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,160,253, -+ 8, 0, 48, 0, 70, 4, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 0, 0, 0, 80, 8, 0, 0, 0, 5, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26,128, 24,252, -+ 0, 0,128, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 88, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,132,237,255, -+ 0, 0, 44,136, 1, 2, 0, 0, 0, 0, 24, 32, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 6,224, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 52,252, -+ 4, 0, 0, 8, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 8, 0, 0, 0, 8, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,254, -+ 0, 0, 48, 2, 22, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0,152, 0, 0, 0, 0, 4, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,140,253, -+ 16, 0, 52,146, 6, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 0, 0, 0, 2, 66, 0, 8, 0, 41,164, 16, 52, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 0, 0, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 18,254, -+ 0, 0, 48, 0, 6, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 4, 0, 64, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,144,253, -+ 0, 0, 48,128, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,128, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0,192, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0,228,253, -+ 12, 0, 48,136, 6, 0, 0, 0, 0, 0, 96, 18, 0, 0, 0, 0, 0, 0, 0, 0, 80, 8, 0, 0, 0, 5,128,133, 52, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,128, 5,253, -+ 4, 0, 16, 9, 64, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 22, 2, 0, 72, 8, 3, 97, 66, 8,128, 9, 1, 10, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0,128,133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 10, 0, 0, 0, 0,128,124,254, -+ 0, 0, 60, 0, 1, 1, 0, 0, 0, 0, 24, 32, 0, 0, 0, 0,128, 7, 0, 0, 6,192, 3,120, 0, 6, 96, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0,224, 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0,240,253, -+ 12, 0, 48, 16, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 6, 0, 0, 24, 8, 3, 96, 0, 8,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117,254, -+ 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, 96, 20, 0, 0, 0, 0, 0, 6, 0, 0,152, 0, 3, 96, 0, 4, 0, 73, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,172,255, -+ 16, 0, 4,128, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 52, 0, 0,208, 16,130, 16, 0, 0, 0,137, 36, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 52, 0, 0, 0, 0, 26, 0, 84,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 24, 0, 0, 0, 0, 4, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 48, 0, 0, 0, 0, 24, 0, 44,254, -+ 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 32, 0,192, 0, 24, 0, 0, 0, 0, 11, 96, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0,192, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 60, 0, 0, 0, 0, 30, 0, 72,254, -+ 12, 0, 52, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0,176, 0, 0, 64, 66,152, 2, 0, 0, 0, 5, 32, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 52, 0, 0, 0, 0, 26, 0, 29,252, -+ 4, 0,128, 0, 32, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 48, 1, 0,128, 66, 16, 8, 0, 0, 0, 8,128, 73, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 8, 0, 0, 0, 0, 4, 48,255, -+ 0, 0, 8,144, 1, 2, 0, 0, 0, 0, 16, 32, 0, 0, 0, 60, 16, 0,240, 0, 6, 0, 0, 0, 0, 6,192, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 12, 0, 0, 0, 0, 6, 0, 44,252, -+ 12, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 16, 0, 0, 0, 48, 0, 0, 0, 64, 16, 0, 0, 0, 0, 8,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 32,252, -+ 0, 0, 0, 9, 6, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 48, 16, 0, 0, 4, 72, 8, 0, 0, 0, 4,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,224,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150,252, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 16, 0, 2, 0, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 0, 0, 1, 32, 0, 0,128, 0, 16, 0, 0, 0, 56,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 8, 0, 0, 0, 0, 4,228,255, -+ 40, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 0,136, 4, 1, 0, 0, 0, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0,130,128, 13,254, -+ 0, 0, 0, 6,192, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 2,132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 80,254, -+ 32, 0, 4, 0, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 2, 0, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 0, 0, 1, 32, 0, 0,128, 0, 16, 0, 0, 0,128,253, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 75,252, -+ 32, 0, 0, 17, 16, 24, 0, 2, 64, 0, 0, 1, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 0, 16, 0, 6, 4, 0, 0, 0, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 33, 1, 32, 0,132,144, 0, 16, 0,130, 0,140,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,255, -+ 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180,255, -+ 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 4, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 60,252, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,254, -+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,254, -+ 0, 0, 0, 0, 21, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0,136, 2,129, 0, 0, 40, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 8, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,255, -+ 0, 1, 80,128, 2, 16, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 24, 32, 0, 4,130, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,128, 0, 16, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,252, -+ 0, 0, 16, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 4, 2, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,253, -+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0,128, 0, 16, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,254, -+ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 36,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 44,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 4,136, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,254, -+ 0, 0, 32, 0, 12, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,252, -+ 12, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 8, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,128, 0, 0, 0, 0, 1, 0, 0, 4,130, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,253, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 29,254, -+ 0, 0, 8, 0, 21, 0, 0, 0, 3, 0, 8, 64, 0, 4, 0, 0, 0, 0, 2, 0,128,130, 80, 0, 0, 2, 68,128, 24, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,255, -+ 0, 0, 16, 8, 1, 1, 0, 0, 0, 0, 96, 8, 0, 0, 0, 8,128, 10,128,136, 2, 0,112, 0, 20,140, 66, 65, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 32, 0, 0, 0, 0, 16, 0, 0, 0, 24, 0, 0,172,254, -+ 0, 0, 16, 8,128, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 16, 2, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 32, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 52,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 16, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,128, 0, 0, 4,128, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,196,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,255, -+ 8, 0, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0,165,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180,254, -+ 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,210,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 4,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,255, -+ 0, 0, 8, 0, 2, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,124,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 26, 0, 0, 40, 1, 0, 0, 0, 52, 2, 0, 16, 64, 0, 64, 0, 0, 0, 0, 0, 0, 4,128, 0, 0, 0, 0, 0,216,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 0, 8, 0,128, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 32, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 48,144, 7, 0, 0, 0, 0,132,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 4, 0, 64, 16, 0, 0, 0, 4, 9, 0, 0, 66, 0, 0, 19, 0, 0, 0, 0, 0, 48,129, 22, 2, 0, 0, 0, 76,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 4,128, 0, 0, 32, 18, 0, 0, 0, 0, 1, 0,192, 8, 0, 0, 3, 4, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0,140,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 30, 4, 0, 88, 0, 0, 0, 0, 56, 8, 0,240, 32, 0,192, 3, 0, 0, 0, 0, 0, 60, 32, 7, 1, 0, 0, 0,100,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 24, 4, 0, 32, 16, 0, 0, 0, 16, 0, 0,192,128, 0, 0, 3, 0, 0, 0, 0, 0, 48, 0, 6, 0, 0, 0, 0,136,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 1, 0, 32, 2, 0, 0, 0,144, 8, 0,192, 8, 0, 0, 35, 4, 0, 0, 0, 0, 48, 34, 32, 1, 0, 0, 0,220,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 40, 4, 0, 0, 0, 4, 0, 0,208, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 34,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 16, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0,100,254, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 2, 0, 0, 0, 0, 0, 0,192, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 6, 0, 0, 0,128, 41,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 0, 0, 32, 64, 0, 0, 0, 0, 9, 0,192, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,128, 36,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 4, 0, 80, 0, 0, 0, 0, 12, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 56,254, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 32, 16, 0, 0, 0, 48, 8, 0,192, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 77,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32, 1, 0, 0, 0, 48, 0, 0,192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 16,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 8, 0, 40, 1, 0, 0, 0, 52, 10, 0, 16, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0,128, 22, 0, 0, 0, 0, 32,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,120,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 56, 0, 0, 0, 0, 60, 0, 0,192, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 88,252, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 72, 16, 0, 0, 0,132, 8, 0,192, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,128, 16, 1, 0, 0, 0,169,254, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 32, 2, 0, 0, 0, 0, 9, 0,192, 66, 0, 0, 11, 4, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0,152,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 80, 16, 0, 0, 0, 56, 0, 0,240, 0, 0,192, 3, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 68,253, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 32, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,128,164,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 5, 0, 32, 2, 0, 0, 0, 16, 10, 0, 0, 68, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 34, 1, 0, 0, 0,140,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 0, 4, 2, 0,208, 0, 0, 64, 0, 4, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 70,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0,192, 64, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 8, 0, 0, 0, 0, 0, 0, 60, 0, 0,192, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 96,252, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 52, 4, 0, 64, 8, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,128,173,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 17, 0, 0, 0, 16, 9, 0,192, 66, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,128,160,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 24, 0, 0, 0, 0, 56, 0, 0,240, 0, 0,192, 3, 1, 0, 0, 0, 0, 0,128, 7, 2, 0, 0, 0, 33,253, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 96, 64, 0, 0, 0, 32, 0, 0, 64, 32, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 96, 2, 0, 0, 0, 0, 10, 0,192, 2, 0, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,218,253, -+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 0, 4, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 16, 0, 0, 0, 0, 88,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,108,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,252, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 0, 0, 0,109,255, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 0, 0, 33, 0, 0, 0, 48, 9, 0,128, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0,252,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 24, 0, 0, 0, 0, 56, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 2, 0, 0, 0,132,252, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 96, 16, 0, 0, 0, 0, 8, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 40,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 52,254, -+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 0, 4, 0, 0,208, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0,128, 18, 0, 0, 0, 0, 96,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 88,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,196,255, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 4, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 36, 1, 0, 0, 0,189,254, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 96, 17, 0, 0, 0, 0, 16, 0, 0, 66, 0, 0, 11, 1, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0,112,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 0,112, 0, 0, 0, 0, 12, 0, 0,240, 0, 0,192, 3, 0, 0, 0, 0, 0, 0,128, 5, 2, 0, 0, 0, 52,255, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 64, 0, 0, 0, 48, 8, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,128,140,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 1, 0, 0, 2, 0, 0, 0, 48, 1, 0, 0, 68, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0,252,253, -+ 16, 0, 0, 0, 0,208, 0, 0, 0, 0, 0, 0, 0,160, 1, 0, 0, 0, 0, 0, 0, 64, 3,104, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 40, 4, 0,160, 1, 4, 0, 0, 16, 8, 0, 64, 2, 4, 0, 0, 0, 0, 0,128, 6, 0, 0, 2, 0,210,252, -+ 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 3, 96, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 64, 16, 0,128, 1, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212,255, -+ 0, 0, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,224, 1, 0, 0, 0, 0, 0, 0,192, 3,120, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 16, 0,224, 1, 48, 0, 0, 48, 0, 0, 0,130, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 24, 8,164,254, -+ 12, 0, 0, 0, 0,208, 0, 0, 0, 0, 0, 0, 0,160, 1, 0, 0, 0, 0, 0, 0, 64, 3,104, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 64, 2, 0,160, 1, 48, 0, 0, 16, 66, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 32, 1, 0,152,128, 33,254, -+ 4, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0,160, 0, 20, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 88, 0, 0, 32, 33, 0,128, 1, 48, 6, 0, 0, 8, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,130,144,255, -+ 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0,192, 0, 24, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 30, 8, 0, 88, 0, 0,192, 1, 60, 0, 0,160, 64, 0,192, 3, 0, 0, 0, 0, 0, 0,128, 7, 2, 0, 30, 0, 65,253, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 32, 16, 0,128, 1, 48, 0, 0,192, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 24, 16, 53,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 16, 0, 32, 1, 0,160, 1, 48, 32, 0,192, 36, 0, 0, 11, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 0, 70,255, -+ 32, 0, 0, 0, 0,208, 0, 0, 0, 0, 0, 0, 0,160, 1, 0, 0, 0, 0, 0, 0, 64, 3,104, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 2, 72, 0,104, 0, 0,160, 1, 52, 0, 0,144, 2, 0, 64, 0, 4, 0, 0, 0, 0, 0,128, 16, 0, 0, 0, 0,132,255, -+ 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 3, 96, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 48, 8, 0, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 16,252, -+ 0, 0, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,224, 1, 0, 0, 0, 0, 0, 0,192, 3,120, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,120, 16, 0,224, 1, 48, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,252, -+ 8, 0, 0, 0, 0,208, 0, 0, 0, 0, 0, 0, 0,160, 1, 0, 0, 0, 0, 0, 0, 64, 3,104, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 64, 4, 3, 8, 2, 0,160, 1,176, 8, 0,192, 4, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0, 0, 0, 53,254, -+128, 33, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,128, 0, 16, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,128, 4, 19, 0, 17, 0,128, 1, 48, 1, 0,128, 68, 0, 0, 17, 2, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0,148,254, -+224, 1, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0,192, 0, 24, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 6,192, 3,113, 0, 0,192, 1, 44, 8, 0,112, 0, 0,192, 3, 0, 0, 0, 0, 0, 0,128, 1, 1, 0, 0, 0, 52,254, -+132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 96, 64, 0,128, 1, 48, 8, 0,128, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 88,252, -+128, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 16, 5, 3, 1, 2, 0,128, 1, 48, 2, 0, 64, 40, 0, 0,138, 0, 0, 0, 0, 0, 0, 0, 36, 1, 0, 0, 0,108,253, -+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,253, -+ 32, 0, 4,128, 0, 0, 0, 2, 64, 0, 8, 0, 1, 0, 0, 4,128, 0, 16, 0, 2, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 0,204,253, -+ 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,128, 0, 16, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,253, -+ 44, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 16, 8, 0, 1, 32, 0, 4, 0, 0, 0, 0, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32,136, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2,128,245,253, -+ 4, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, 0, 0,136,128, 8, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128, 92,253, -+ 32, 0, 4,128, 0, 0, 0, 2, 64, 0, 8, 0, 1, 0, 0, 4,128, 0, 16, 0, 2, 0, 0, 0, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 64, 0, 0, 0, 1, 0, 0, 0,128, 0, 0, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 0, 16, 0, 2, 0,169,255, -+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 64, 0, 0, 0, 0, 32, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,177,255, -+ 32, 0, 4,128, 0, 16, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4,128, 0, 16, 0, 2, 64, 16, 8, 33, 1, 32, 0, 4, 5, 0, 0, 0, 0, 16, 0, 0, 65, 0, 0, 4, 1, 0,136, 0,130, 0, 0, 0, 2, 64, 0, 8, 0, 1, 32, 0, 4, 0, 64, 16, 0, 2, 0,158,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,150,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,252, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 32, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 12,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 4,255, -+ 0, 0, 32, 0, 4, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 64, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0,180,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 2, 0, 0, 0, 0, 52,254, -+ 0, 0, 32, 0, 4, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 4, 0,248,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,120,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 45,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0,188,255, -+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,255, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 80,254, -+ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0,164,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 32,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 1, 16, 0, 0,128, 0, 0, 0, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,128,152,253, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 64, 73,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,136, 0, 16, 0, 0, 64, 0, 16, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,128, 0,130, 2, 0, 0, 32,255, -+128, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 4,128, 64, 0, 0, 0, 0, 0, 16, 0, 0, 32, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 0, 8, 66, 8, 32, 8, 0, 0, 1, 32, 0, 16, 64, 0, 0, 7, 1, 0, 20, 0, 0, 0, 80, 8, 2, 65, 2, 0, 0,176,253, -+128, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 2,128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 8, 1, 0, 16, 0, 0, 0, 16, 4, 1, 33, 0, 0, 0, 8,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 4, 0, 0, 16, 0,128, 0, 8, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 88,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 16, 0, 64, 1, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,252, -+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 8,253, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,105,255, -+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 6, 0, 8, 8, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 92,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,254, -+ 0, 4,129, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 2, 0, 32, 66, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0, 32, 1, 36,128, 0,144, 0, 16, 17, 0, 72, 0,132,255, -+ 0, 0, 0, 32, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,128, 0, 0, 64, 0, 64, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 24, 0, 2, 0, 0, 2, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 64, 0, 8, 0, 1, 32, 0, 20,128, 2, 16, 0,196,252, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 0,164,255, -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 2, 64, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 8, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 16, 0, 2, 64, 0, 0, 0, 0, 32, 0,172,253, -+ 0, 23,224, 2,188,128, 11, 80, 1, 42, 64, 5,168, 0, 45,160, 2, 92,128, 10, 80, 1, 46, 64, 5,168, 0, 21,224, 2, 0, 0, 0, 0,128, 10, 80, 1, 42, 64, 5,104, 1, 21,224, 2, 84,128, 10, 80, 1, 42, 64, 5,104, 1, 21,160, 5, 84,128, 10, 80, 1,100,253, -+192, 8, 20, 1,131, 85, 4,136, 0, 17,104, 2, 77,128, 96,145, 1, 34, 64, 6,200, 0, 17, 32, 3, 77,128, 8,144, 1, 0, 0, 0, 0,208, 4,200, 0, 25,120, 2, 77,162, 9,144, 1, 39,208, 4,156, 0, 17, 40, 3, 37,162, 12,148,172, 50, 80, 6,202, 0, 80,255, -+255,255 -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/CVS/Entries linux-2.6.17/arch/sh/boards/renesas/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,5 @@ -+D/edosk7705//// -+D/hs7751rvoip//// -+D/r7780rp//// -+D/rts7751r2d//// -+D/systemh//// -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/CVS/Repository linux-2.6.17/arch/sh/boards/renesas/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/renesas -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/CVS/Root linux-2.6.17/arch/sh/boards/renesas/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/edosk7705/CVS/Entries linux-2.6.17/arch/sh/boards/renesas/edosk7705/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/edosk7705/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/edosk7705/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.2/Sun Oct 16 16:31:08 2005/-ko/ -+/io.c/1.1/Mon Aug 30 12:55:31 2004/-ko/ -+/setup.c/1.1/Mon Aug 30 12:55:31 2004/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/edosk7705/CVS/Repository linux-2.6.17/arch/sh/boards/renesas/edosk7705/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/edosk7705/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/edosk7705/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/renesas/edosk7705 -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/edosk7705/CVS/Root linux-2.6.17/arch/sh/boards/renesas/edosk7705/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/edosk7705/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/edosk7705/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/edosk7705/Makefile linux-2.6.17/arch/sh/boards/renesas/edosk7705/Makefile ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/edosk7705/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/edosk7705/Makefile 2006-07-12 16:54:20.000000000 +0000 -@@ -1,10 +1,6 @@ - # - # Makefile for the EDOSK7705 specific parts of the kernel - # --# Note! Dependencies are done automagically by 'make dep', which also --# removes any old dependencies. DON'T put your own dependencies here --# unless it's something special (ie not a .c file). --# - - obj-y := setup.o io.o - -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/CVS/Entries linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,7 @@ -+/Kconfig/1.1/Fri Jun 24 11:21:00 2005/-ko/ -+/Makefile/1.4/Wed Nov 23 15:42:02 2005/-ko/ -+/io.c/1.8/Sun Feb 5 21:55:28 2006/-ko/ -+/irq.c/1.2/Fri Oct 28 13:12:48 2005/-ko/ -+/pci.c/1.3/Sun Aug 15 16:59:25 2004/-ko/ -+/setup.c/1.5/Wed Jan 4 16:34:30 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/CVS/Repository linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/renesas/hs7751rvoip -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/CVS/Root linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/Kconfig linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/Kconfig ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/Kconfig 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/Kconfig 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,12 @@ -+if SH_HS7751RVOIP -+ -+menu "HS7751RVoIP options" -+ -+config HS7751RVOIP_CODEC -+ bool "Support VoIP Codec section" -+ help -+ Selecting this option will support CODEC section. -+ -+endmenu -+ -+endif -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/Makefile linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/Makefile ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/Makefile 2006-07-12 16:54:20.000000000 +0000 -@@ -1,12 +1,8 @@ - # - # Makefile for the HS7751RVoIP specific parts of the kernel - # --# Note! Dependencies are done automagically by 'make dep', which also --# removes any old dependencies. DON'T put your own dependencies here --# unless it's something special (ie not a .c file). --# - --obj-y := mach.o setup.o io.o irq.o led.o -+obj-y := setup.o io.o irq.o - - obj-$(CONFIG_PCI) += pci.o - -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/io.c linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/io.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/io.c 2006-07-12 16:54:20.000000000 +0000 -@@ -14,18 +14,13 @@ - #include <linux/config.h> - #include <linux/kernel.h> - #include <linux/types.h> -+#include <linux/module.h> - #include <asm/io.h> - #include <asm/hs7751rvoip/hs7751rvoip.h> - #include <asm/addrspace.h> - --#include <linux/module.h> --#include <linux/pci.h> --#include "../../../drivers/pci/pci-sh7751.h" -- --extern void *area5_io8_base; /* Area 5 8bit I/O Base address */ - extern void *area6_io8_base; /* Area 6 8bit I/O Base address */ - extern void *area5_io16_base; /* Area 5 16bit I/O Base address */ --extern void *area6_io16_base; /* Area 6 16bit I/O Base address */ - - /* - * The 7751R HS7751RVoIP uses the built-in PCI controller (PCIC) -@@ -34,25 +29,8 @@ - * like the other Solution Engine boards. - */ - --#define PCIIOBR (volatile long *)PCI_REG(SH7751_PCIIOBR) --#define PCIMBR (volatile long *)PCI_REG(SH7751_PCIMBR) --#define PCI_IO_AREA SH7751_PCI_IO_BASE --#define PCI_MEM_AREA SH7751_PCI_CONFIG_BASE -- --#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK)) -- --#if defined(CONFIG_HS7751RVOIP_CODEC) - #define CODEC_IO_BASE 0x1000 --#endif -- --#define maybebadio(name,port) \ -- printk("bad PC-like io %s for port 0x%lx at 0x%08x\n", \ -- #name, (port), (__u32) __builtin_return_address(0)) -- --static inline void delay(void) --{ -- ctrl_inw(0xa0000000); --} -+#define CODEC_IOMAP(a) ((unsigned long)area6_io8_base + ((a) - CODEC_IO_BASE)) - - static inline unsigned long port2adr(unsigned int port) - { -@@ -60,9 +38,10 @@ - if (port == 0x3f6) - return ((unsigned long)area5_io16_base + 0x0c); - else -- return ((unsigned long)area5_io16_base + 0x800 + ((port-0x1f0) << 1)); -+ return ((unsigned long)area5_io16_base + 0x800 + -+ ((port-0x1f0) << 1)); - else -- maybebadio(port2adr, (unsigned long)port); -+ maybebadio((unsigned long)port); - return port; - } - -@@ -79,25 +58,10 @@ - } - - #if defined(CONFIG_HS7751RVOIP_CODEC) --static inline int --codec_port(unsigned long port) --{ -- if (CODEC_IO_BASE <= port && port < (CODEC_IO_BASE+0x20)) -- return 1; -- else -- return 0; --} --#endif -- --/* In case someone configures the kernel w/o PCI support: in that */ --/* scenario, don't ever bother to check for PCI-window addresses */ -- --/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */ --#if defined(CONFIG_PCI) --#define CHECK_SH7751_PCIIO(port) \ -- ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE))) -+#define codec_port(port) \ -+ ((CODEC_IO_BASE <= (port)) && ((port) < (CODEC_IO_BASE + 0x20))) - #else --#define CHECK_SH7751_PCIIO(port) (0) -+#define codec_port(port) (0) - #endif - - /* -@@ -110,15 +74,13 @@ - unsigned char hs7751rvoip_inb(unsigned long port) - { - if (PXSEG(port)) -- return *(volatile unsigned char *)port; --#if defined(CONFIG_HS7751RVOIP_CODEC) -+ return ctrl_inb(port); - else if (codec_port(port)) -- return *(volatile unsigned char *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE)); --#endif -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- return *(volatile unsigned char *)PCI_IOMAP(port); -+ return ctrl_inb(CODEC_IOMAP(port)); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ return ctrl_inb(pci_ioaddr(port)); - else -- return (*(volatile unsigned short *)port2adr(port) & 0xff); -+ return ctrl_inw(port2adr(port)) & 0xff; - } - - unsigned char hs7751rvoip_inb_p(unsigned long port) -@@ -126,38 +88,36 @@ - unsigned char v; - - if (PXSEG(port)) -- v = *(volatile unsigned char *)port; --#if defined(CONFIG_HS7751RVOIP_CODEC) -+ v = ctrl_inb(port); - else if (codec_port(port)) -- v = *(volatile unsigned char *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE)); --#endif -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- v = *(volatile unsigned char *)PCI_IOMAP(port); -+ v = ctrl_inb(CODEC_IOMAP(port)); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ v = ctrl_inb(pci_ioaddr(port)); - else -- v = (*(volatile unsigned short *)port2adr(port) & 0xff); -- delay(); -+ v = ctrl_inw(port2adr(port)) & 0xff; -+ ctrl_delay(); - return v; - } - - unsigned short hs7751rvoip_inw(unsigned long port) - { - if (PXSEG(port)) -- return *(volatile unsigned short *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- return *(volatile unsigned short *)PCI_IOMAP(port); -+ return ctrl_inw(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ return ctrl_inw(pci_ioaddr(port)); - else -- maybebadio(inw, port); -+ maybebadio(port); - return 0; - } - - unsigned int hs7751rvoip_inl(unsigned long port) - { - if (PXSEG(port)) -- return *(volatile unsigned long *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- return *(volatile unsigned long *)PCI_IOMAP(port); -+ return ctrl_inl(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ return ctrl_inl(pci_ioaddr(port)); - else -- maybebadio(inl, port); -+ maybebadio(port); - return 0; - } - -@@ -165,146 +125,160 @@ - { - - if (PXSEG(port)) -- *(volatile unsigned char *)port = value; --#if defined(CONFIG_HS7751RVOIP_CODEC) -+ ctrl_outb(value, port); - else if (codec_port(port)) -- *(volatile unsigned cjar *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE)) = value; --#endif -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- *(unsigned char *)PCI_IOMAP(port) = value; -+ ctrl_outb(value, CODEC_IOMAP(port)); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ ctrl_outb(value, pci_ioaddr(port)); - else -- *(volatile unsigned short *)port2adr(port) = value; -+ ctrl_outb(value, port2adr(port)); - } - - void hs7751rvoip_outb_p(unsigned char value, unsigned long port) - { - if (PXSEG(port)) -- *(volatile unsigned char *)port = value; --#if defined(CONFIG_HS7751RVOIP_CODEC) -+ ctrl_outb(value, port); - else if (codec_port(port)) -- *(volatile unsigned cjar *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE)) = value; --#endif -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- *(unsigned char *)PCI_IOMAP(port) = value; -+ ctrl_outb(value, CODEC_IOMAP(port)); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ ctrl_outb(value, pci_ioaddr(port)); - else -- *(volatile unsigned short *)port2adr(port) = value; -- delay(); -+ ctrl_outw(value, port2adr(port)); -+ -+ ctrl_delay(); - } - - void hs7751rvoip_outw(unsigned short value, unsigned long port) - { - if (PXSEG(port)) -- *(volatile unsigned short *)port = value; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- *(unsigned short *)PCI_IOMAP(port) = value; -+ ctrl_outw(value, port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ ctrl_outw(value, pci_ioaddr(port)); - else -- maybebadio(outw, port); -+ maybebadio(port); - } - - void hs7751rvoip_outl(unsigned int value, unsigned long port) - { - if (PXSEG(port)) -- *(volatile unsigned long *)port = value; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- *((unsigned long *)PCI_IOMAP(port)) = value; -+ ctrl_outl(value, port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ ctrl_outl(value, pci_ioaddr(port)); - else -- maybebadio(outl, port); -+ maybebadio(port); - } - - void hs7751rvoip_insb(unsigned long port, void *addr, unsigned long count) - { -+ u8 *buf = addr; -+ - if (PXSEG(port)) -- while (count--) *((unsigned char *) addr)++ = *(volatile unsigned char *)port; --#if defined(CONFIG_HS7751RVOIP_CODEC) -+ while (count--) -+ *buf++ = ctrl_inb(port); - else if (codec_port(port)) -- while (count--) *((unsigned char *) addr)++ = *(volatile unsigned char *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE)); --#endif -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { -- volatile __u8 *bp = (__u8 *)PCI_IOMAP(port); -+ while (count--) -+ *buf++ = ctrl_inb(CODEC_IOMAP(port)); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) { -+ volatile u8 *bp = (volatile u8 *)pci_ioaddr(port); - -- while (count--) *((volatile unsigned char *) addr)++ = *bp; -+ while (count--) -+ *buf++ = *bp; - } else { -- volatile __u16 *p = (volatile unsigned short *)port2adr(port); -+ volatile u16 *p = (volatile u16 *)port2adr(port); - -- while (count--) *((unsigned char *) addr)++ = *p & 0xff; -+ while (count--) -+ *buf++ = *p & 0xff; - } - } - - void hs7751rvoip_insw(unsigned long port, void *addr, unsigned long count) - { -- volatile __u16 *p; -+ volatile u16 *p; -+ u16 *buf = addr; - - if (PXSEG(port)) -- p = (volatile unsigned short *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- p = (volatile unsigned short *)PCI_IOMAP(port); -- else -- p = (volatile unsigned short *)port2adr(port); -- while (count--) *((__u16 *) addr)++ = *p; -+ p = (volatile u16 *)port; -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ p = (volatile u16 *)pci_ioaddr(port); -+ else -+ p = (volatile u16 *)port2adr(port); -+ while (count--) -+ *buf++ = *p; - } - - void hs7751rvoip_insl(unsigned long port, void *addr, unsigned long count) - { -- if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { -- volatile __u32 *p = (__u32 *)PCI_IOMAP(port); - -- while (count--) *((__u32 *) addr)++ = *p; -+ if (is_pci_ioaddr(port) || shifted_port(port)) { -+ volatile u32 *p = (volatile u32 *)pci_ioaddr(port); -+ u32 *buf = addr; -+ -+ while (count--) -+ *buf++ = *p; - } else -- maybebadio(insl, port); -+ maybebadio(port); - } - - void hs7751rvoip_outsb(unsigned long port, const void *addr, unsigned long count) - { -+ const u8 *buf = addr; -+ - if (PXSEG(port)) -- while (count--) *(volatile unsigned char *)port = *((unsigned char *) addr)++; --#if defined(CONFIG_HS7751RVOIP_CODEC) -+ while (count--) -+ ctrl_outb(*buf++, port); - else if (codec_port(port)) -- while (count--) *(volatile unsigned char *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE)) = *((unsigned char *) addr)++; --#endif -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { -- volatile __u8 *bp = (__u8 *)PCI_IOMAP(port); -+ while (count--) -+ ctrl_outb(*buf++, CODEC_IOMAP(port)); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) { -+ volatile u8 *bp = (volatile u8 *)pci_ioaddr(port); - -- while (count--) *bp = *((volatile unsigned char *) addr)++; -+ while (count--) -+ *bp = *buf++; - } else { -- volatile __u16 *p = (volatile unsigned short *)port2adr(port); -+ volatile u16 *p = (volatile u16 *)port2adr(port); - -- while (count--) *p = *((unsigned char *) addr)++; -+ while (count--) -+ *p = *buf++; - } - } - - void hs7751rvoip_outsw(unsigned long port, const void *addr, unsigned long count) - { -- volatile __u16 *p; -+ volatile u16 *p; -+ const u16 *buf = addr; - - if (PXSEG(port)) -- p = (volatile unsigned short *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- p = (volatile unsigned short *)PCI_IOMAP(port); -+ p = (volatile u16 *)port; -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ p = (volatile u16 *)pci_ioaddr(port); - else -- p = (volatile unsigned short *)port2adr(port); -- while (count--) *p = *((__u16 *) addr)++; -+ p = (volatile u16 *)port2adr(port); -+ -+ while (count--) -+ *p = *buf++; - } - - void hs7751rvoip_outsl(unsigned long port, const void *addr, unsigned long count) - { -- if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { -- volatile __u32 *p = (__u32 *)PCI_IOMAP(port); -+ const u32 *buf = addr; - -- while (count--) *p = *((__u32 *) addr)++; -+ if (is_pci_ioaddr(port) || shifted_port(port)) { -+ volatile u32 *p = (volatile u32 *)pci_ioaddr(port); -+ -+ while (count--) -+ *p = *buf++; - } else -- maybebadio(outsl, port); -+ maybebadio(port); - } - --void *hs7751rvoip_ioremap(unsigned long offset, unsigned long size) -+void __iomem *hs7751rvoip_ioport_map(unsigned long port, unsigned int size) - { -- if (offset >= 0xfd000000) -- return (void *)offset; -- else -- return (void *)P2SEGADDR(offset); --} --EXPORT_SYMBOL(hs7751rvoip_ioremap); -+ if (PXSEG(port)) -+ return (void __iomem *)port; -+ else if (unlikely(codec_port(port) && (size == 1))) -+ return (void __iomem *)CODEC_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ return (void __iomem *)pci_ioaddr(port); - --unsigned long hs7751rvoip_isa_port2addr(unsigned long offset) --{ -- return port2adr(offset); -+ return (void __iomem *)port2adr(port); - } -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/setup.c linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/hs7751rvoip/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/hs7751rvoip/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -13,25 +13,68 @@ - #include <linux/config.h> - #include <linux/init.h> - #include <linux/irq.h> -- -+#include <linux/mm.h> -+#include <linux/vmalloc.h> - #include <linux/hdreg.h> - #include <linux/ide.h> -+#include <linux/pm.h> - #include <asm/io.h> - #include <asm/hs7751rvoip/hs7751rvoip.h> -+#include <asm/machvec.h> -+#include <asm/rtc.h> -+#include <asm/irq.h> - --#include <linux/mm.h> --#include <linux/vmalloc.h> -+unsigned int debug_counter; -+ -+static void __init hs7751rvoip_init_irq(void) -+{ -+#if defined(CONFIG_HS7751RVOIP_CODEC) -+ make_ipr_irq(DMTE0_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY); -+ make_ipr_irq(DMTE1_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY); -+#endif - --/* defined in mm/ioremap.c */ --extern void * p3_ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags); -+ init_hs7751rvoip_IRQ(); -+} - --unsigned int debug_counter; -+struct sh_machine_vector mv_hs7751rvoip __initmv = { -+ .mv_nr_irqs = 72, -+ -+ .mv_inb = hs7751rvoip_inb, -+ .mv_inw = hs7751rvoip_inw, -+ .mv_inl = hs7751rvoip_inl, -+ .mv_outb = hs7751rvoip_outb, -+ .mv_outw = hs7751rvoip_outw, -+ .mv_outl = hs7751rvoip_outl, -+ -+ .mv_inb_p = hs7751rvoip_inb_p, -+ .mv_inw_p = hs7751rvoip_inw, -+ .mv_inl_p = hs7751rvoip_inl, -+ .mv_outb_p = hs7751rvoip_outb_p, -+ .mv_outw_p = hs7751rvoip_outw, -+ .mv_outl_p = hs7751rvoip_outl, -+ -+ .mv_insb = hs7751rvoip_insb, -+ .mv_insw = hs7751rvoip_insw, -+ .mv_insl = hs7751rvoip_insl, -+ .mv_outsb = hs7751rvoip_outsb, -+ .mv_outsw = hs7751rvoip_outsw, -+ .mv_outsl = hs7751rvoip_outsl, -+ -+ .mv_init_irq = hs7751rvoip_init_irq, -+ .mv_ioport_map = hs7751rvoip_ioport_map, -+}; -+ALIAS_MV(hs7751rvoip) - - const char *get_system_type(void) - { - return "HS7751RVoIP"; - } - -+static void hs7751rvoip_power_off(void) -+{ -+ ctrl_outw(ctrl_inw(PA_OUTPORTR) & 0xffdf, PA_OUTPORTR); -+} -+ - /* - * Initialize the board - */ -@@ -39,6 +82,7 @@ - { - printk(KERN_INFO "Renesas Technology Sales HS7751RVoIP-2 support.\n"); - ctrl_outb(0xf0, PA_OUTPORTR); -+ pm_power_off = hs7751rvoip_power_off; - debug_counter = 0; - } - -@@ -47,16 +91,15 @@ - void *area5_io16_base; - void *area6_io16_base; - --int __init cf_init(void) -+static int __init hs7751rvoip_cf_init(void) - { - pgprot_t prot; -- unsigned long paddrbase, psize; -+ unsigned long paddrbase; - - /* open I/O area window */ - paddrbase = virt_to_phys((void *)(PA_AREA5_IO+0x00000800)); -- psize = PAGE_SIZE; - prot = PAGE_KERNEL_PCC(1, _PAGE_PCC_COM16); -- area5_io16_base = p3_ioremap(paddrbase, psize, prot.pgprot); -+ area5_io16_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot); - if (!area5_io16_base) { - printk("allocate_cf_area : can't open CF I/O window!\n"); - return -ENOMEM; -@@ -65,19 +108,18 @@ - /* XXX : do we need attribute and common-memory area also? */ - - paddrbase = virt_to_phys((void *)PA_AREA6_IO); -- psize = PAGE_SIZE; - #if defined(CONFIG_HS7751RVOIP_CODEC) - prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_COM8); - #else - prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_IO8); - #endif -- area6_io8_base = p3_ioremap(paddrbase, psize, prot.pgprot); -+ area6_io8_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot); - if (!area6_io8_base) { - printk("allocate_cf_area : can't open CODEC I/O 8bit window!\n"); - return -ENOMEM; - } - prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_IO16); -- area6_io16_base = p3_ioremap(paddrbase, psize, prot.pgprot); -+ area6_io16_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot); - if (!area6_io16_base) { - printk("allocate_cf_area : can't open CODEC I/O 16bit window!\n"); - return -ENOMEM; -@@ -86,4 +128,4 @@ - return 0; - } - --__initcall (cf_init); -+__initcall(hs7751rvoip_cf_init); -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/CVS/Entries linux-2.6.17/arch/sh/boards/renesas/r7780rp/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/r7780rp/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,7 @@ -+/Makefile/1.1/Sat Jan 7 19:55:56 2006/-ko/ -+/io.c/1.2/Sun Feb 5 21:55:28 2006/-ko/ -+/led.c/1.1/Sat Jan 7 19:55:56 2006/-ko/ -+/Kconfig/1.1/Thu Jul 6 08:19:31 2006/-ko/ -+/irq.c/1.2/Thu Jul 6 12:38:03 2006/-ko/ -+/setup.c/1.3/Thu Jul 6 12:38:03 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/CVS/Repository linux-2.6.17/arch/sh/boards/renesas/r7780rp/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/r7780rp/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/renesas/r7780rp -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/CVS/Root linux-2.6.17/arch/sh/boards/renesas/r7780rp/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/r7780rp/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/Kconfig linux-2.6.17/arch/sh/boards/renesas/r7780rp/Kconfig ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/Kconfig 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/r7780rp/Kconfig 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,14 @@ -+if SH_R7780RP -+ -+menu "R7780RP options" -+ -+config SH_R7780MP -+ bool "R7780MP board support" -+ default y -+ help -+ Selecting this option will enable support for the mass-production -+ version of the R7780RP. If in doubt, say Y. -+ -+endmenu -+ -+endif -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/Makefile linux-2.6.17/arch/sh/boards/renesas/r7780rp/Makefile ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/Makefile 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/r7780rp/Makefile 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,6 @@ -+# -+# Makefile for the R7780RP-1 specific parts of the kernel -+# -+ -+obj-y := setup.o io.o irq.o -+obj-$(CONFIG_HEARTBEAT) += led.o -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/io.c linux-2.6.17/arch/sh/boards/renesas/r7780rp/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/io.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/r7780rp/io.c 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,301 @@ -+/* -+ * Copyright (C) 2001 Ian da Silva, Jeremy Siegel -+ * Based largely on io_se.c. -+ * -+ * I/O routine for Renesas Solutions Highlander R7780RP-1 -+ * -+ * Initial version only to support LAN access; some -+ * placeholder code from io_r7780rp.c left in with the -+ * expectation of later SuperIO and PCMCIA access. -+ */ -+#include <linux/pci.h> -+#include <linux/kernel.h> -+#include <linux/types.h> -+#include <asm/r7780rp/r7780rp.h> -+#include <asm/addrspace.h> -+#include <asm/io.h> -+ -+static inline unsigned long port2adr(unsigned int port) -+{ -+ if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6) -+ if (port == 0x3f6) -+ return (PA_AREA5_IO + 0x80c); -+ else -+ return (PA_AREA5_IO + 0x1000 + ((port-0x1f0) << 1)); -+ else -+ maybebadio((unsigned long)port); -+ -+ return port; -+} -+ -+static inline unsigned long port88796l(unsigned int port, int flag) -+{ -+ unsigned long addr; -+ -+ if (flag) -+ addr = PA_AX88796L + ((port - AX88796L_IO_BASE) << 1); -+ else -+ addr = PA_AX88796L + ((port - AX88796L_IO_BASE) << 1) + 0x1000; -+ -+ return addr; -+} -+ -+/* The 7780 R7780RP-1 seems to have everything hooked */ -+/* up pretty normally (nothing on high-bytes only...) so this */ -+/* shouldn't be needed */ -+static inline int shifted_port(unsigned long port) -+{ -+ /* For IDE registers, value is not shifted */ -+ if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6) -+ return 0; -+ else -+ return 1; -+} -+ -+#if defined(CONFIG_NE2000) || defined(CONFIG_NE2000_MODULE) -+#define CHECK_AX88796L_PORT(port) \ -+ ((port >= AX88796L_IO_BASE) && (port < (AX88796L_IO_BASE+0x20))) -+#else -+#define CHECK_AX88796L_PORT(port) (0) -+#endif -+ -+/* -+ * General outline: remap really low stuff [eventually] to SuperIO, -+ * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO) -+ * is mapped through the PCI IO window. Stuff with high bits (PXSEG) -+ * should be way beyond the window, and is used w/o translation for -+ * compatibility. -+ */ -+u8 r7780rp_inb(unsigned long port) -+{ -+ if (CHECK_AX88796L_PORT(port)) -+ return ctrl_inw(port88796l(port, 0)) & 0xff; -+ else if (PXSEG(port)) -+ return ctrl_inb(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ return ctrl_inb(pci_ioaddr(port)); -+ -+ return ctrl_inw(port2adr(port)) & 0xff; -+} -+ -+u8 r7780rp_inb_p(unsigned long port) -+{ -+ u8 v; -+ -+ if (CHECK_AX88796L_PORT(port)) -+ v = ctrl_inw(port88796l(port, 0)) & 0xff; -+ else if (PXSEG(port)) -+ v = ctrl_inb(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ v = ctrl_inb(pci_ioaddr(port)); -+ else -+ v = ctrl_inw(port2adr(port)) & 0xff; -+ -+ ctrl_delay(); -+ -+ return v; -+} -+ -+u16 r7780rp_inw(unsigned long port) -+{ -+ if (CHECK_AX88796L_PORT(port)) -+ maybebadio(port); -+ else if (PXSEG(port)) -+ return ctrl_inw(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ return ctrl_inw(pci_ioaddr(port)); -+ else -+ maybebadio(port); -+ -+ return 0; -+} -+ -+u32 r7780rp_inl(unsigned long port) -+{ -+ if (CHECK_AX88796L_PORT(port)) -+ maybebadio(port); -+ else if (PXSEG(port)) -+ return ctrl_inl(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ return ctrl_inl(pci_ioaddr(port)); -+ else -+ maybebadio(port); -+ -+ return 0; -+} -+ -+void r7780rp_outb(u8 value, unsigned long port) -+{ -+ if (CHECK_AX88796L_PORT(port)) -+ ctrl_outw(value, port88796l(port, 0)); -+ else if (PXSEG(port)) -+ ctrl_outb(value, port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ ctrl_outb(value, pci_ioaddr(port)); -+ else -+ ctrl_outw(value, port2adr(port)); -+} -+ -+void r7780rp_outb_p(u8 value, unsigned long port) -+{ -+ if (CHECK_AX88796L_PORT(port)) -+ ctrl_outw(value, port88796l(port, 0)); -+ else if (PXSEG(port)) -+ ctrl_outb(value, port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ ctrl_outb(value, pci_ioaddr(port)); -+ else -+ ctrl_outw(value, port2adr(port)); -+ -+ ctrl_delay(); -+} -+ -+void r7780rp_outw(u16 value, unsigned long port) -+{ -+ if (CHECK_AX88796L_PORT(port)) -+ maybebadio(port); -+ else if (PXSEG(port)) -+ ctrl_outw(value, port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ ctrl_outw(value, pci_ioaddr(port)); -+ else -+ maybebadio(port); -+} -+ -+void r7780rp_outl(u32 value, unsigned long port) -+{ -+ if (CHECK_AX88796L_PORT(port)) -+ maybebadio(port); -+ else if (PXSEG(port)) -+ ctrl_outl(value, port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ ctrl_outl(value, pci_ioaddr(port)); -+ else -+ maybebadio(port); -+} -+ -+void r7780rp_insb(unsigned long port, void *dst, unsigned long count) -+{ -+ volatile u16 *p; -+ u8 *buf = dst; -+ -+ if (CHECK_AX88796L_PORT(port)) { -+ p = (volatile u16 *)port88796l(port, 0); -+ while (count--) -+ *buf++ = *p & 0xff; -+ } else if (PXSEG(port)) { -+ while (count--) -+ *buf++ = *(volatile u8 *)port; -+ } else if (is_pci_ioaddr(port) || shifted_port(port)) { -+ volatile u8 *bp = (volatile u8 *)pci_ioaddr(port); -+ -+ while (count--) -+ *buf++ = *bp; -+ } else { -+ p = (volatile u16 *)port2adr(port); -+ while (count--) -+ *buf++ = *p & 0xff; -+ } -+} -+ -+void r7780rp_insw(unsigned long port, void *dst, unsigned long count) -+{ -+ volatile u16 *p; -+ u16 *buf = dst; -+ -+ if (CHECK_AX88796L_PORT(port)) -+ p = (volatile u16 *)port88796l(port, 1); -+ else if (PXSEG(port)) -+ p = (volatile u16 *)port; -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ p = (volatile u16 *)pci_ioaddr(port); -+ else -+ p = (volatile u16 *)port2adr(port); -+ -+ while (count--) -+ *buf++ = *p; -+} -+ -+void r7780rp_insl(unsigned long port, void *dst, unsigned long count) -+{ -+ u32 *buf = dst; -+ -+ if (CHECK_AX88796L_PORT(port)) -+ maybebadio(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) { -+ volatile u32 *p = (volatile u32 *)pci_ioaddr(port); -+ -+ while (count--) -+ *buf++ = *p; -+ } else -+ maybebadio(port); -+} -+ -+void r7780rp_outsb(unsigned long port, const void *src, unsigned long count) -+{ -+ volatile u16 *p; -+ const u8 *buf = src; -+ -+ if (CHECK_AX88796L_PORT(port)) { -+ p = (volatile u16 *)port88796l(port, 0); -+ while (count--) -+ *p = *buf++; -+ } else if (PXSEG(port)) -+ while (count--) -+ ctrl_outb(*buf++, port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) { -+ volatile u8 *bp = (volatile u8 *)pci_ioaddr(port); -+ -+ while (count--) -+ *bp = *buf++; -+ } else { -+ p = (volatile u16 *)port2adr(port); -+ while (count--) -+ *p = *buf++; -+ } -+} -+ -+void r7780rp_outsw(unsigned long port, const void *src, unsigned long count) -+{ -+ volatile u16 *p; -+ const u16 *buf = src; -+ -+ if (CHECK_AX88796L_PORT(port)) -+ p = (volatile u16 *)port88796l(port, 1); -+ else if (PXSEG(port)) -+ p = (volatile u16 *)port; -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ p = (volatile u16 *)pci_ioaddr(port); -+ else -+ p = (volatile u16 *)port2adr(port); -+ -+ while (count--) -+ *p = *buf++; -+} -+ -+void r7780rp_outsl(unsigned long port, const void *src, unsigned long count) -+{ -+ const u32 *buf = src; -+ -+ if (CHECK_AX88796L_PORT(port)) -+ maybebadio(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) { -+ volatile u32 *p = (volatile u32 *)pci_ioaddr(port); -+ -+ while (count--) -+ *p = *buf++; -+ } else -+ maybebadio(port); -+} -+ -+void __iomem *r7780rp_ioport_map(unsigned long port, unsigned int size) -+{ -+ if (CHECK_AX88796L_PORT(port)) -+ return (void __iomem *)port88796l(port, size > 1); -+ else if (PXSEG(port)) -+ return (void __iomem *)port; -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ return (void __iomem *)pci_ioaddr(port); -+ -+ return (void __iomem *)port2adr(port); -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/irq.c linux-2.6.17/arch/sh/boards/renesas/r7780rp/irq.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/irq.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/r7780rp/irq.c 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,123 @@ -+/* -+ * linux/arch/sh/boards/renesas/r7780rp/irq.c -+ * -+ * Copyright (C) 2000 Kazumoto Kojima -+ * -+ * Renesas Solutions Highlander R7780RP-1 Support. -+ * -+ * Modified for R7780RP-1 by -+ * Atom Create Engineering Co., Ltd. 2002. -+ */ -+ -+#include <linux/config.h> -+#include <linux/init.h> -+#include <linux/irq.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+#include <asm/r7780rp/r7780rp.h> -+ -+#ifdef CONFIG_SH_R7780MP -+static int mask_pos[] = {12, 11, 9, 14, 15, 8, 13, 6, 5, 4, 3, 2, 0, 0, 1, 0}; -+#else -+static int mask_pos[] = {15, 14, 13, 12, 11, 10, 9, 8, 7, 5, 6, 4, 0, 1, 2, 0}; -+#endif -+ -+static void enable_r7780rp_irq(unsigned int irq); -+static void disable_r7780rp_irq(unsigned int irq); -+ -+/* shutdown is same as "disable" */ -+#define shutdown_r7780rp_irq disable_r7780rp_irq -+ -+static void ack_r7780rp_irq(unsigned int irq); -+static void end_r7780rp_irq(unsigned int irq); -+ -+static unsigned int startup_r7780rp_irq(unsigned int irq) -+{ -+ enable_r7780rp_irq(irq); -+ return 0; /* never anything pending */ -+} -+ -+static void disable_r7780rp_irq(unsigned int irq) -+{ -+ unsigned long flags; -+ unsigned short val; -+ unsigned short mask = 0xffff ^ (0x0001 << mask_pos[irq]); -+ -+ /* Set the priority in IPR to 0 */ -+ local_irq_save(flags); -+ val = ctrl_inw(IRLCNTR1); -+ val &= mask; -+ ctrl_outw(val, IRLCNTR1); -+ local_irq_restore(flags); -+} -+ -+static void enable_r7780rp_irq(unsigned int irq) -+{ -+ unsigned long flags; -+ unsigned short val; -+ unsigned short value = (0x0001 << mask_pos[irq]); -+ -+ /* Set priority in IPR back to original value */ -+ local_irq_save(flags); -+ val = ctrl_inw(IRLCNTR1); -+ val |= value; -+ ctrl_outw(val, IRLCNTR1); -+ local_irq_restore(flags); -+} -+ -+static void ack_r7780rp_irq(unsigned int irq) -+{ -+ disable_r7780rp_irq(irq); -+} -+ -+static void end_r7780rp_irq(unsigned int irq) -+{ -+ if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) -+ enable_r7780rp_irq(irq); -+} -+ -+static struct hw_interrupt_type r7780rp_irq_type = { -+ .typename = "R7780RP-IRQ", -+ .startup = startup_r7780rp_irq, -+ .shutdown = shutdown_r7780rp_irq, -+ .enable = enable_r7780rp_irq, -+ .disable = disable_r7780rp_irq, -+ .ack = ack_r7780rp_irq, -+ .end = end_r7780rp_irq, -+}; -+ -+static void make_r7780rp_irq(unsigned int irq) -+{ -+ disable_irq_nosync(irq); -+ irq_desc[irq].handler = &r7780rp_irq_type; -+ disable_r7780rp_irq(irq); -+} -+ -+/* -+ * Initialize IRQ setting -+ */ -+void __init init_r7780rp_IRQ(void) -+{ -+ int i; -+ -+ /* IRL0=PCI Slot #A -+ * IRL1=PCI Slot #B -+ * IRL2=PCI Slot #C -+ * IRL3=PCI Slot #D -+ * IRL4=CF Card -+ * IRL5=CF Card Insert -+ * IRL6=M66596 -+ * IRL7=SD Card -+ * IRL8=Touch Panel -+ * IRL9=SCI -+ * IRL10=Serial -+ * IRL11=Extention #A -+ * IRL11=Extention #B -+ * IRL12=Debug LAN -+ * IRL13=Push Switch -+ * IRL14=ZiggBee IO -+ */ -+ -+ for (i=0; i<15; i++) -+ make_r7780rp_irq(i); -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/led.c linux-2.6.17/arch/sh/boards/renesas/r7780rp/led.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/led.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/r7780rp/led.c 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,45 @@ -+/* -+ * Copyright (C) Atom Create Engineering Co., Ltd. -+ * -+ * May be copied or modified under the terms of GNU General Public -+ * License. See linux/COPYING for more information. -+ * -+ * This file contains Renesas Solutions HIGHLANDER R7780RP-1 specific LED code. -+ */ -+ -+#include <linux/config.h> -+#include <linux/sched.h> -+#include <asm/io.h> -+#include <asm/r7780rp/r7780rp.h> -+ -+/* Cycle the LED's in the clasic Knightriger/Sun pattern */ -+void heartbeat_r7780rp(void) -+{ -+ static unsigned int cnt = 0, period = 0; -+ volatile unsigned short *p = (volatile unsigned short *)PA_OBLED; -+ static unsigned bit = 0, up = 1; -+ unsigned bit_pos[] = {2, 1, 0, 3, 6, 5, 4, 7}; -+ -+ cnt += 1; -+ if (cnt < period) -+ return; -+ -+ cnt = 0; -+ -+ /* Go through the points (roughly!): -+ * f(0)=10, f(1)=16, f(2)=20, f(5)=35, f(int)->110 -+ */ -+ period = 110 - ((300 << FSHIFT)/((avenrun[0]/5) + (3<<FSHIFT))); -+ -+ *p = 1 << bit_pos[bit]; -+ if (up) -+ if (bit == 7) { -+ bit--; -+ up = 0; -+ } else -+ bit++; -+ else if (bit == 0) -+ up = 1; -+ else -+ bit--; -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/setup.c linux-2.6.17/arch/sh/boards/renesas/r7780rp/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/r7780rp/setup.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/r7780rp/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,164 @@ -+/* -+ * arch/sh/boards/renesas/r7780rp/setup.c -+ * -+ * Copyright (C) 2002 Atom Create Engineering Co., Ltd. -+ * Copyright (C) 2005, 2006 Paul Mundt -+ * -+ * Renesas Solutions Highlander R7780RP-1 Support. -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/init.h> -+#include <linux/platform_device.h> -+#include <asm/machvec.h> -+#include <asm/r7780rp/r7780rp.h> -+#include <asm/clock.h> -+#include <asm/io.h> -+ -+extern void heartbeat_r7780rp(void); -+extern void init_r7780rp_IRQ(void); -+ -+/* -+ * The Machine Vector -+ */ -+struct sh_machine_vector mv_r7780rp __initmv = { -+ .mv_nr_irqs = 109, -+ -+ .mv_inb = r7780rp_inb, -+ .mv_inw = r7780rp_inw, -+ .mv_inl = r7780rp_inl, -+ .mv_outb = r7780rp_outb, -+ .mv_outw = r7780rp_outw, -+ .mv_outl = r7780rp_outl, -+ -+ .mv_inb_p = r7780rp_inb_p, -+ .mv_inw_p = r7780rp_inw, -+ .mv_inl_p = r7780rp_inl, -+ .mv_outb_p = r7780rp_outb_p, -+ .mv_outw_p = r7780rp_outw, -+ .mv_outl_p = r7780rp_outl, -+ -+ .mv_insb = r7780rp_insb, -+ .mv_insw = r7780rp_insw, -+ .mv_insl = r7780rp_insl, -+ .mv_outsb = r7780rp_outsb, -+ .mv_outsw = r7780rp_outsw, -+ .mv_outsl = r7780rp_outsl, -+ -+ .mv_ioport_map = r7780rp_ioport_map, -+ .mv_init_irq = init_r7780rp_IRQ, -+#ifdef CONFIG_HEARTBEAT -+ .mv_heartbeat = heartbeat_r7780rp, -+#endif -+}; -+ALIAS_MV(r7780rp) -+ -+static struct resource m66596_usb_host_resources[] = { -+ [0] = { -+ .start = 0xa4800000, -+ .end = 0xa4ffffff, -+ .flags = IORESOURCE_MEM, -+ }, -+ [1] = { -+ .start = 6, /* irq number */ -+ .end = 6, -+ .flags = IORESOURCE_IRQ, -+ }, -+}; -+ -+static struct platform_device m66596_usb_host_device = { -+ .name = "m66596-hcd", -+ .id = 0, -+ .dev = { -+ .dma_mask = NULL, /* don't use dma */ -+ .coherent_dma_mask = 0xffffffff, -+ }, -+ .num_resources = ARRAY_SIZE(m66596_usb_host_resources), -+ .resource = m66596_usb_host_resources, -+}; -+ -+static struct platform_device *r7780rp_devices[] __initdata = { -+ &m66596_usb_host_device, -+}; -+ -+static int __init r7780rp_devices_setup(void) -+{ -+ return platform_add_devices(r7780rp_devices, -+ ARRAY_SIZE(r7780rp_devices)); -+} -+__initcall(r7780rp_devices_setup); -+ -+/* -+ * Platform specific clocks -+ */ -+static void ivdr_clk_enable(struct clk *clk) -+{ -+ ctrl_outw(ctrl_inw(PA_IVDRCTL) | (1 << 8), PA_IVDRCTL); -+} -+ -+static void ivdr_clk_disable(struct clk *clk) -+{ -+ ctrl_outw(ctrl_inw(PA_IVDRCTL) & ~(1 << 8), PA_IVDRCTL); -+} -+ -+static struct clk_ops ivdr_clk_ops = { -+ .enable = ivdr_clk_enable, -+ .disable = ivdr_clk_disable, -+}; -+ -+static struct clk ivdr_clk = { -+ .name = "ivdr_clk", -+ .ops = &ivdr_clk_ops, -+}; -+ -+static struct clk *r7780rp_clocks[] = { -+ &ivdr_clk, -+}; -+ -+const char *get_system_type(void) -+{ -+ return "Highlander R7780RP-1"; -+} -+ -+static void r7780rp_power_off(void) -+{ -+#ifdef CONFIG_SH_R7780MP -+ ctrl_outw(0x0001, PA_POFF); -+#endif -+} -+ -+/* -+ * Initialize the board -+ */ -+void __init platform_setup(void) -+{ -+ u16 ver = ctrl_inw(PA_VERREG); -+ int i; -+ -+ printk(KERN_INFO "Renesas Solutions Highlander R7780RP-1 support.\n"); -+ -+ printk(KERN_INFO "Board version: %d (revision %d), " -+ "FPGA version: %d (revision %d)\n", -+ (ver >> 12) & 0xf, (ver >> 8) & 0xf, -+ (ver >> 4) & 0xf, ver & 0xf); -+ -+ /* -+ * Enable the important clocks right away.. -+ */ -+ for (i = 0; i < ARRAY_SIZE(r7780rp_clocks); i++) { -+ struct clk *clk = r7780rp_clocks[i]; -+ -+ clk_register(clk); -+ clk_enable(clk); -+ } -+ -+ ctrl_outw(0x0000, PA_OBLED); /* Clear LED. */ -+#ifndef CONFIG_SH_R7780MP -+ ctrl_outw(0x0001, PA_SDPOW); /* SD Power ON */ -+#endif -+ ctrl_outw(ctrl_inw(PA_IVDRCTL) | 0x0100, PA_IVDRCTL); /* Si13112 */ -+ -+ pm_power_off = r7780rp_power_off; -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/CVS/Entries linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,8 @@ -+/Kconfig/1.1/Fri Jun 24 11:21:00 2005/-ko/ -+/Makefile/1.2/Sun Oct 16 16:31:08 2005/-ko/ -+/io.c/1.6/Sun Feb 5 21:55:28 2006/-ko/ -+/irq.c/1.3/Fri Oct 28 13:12:48 2005/-ko/ -+/mach.c/1.6/Tue Jan 3 22:51:46 2006/-ko/ -+/led.c/1.3/Sat Jul 8 20:16:04 2006/-ko/ -+/setup.c/1.5/Sat Jul 8 20:16:04 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/CVS/Repository linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/renesas/rts7751r2d -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/CVS/Root linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/Kconfig linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/Kconfig ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/Kconfig 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/Kconfig 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,12 @@ -+if SH_RTS7751R2D -+ -+menu "RTS7751R2D options" -+ -+config RTS7751R2D_REV11 -+ bool "RTS7751R2D Rev. 1.1 board support" -+ help -+ Selecting this option will support version rev. 1.1. -+endmenu -+ -+endif -+ -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/Makefile linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/Makefile ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/Makefile 2006-07-12 16:54:20.000000000 +0000 -@@ -1,10 +1,6 @@ - # - # Makefile for the RTS7751R2D specific parts of the kernel - # --# Note! Dependencies are done automagically by 'make dep', which also --# removes any old dependencies. DON'T put your own dependencies here --# unless it's something special (ie not a .c file). --# - - obj-y := mach.o setup.o io.o irq.o led.o - -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/io.c linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/io.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/io.c 2006-07-12 16:54:20.000000000 +0000 -@@ -1,6 +1,4 @@ - /* -- * linux/arch/sh/kernel/io_rts7751r2d.c -- * - * Copyright (C) 2001 Ian da Silva, Jeremy Siegel - * Based largely on io_se.c. - * -@@ -10,17 +8,13 @@ - * placeholder code from io_rts7751r2d.c left in with the - * expectation of later SuperIO and PCMCIA access. - */ -- - #include <linux/kernel.h> - #include <linux/types.h> --#include <asm/io.h> -+#include <linux/pci.h> - #include <asm/rts7751r2d/rts7751r2d.h> -+#include <asm/io.h> - #include <asm/addrspace.h> - --#include <linux/module.h> --#include <linux/pci.h> --#include "../../../drivers/pci/pci-sh7751.h" -- - /* - * The 7751R RTS7751R2D uses the built-in PCI controller (PCIC) - * of the 7751R processor, and has a SuperIO accessible via the PCI. -@@ -28,22 +22,6 @@ - * like the other Solution Engine boards. - */ - --#define PCIIOBR (volatile long *)PCI_REG(SH7751_PCIIOBR) --#define PCIMBR (volatile long *)PCI_REG(SH7751_PCIMBR) --#define PCI_IO_AREA SH7751_PCI_IO_BASE --#define PCI_MEM_AREA SH7751_PCI_CONFIG_BASE -- --#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK)) -- --#define maybebadio(name,port) \ -- printk("bad PC-like io %s for port 0x%lx at 0x%08x\n", \ -- #name, (port), (__u32) __builtin_return_address(0)) -- --static inline void delay(void) --{ -- ctrl_inw(0xa0000000); --} -- - static inline unsigned long port2adr(unsigned int port) - { - if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6) -@@ -52,7 +30,7 @@ - else - return (PA_AREA5_IO + 0x1000 + ((port-0x1f0) << 1)); - else -- maybebadio(port2adr, (unsigned long)port); -+ maybebadio((unsigned long)port); - - return port; - } -@@ -81,17 +59,6 @@ - return 1; - } - --/* In case someone configures the kernel w/o PCI support: in that */ --/* scenario, don't ever bother to check for PCI-window addresses */ -- --/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */ --#if defined(CONFIG_PCI) --#define CHECK_SH7751_PCIIO(port) \ -- ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE))) --#else --#define CHECK_SH7751_PCIIO(port) (0) --#endif -- - #if defined(CONFIG_NE2000) || defined(CONFIG_NE2000_MODULE) - #define CHECK_AX88796L_PORT(port) \ - ((port >= AX88796L_IO_BASE) && (port < (AX88796L_IO_BASE+0x20))) -@@ -112,8 +79,8 @@ - return (*(volatile unsigned short *)port88796l(port, 0)) & 0xff; - else if (PXSEG(port)) - return *(volatile unsigned char *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- return *(volatile unsigned char *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ return *(volatile unsigned char *)pci_ioaddr(port); - else - return (*(volatile unsigned short *)port2adr(port) & 0xff); - } -@@ -126,11 +93,12 @@ - v = (*(volatile unsigned short *)port88796l(port, 0)) & 0xff; - else if (PXSEG(port)) - v = *(volatile unsigned char *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- v = *(volatile unsigned char *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ v = *(volatile unsigned char *)pci_ioaddr(port); - else - v = (*(volatile unsigned short *)port2adr(port) & 0xff); -- delay(); -+ -+ ctrl_delay(); - - return v; - } -@@ -138,13 +106,13 @@ - unsigned short rts7751r2d_inw(unsigned long port) - { - if (CHECK_AX88796L_PORT(port)) -- maybebadio(inw, port); -+ maybebadio(port); - else if (PXSEG(port)) - return *(volatile unsigned short *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- return *(volatile unsigned short *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ return *(volatile unsigned short *)pci_ioaddr(port); - else -- maybebadio(inw, port); -+ maybebadio(port); - - return 0; - } -@@ -152,13 +120,13 @@ - unsigned int rts7751r2d_inl(unsigned long port) - { - if (CHECK_AX88796L_PORT(port)) -- maybebadio(inl, port); -+ maybebadio(port); - else if (PXSEG(port)) - return *(volatile unsigned long *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- return *(volatile unsigned long *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ return *(volatile unsigned long *)pci_ioaddr(port); - else -- maybebadio(inl, port); -+ maybebadio(port); - - return 0; - } -@@ -169,8 +137,8 @@ - *((volatile unsigned short *)port88796l(port, 0)) = value; - else if (PXSEG(port)) - *(volatile unsigned char *)port = value; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- *(volatile unsigned char *)PCI_IOMAP(port) = value; -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ *(volatile unsigned char *)pci_ioaddr(port) = value; - else - *(volatile unsigned short *)port2adr(port) = value; - } -@@ -181,143 +149,152 @@ - *((volatile unsigned short *)port88796l(port, 0)) = value; - else if (PXSEG(port)) - *(volatile unsigned char *)port = value; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- *(volatile unsigned char *)PCI_IOMAP(port) = value; -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ *(volatile unsigned char *)pci_ioaddr(port) = value; - else - *(volatile unsigned short *)port2adr(port) = value; -- delay(); -+ -+ ctrl_delay(); - } - - void rts7751r2d_outw(unsigned short value, unsigned long port) - { - if (CHECK_AX88796L_PORT(port)) -- maybebadio(outw, port); -+ maybebadio(port); - else if (PXSEG(port)) - *(volatile unsigned short *)port = value; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- *(volatile unsigned short *)PCI_IOMAP(port) = value; -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ *(volatile unsigned short *)pci_ioaddr(port) = value; - else -- maybebadio(outw, port); -+ maybebadio(port); - } - - void rts7751r2d_outl(unsigned int value, unsigned long port) - { - if (CHECK_AX88796L_PORT(port)) -- maybebadio(outl, port); -+ maybebadio(port); - else if (PXSEG(port)) - *(volatile unsigned long *)port = value; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- *(volatile unsigned long *)PCI_IOMAP(port) = value; -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ *(volatile unsigned long *)pci_ioaddr(port) = value; - else -- maybebadio(outl, port); -+ maybebadio(port); - } - - void rts7751r2d_insb(unsigned long port, void *addr, unsigned long count) - { -+ unsigned long a = (unsigned long)addr; - volatile __u8 *bp; - volatile __u16 *p; -- unsigned char *s = addr; - - if (CHECK_AX88796L_PORT(port)) { - p = (volatile unsigned short *)port88796l(port, 0); -- while (count--) *s++ = *p & 0xff; -+ while (count--) -+ ctrl_outb(*p & 0xff, a++); - } else if (PXSEG(port)) -- while (count--) *s++ = *(volatile unsigned char *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { -- bp = (__u8 *)PCI_IOMAP(port); -- while (count--) *s++ = *bp; -+ while (count--) -+ ctrl_outb(ctrl_inb(port), a++); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) { -+ bp = (__u8 *)pci_ioaddr(port); -+ while (count--) -+ ctrl_outb(*bp, a++); - } else { - p = (volatile unsigned short *)port2adr(port); -- while (count--) *s++ = *p & 0xff; -+ while (count--) -+ ctrl_outb(*p & 0xff, a++); - } - } - - void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count) - { -+ unsigned long a = (unsigned long)addr; - volatile __u16 *p; -- __u16 *s = addr; - - if (CHECK_AX88796L_PORT(port)) - p = (volatile unsigned short *)port88796l(port, 1); - else if (PXSEG(port)) - p = (volatile unsigned short *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- p = (volatile unsigned short *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ p = (volatile unsigned short *)pci_ioaddr(port); - else - p = (volatile unsigned short *)port2adr(port); -- while (count--) *s++ = *p; -+ while (count--) -+ ctrl_outw(*p, a++); - } - - void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count) - { - if (CHECK_AX88796L_PORT(port)) -- maybebadio(insl, port); -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { -- volatile __u32 *p = (__u32 *)PCI_IOMAP(port); -- __u32 *s = addr; -- -- while (count--) *s++ = *p; -+ maybebadio(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) { -+ unsigned long a = (unsigned long)addr; -+ -+ while (count--) { -+ ctrl_outl(ctrl_inl(pci_ioaddr(port)), a); -+ a += 4; -+ } - } else -- maybebadio(insl, port); -+ maybebadio(port); - } - - void rts7751r2d_outsb(unsigned long port, const void *addr, unsigned long count) - { -+ unsigned long a = (unsigned long)addr; - volatile __u8 *bp; - volatile __u16 *p; -- const __u8 *s = addr; - - if (CHECK_AX88796L_PORT(port)) { - p = (volatile unsigned short *)port88796l(port, 0); -- while (count--) *p = *s++; -+ while (count--) -+ *p = ctrl_inb(a++); - } else if (PXSEG(port)) -- while (count--) *(volatile unsigned char *)port = *s++; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { -- bp = (__u8 *)PCI_IOMAP(port); -- while (count--) *bp = *s++; -+ while (count--) -+ ctrl_outb(a++, port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) { -+ bp = (__u8 *)pci_ioaddr(port); -+ while (count--) -+ *bp = ctrl_inb(a++); - } else { - p = (volatile unsigned short *)port2adr(port); -- while (count--) *p = *s++; -+ while (count--) -+ *p = ctrl_inb(a++); - } - } - - void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count) - { -+ unsigned long a = (unsigned long)addr; - volatile __u16 *p; -- const __u16 *s = addr; - - if (CHECK_AX88796L_PORT(port)) - p = (volatile unsigned short *)port88796l(port, 1); - else if (PXSEG(port)) - p = (volatile unsigned short *)port; -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) -- p = (volatile unsigned short *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) -+ p = (volatile unsigned short *)pci_ioaddr(port); - else - p = (volatile unsigned short *)port2adr(port); -- while (count--) *p = *s++; -+ -+ while (count--) { -+ ctrl_outw(*p, a); -+ a += 2; -+ } - } - - void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count) - { - if (CHECK_AX88796L_PORT(port)) -- maybebadio(outsl, port); -- else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { -- volatile __u32 *p = (__u32 *)PCI_IOMAP(port); -- const __u32 *s = addr; -- -- while (count--) *p = *s++; -+ maybebadio(port); -+ else if (is_pci_ioaddr(port) || shifted_port(port)) { -+ unsigned long a = (unsigned long)addr; -+ -+ while (count--) { -+ ctrl_outl(ctrl_inl(a), pci_ioaddr(port)); -+ a += 4; -+ } - } else -- maybebadio(outsl, port); --} -- --void *rts7751r2d_ioremap(unsigned long offset, unsigned long size) --{ -- if (offset >= 0xfd000000) -- return (void *)offset; -- else -- return (void *)P2SEGADDR(offset); -+ maybebadio(port); - } --EXPORT_SYMBOL(rts7751r2d_ioremap); - - unsigned long rts7751r2d_isa_port2addr(unsigned long offset) - { -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/led.c linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/led.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/led.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/led.c 2006-07-12 16:54:20.000000000 +0000 -@@ -13,8 +13,6 @@ - #include <asm/io.h> - #include <asm/rts7751r2d/rts7751r2d.h> - --extern unsigned int debug_counter; -- - #ifdef CONFIG_HEARTBEAT - - #include <linux/sched.h> -@@ -56,12 +54,3 @@ - ctrl_outw(value, PA_OUTPORT); - } - --void debug_led_disp(void) --{ -- unsigned short value; -- -- value = (unsigned short)debug_counter++; -- rts7751r2d_led(value); -- if (value == 0xff) -- debug_counter = 0; --} -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/mach.c linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/mach.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/mach.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/mach.c 2006-07-12 16:54:20.000000000 +0000 -@@ -16,15 +16,16 @@ - #include <asm/machvec.h> - #include <asm/rtc.h> - #include <asm/irq.h> --#include <asm/rts7751r2d/io.h> -+#include <asm/mach/rts7751r2d.h> - - extern void heartbeat_rts7751r2d(void); - extern void init_rts7751r2d_IRQ(void); --extern void *rts7751r2d_ioremap(unsigned long, unsigned long); - extern int rts7751r2d_irq_demux(int irq); - -+#ifdef CONFIG_USB_SM501 - extern void *voyagergx_consistent_alloc(struct device *, size_t, dma_addr_t *, gfp_t); - extern int voyagergx_consistent_free(struct device *, size_t, void *, dma_addr_t); -+#endif - - /* - * The Machine Vector -@@ -54,15 +55,13 @@ - .mv_outsw = rts7751r2d_outsw, - .mv_outsl = rts7751r2d_outsl, - -- .mv_ioremap = rts7751r2d_ioremap, -- .mv_isa_port2addr = rts7751r2d_isa_port2addr, - .mv_init_irq = init_rts7751r2d_IRQ, - #ifdef CONFIG_HEARTBEAT - .mv_heartbeat = heartbeat_rts7751r2d, - #endif - .mv_irq_demux = rts7751r2d_irq_demux, - --#ifdef CONFIG_USB_OHCI_HCD -+#ifdef CONFIG_USB_SM501 - .mv_consistent_alloc = voyagergx_consistent_alloc, - .mv_consistent_free = voyagergx_consistent_free, - #endif -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/setup.c linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/rts7751r2d/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/rts7751r2d/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -1,25 +1,87 @@ - /* -- * linux/arch/sh/kernel/setup_rts7751r2d.c -- * -- * Copyright (C) 2000 Kazumoto Kojima -- * - * Renesas Technology Sales RTS7751R2D Support. - * -- * Modified for RTS7751R2D by -- * Atom Create Engineering Co., Ltd. 2002. -+ * Copyright (C) 2002 Atom Create Engineering Co., Ltd. -+ * Copyright (C) 2004 - 2006 Paul Mundt -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. - */ -- - #include <linux/init.h> -+#include <linux/platform_device.h> -+#include <linux/serial_8250.h> -+#include <linux/pm.h> - #include <asm/io.h> --#include <asm/rts7751r2d/rts7751r2d.h> -+#include <asm/mach/rts7751r2d.h> -+#include <asm/mach/voyagergx_reg.h> -+ -+static struct plat_serial8250_port uart_platform_data[] = { -+ { -+ .membase = (void *)VOYAGER_UART_BASE, -+ .mapbase = VOYAGER_UART_BASE, -+ .iotype = UPIO_MEM, -+ .irq = VOYAGER_UART0_IRQ, -+ .flags = UPF_BOOT_AUTOCONF, -+ .regshift = 2, -+ .uartclk = (9600 * 16), -+ }, { -+ .flags = 0, -+ }, -+}; - --unsigned int debug_counter; -+static void __init voyagergx_serial_init(void) -+{ -+ unsigned long val; -+ -+ /* -+ * GPIO Control -+ */ -+ val = inl(GPIO_MUX_HIGH); -+ val |= 0x00001fe0; -+ outl(val, GPIO_MUX_HIGH); -+ -+ /* -+ * Power Mode Gate -+ */ -+ val = inl(POWER_MODE0_GATE); -+ val |= (POWER_MODE0_GATE_U0 | POWER_MODE0_GATE_U1); -+ outl(val, POWER_MODE0_GATE); -+ -+ val = inl(POWER_MODE1_GATE); -+ val |= (POWER_MODE1_GATE_U0 | POWER_MODE1_GATE_U1); -+ outl(val, POWER_MODE1_GATE); -+} -+ -+static struct platform_device uart_device = { -+ .name = "serial8250", -+ .id = -1, -+ .dev = { -+ .platform_data = uart_platform_data, -+ }, -+}; -+ -+static struct platform_device *rts7751r2d_devices[] __initdata = { -+ &uart_device, -+}; -+ -+static int __init rts7751r2d_devices_setup(void) -+{ -+ return platform_add_devices(rts7751r2d_devices, -+ ARRAY_SIZE(rts7751r2d_devices)); -+} -+__initcall(rts7751r2d_devices_setup); - - const char *get_system_type(void) - { - return "RTS7751R2D"; - } - -+static void rts7751r2d_power_off(void) -+{ -+ ctrl_outw(0x0001, PA_POWOFF); -+} -+ - /* - * Initialize the board - */ -@@ -27,5 +89,7 @@ - { - printk(KERN_INFO "Renesas Technology Sales RTS7751R2D support.\n"); - ctrl_outw(0x0000, PA_OUTPORT); -- debug_counter = 0; -+ pm_power_off = rts7751r2d_power_off; -+ -+ voyagergx_serial_init(); - } -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/CVS/Entries linux-2.6.17/arch/sh/boards/renesas/systemh/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/systemh/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Makefile/1.1/Tue Jun 15 18:32:21 2004/-ko/ -+/io.c/1.5/Sun Feb 5 21:55:29 2006/-ko/ -+/irq.c/1.4/Wed Jan 4 18:52:50 2006/-ko/ -+/setup.c/1.3/Wed Jan 4 18:52:50 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/CVS/Repository linux-2.6.17/arch/sh/boards/renesas/systemh/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/systemh/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/renesas/systemh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/CVS/Root linux-2.6.17/arch/sh/boards/renesas/systemh/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/systemh/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/io.c linux-2.6.17/arch/sh/boards/renesas/systemh/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/io.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/systemh/io.c 2006-07-12 16:54:20.000000000 +0000 -@@ -5,66 +5,25 @@ - * Based largely on io_se.c. - * - * I/O routine for Hitachi 7751 Systemh. -- * - */ -- - #include <linux/kernel.h> - #include <linux/types.h> --#include <asm/systemh/7751systemh.h> -+#include <linux/pci.h> -+#include <asm/systemh7751.h> - #include <asm/addrspace.h> - #include <asm/io.h> - --#include <linux/pci.h> --#include "../../drivers/pci/pci-sh7751.h" -- --/* -- * The 7751 SystemH Engine uses the built-in PCI controller (PCIC) -- * of the 7751 processor, and has a SuperIO accessible on its memory -- * bus. -- */ -- --#define PCIIOBR (volatile long *)PCI_REG(SH7751_PCIIOBR) --#define PCIMBR (volatile long *)PCI_REG(SH7751_PCIMBR) --#define PCI_IO_AREA SH7751_PCI_IO_BASE --#define PCI_MEM_AREA SH7751_PCI_CONFIG_BASE -- --#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK)) - #define ETHER_IOMAP(adr) (0xB3000000 + (adr)) /*map to 16bits access area - of smc lan chip*/ -- --#define maybebadio(name,port) \ -- printk("bad PC-like io %s for port 0x%lx at 0x%08x\n", \ -- #name, (port), (__u32) __builtin_return_address(0)) -- --static inline void delay(void) --{ -- ctrl_inw(0xa0000000); --} -- - static inline volatile __u16 * - port2adr(unsigned int port) - { - if (port >= 0x2000) - return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000)); --#if 0 -- else -- return (volatile __u16 *) (PA_SUPERIO + (port << 1)); --#endif -- maybebadio(name,(unsigned long)port); -+ maybebadio((unsigned long)port); - return (volatile __u16*)port; - } - --/* In case someone configures the kernel w/o PCI support: in that */ --/* scenario, don't ever bother to check for PCI-window addresses */ -- --/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */ --#if defined(CONFIG_PCI) --#define CHECK_SH7751_PCIIO(port) \ -- ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE))) --#else --#define CHECK_SH7751_PCIIO(port) (0) --#endif -- - /* - * General outline: remap really low stuff [eventually] to SuperIO, - * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO) -@@ -76,8 +35,8 @@ - { - if (PXSEG(port)) - return *(volatile unsigned char *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- return *(volatile unsigned char *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ return *(volatile unsigned char *)pci_ioaddr(port); - else if (port <= 0x3F1) - return *(volatile unsigned char *)ETHER_IOMAP(port); - else -@@ -90,13 +49,13 @@ - - if (PXSEG(port)) - v = *(volatile unsigned char *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- v = *(volatile unsigned char *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ v = *(volatile unsigned char *)pci_ioaddr(port); - else if (port <= 0x3F1) - v = *(volatile unsigned char *)ETHER_IOMAP(port); - else - v = (*port2adr(port))&0xff; -- delay(); -+ ctrl_delay(); - return v; - } - -@@ -104,14 +63,14 @@ - { - if (PXSEG(port)) - return *(volatile unsigned short *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- return *(volatile unsigned short *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ return *(volatile unsigned short *)pci_ioaddr(port); - else if (port >= 0x2000) - return *port2adr(port); - else if (port <= 0x3F1) - return *(volatile unsigned int *)ETHER_IOMAP(port); - else -- maybebadio(inw, port); -+ maybebadio(port); - return 0; - } - -@@ -119,14 +78,14 @@ - { - if (PXSEG(port)) - return *(volatile unsigned long *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- return *(volatile unsigned int *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ return *(volatile unsigned int *)pci_ioaddr(port); - else if (port >= 0x2000) - return *port2adr(port); - else if (port <= 0x3F1) - return *(volatile unsigned int *)ETHER_IOMAP(port); - else -- maybebadio(inl, port); -+ maybebadio(port); - return 0; - } - -@@ -135,8 +94,8 @@ - - if (PXSEG(port)) - *(volatile unsigned char *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned char*)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned char*)pci_ioaddr(port)) = value; - else if (port <= 0x3F1) - *(volatile unsigned char *)ETHER_IOMAP(port) = value; - else -@@ -147,37 +106,37 @@ - { - if (PXSEG(port)) - *(volatile unsigned char *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned char*)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned char*)pci_ioaddr(port)) = value; - else if (port <= 0x3F1) - *(volatile unsigned char *)ETHER_IOMAP(port) = value; - else - *(port2adr(port)) = value; -- delay(); -+ ctrl_delay(); - } - - void sh7751systemh_outw(unsigned short value, unsigned long port) - { - if (PXSEG(port)) - *(volatile unsigned short *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned short *)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned short *)pci_ioaddr(port)) = value; - else if (port >= 0x2000) - *port2adr(port) = value; - else if (port <= 0x3F1) - *(volatile unsigned short *)ETHER_IOMAP(port) = value; - else -- maybebadio(outw, port); -+ maybebadio(port); - } - - void sh7751systemh_outl(unsigned int value, unsigned long port) - { - if (PXSEG(port)) - *(volatile unsigned long *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned long*)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned long*)pci_ioaddr(port)) = value; - else -- maybebadio(outl, port); -+ maybebadio(port); - } - - void sh7751systemh_insb(unsigned long port, void *addr, unsigned long count) -@@ -194,7 +153,7 @@ - - void sh7751systemh_insl(unsigned long port, void *addr, unsigned long count) - { -- maybebadio(insl, port); -+ maybebadio(port); - } - - void sh7751systemh_outsb(unsigned long port, const void *addr, unsigned long count) -@@ -211,73 +170,5 @@ - - void sh7751systemh_outsl(unsigned long port, const void *addr, unsigned long count) - { -- maybebadio(outsw, port); --} -- --/* For read/write calls, just copy generic (pass-thru); PCIMBR is */ --/* already set up. For a larger memory space, these would need to */ --/* reset PCIMBR as needed on a per-call basis... */ -- --unsigned char sh7751systemh_readb(unsigned long addr) --{ -- return *(volatile unsigned char*)addr; --} -- --unsigned short sh7751systemh_readw(unsigned long addr) --{ -- return *(volatile unsigned short*)addr; --} -- --unsigned int sh7751systemh_readl(unsigned long addr) --{ -- return *(volatile unsigned long*)addr; --} -- --void sh7751systemh_writeb(unsigned char b, unsigned long addr) --{ -- *(volatile unsigned char*)addr = b; --} -- --void sh7751systemh_writew(unsigned short b, unsigned long addr) --{ -- *(volatile unsigned short*)addr = b; --} -- --void sh7751systemh_writel(unsigned int b, unsigned long addr) --{ -- *(volatile unsigned long*)addr = b; --} -- -- -- --/* Map ISA bus address to the real address. Only for PCMCIA. */ -- --/* ISA page descriptor. */ --static __u32 sh_isa_memmap[256]; -- --#if 0 --static int --sh_isa_mmap(__u32 start, __u32 length, __u32 offset) --{ -- int idx; -- -- if (start >= 0x100000 || (start & 0xfff) || (length != 0x1000)) -- return -1; -- -- idx = start >> 12; -- sh_isa_memmap[idx] = 0xb8000000 + (offset &~ 0xfff); -- printk("sh_isa_mmap: start %x len %x offset %x (idx %x paddr %x)\n", -- start, length, offset, idx, sh_isa_memmap[idx]); -- return 0; --} --#endif -- --unsigned long --sh7751systemh_isa_port2addr(unsigned long offset) --{ -- int idx; -- -- idx = (offset >> 12) & 0xff; -- offset &= 0xfff; -- return sh_isa_memmap[idx] + offset; -+ maybebadio(port); - } -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/irq.c linux-2.6.17/arch/sh/boards/renesas/systemh/irq.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/irq.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/systemh/irq.c 2006-07-12 16:54:20.000000000 +0000 -@@ -16,7 +16,7 @@ - #include <linux/hdreg.h> - #include <linux/ide.h> - #include <asm/io.h> --#include <asm/mach/7751systemh.h> -+#include <asm/systemh7751.h> - #include <asm/smc37c93x.h> - - /* address of external interrupt mask register -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/setup.c linux-2.6.17/arch/sh/boards/renesas/systemh/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/renesas/systemh/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/renesas/systemh/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -15,9 +15,8 @@ - * for more details. - */ - #include <linux/init.h> --#include <asm/mach/7751systemh.h> --#include <asm/mach/io.h> - #include <asm/machvec.h> -+#include <asm/systemh7751.h> - - extern void make_systemh_irq(unsigned int irq); - -@@ -31,8 +30,6 @@ - */ - void __init init_7751systemh_IRQ(void) - { --/* make_ipr_irq(10, BCR_ILCRD, 1, 0x0f-10); LAN */ --/* make_ipr_irq(14, BCR_ILCRA, 2, 0x0f-4); */ - make_systemh_irq(0xb); /* Ethernet interrupt */ - } - -@@ -60,15 +57,6 @@ - .mv_outsw = sh7751systemh_outsw, - .mv_outsl = sh7751systemh_outsl, - -- .mv_readb = sh7751systemh_readb, -- .mv_readw = sh7751systemh_readw, -- .mv_readl = sh7751systemh_readl, -- .mv_writeb = sh7751systemh_writeb, -- .mv_writew = sh7751systemh_writew, -- .mv_writel = sh7751systemh_writel, -- -- .mv_isa_port2addr = sh7751systemh_isa_port2addr, -- - .mv_init_irq = init_7751systemh_IRQ, - }; - ALIAS_MV(7751systemh) -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/saturn/CVS/Entries linux-2.6.17/arch/sh/boards/saturn/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/saturn/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/saturn/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,6 @@ -+/Makefile/1.4/Thu Mar 11 18:08:03 2004/-ko/ -+/io.c/1.2/Sun May 4 19:29:47 2003/-ko/ -+/irq.c/1.4/Sun Oct 26 23:41:36 2003/-ko/ -+/setup.c/1.4/Sun Oct 26 23:41:36 2003/-ko/ -+/smp.c/1.3/Sun Oct 26 23:41:36 2003/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/saturn/CVS/Repository linux-2.6.17/arch/sh/boards/saturn/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/saturn/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/saturn/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/saturn -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/saturn/CVS/Root linux-2.6.17/arch/sh/boards/saturn/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/saturn/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/saturn/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7300/CVS/Entries linux-2.6.17/arch/sh/boards/se/7300/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/se/7300/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7300/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,6 @@ -+/Makefile/1.1/Fri Jun 11 13:02:47 2004// -+/io.c/1.3/Wed Jan 4 17:25:52 2006// -+/irq.c/1.2/Wed Jan 4 17:25:52 2006// -+/led.c/1.2/Wed Jan 4 17:25:52 2006// -+/setup.c/1.2/Wed Jan 4 17:25:52 2006// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7300/CVS/Repository linux-2.6.17/arch/sh/boards/se/7300/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/se/7300/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7300/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/se/7300 -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7300/CVS/Root linux-2.6.17/arch/sh/boards/se/7300/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/se/7300/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7300/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7300/io.c linux-2.6.17/arch/sh/boards/se/7300/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/7300/io.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7300/io.c 2006-07-12 16:54:20.000000000 +0000 -@@ -10,8 +10,8 @@ - - #include <linux/config.h> - #include <linux/kernel.h> --#include <asm/mach/se7300.h> - #include <asm/io.h> -+#include <asm/se7300.h> - - #define badio(fn, a) panic("bad i/o operation %s for %08lx.", #fn, a) - -@@ -100,6 +100,7 @@ - badio(inw, port); - } - -+#ifdef CONFIG_SMC91X - /* MSTLANEX01 LAN at 0xb400:0000 */ - static struct iop laniop = { - .start = 0x300, -@@ -111,6 +112,7 @@ - .outb = simple_outb, - .outw = simple_outw, - }; -+#endif - - /* NE2000 pc card NIC */ - static struct iop neiop = { -@@ -124,6 +126,7 @@ - .outw = simple_outw, - }; - -+#ifdef CONFIG_IDE - /* CF in CF slot */ - static struct iop cfiop = { - .base = 0xb0600000, -@@ -133,12 +136,13 @@ - .outb = pcc_outb, - .outw = simple_outw, - }; -+#endif - - static __inline__ struct iop * - port2iop(unsigned long port) - { - if (0) ; --#if defined(CONFIG_SMC91111) -+#if defined(CONFIG_SMC91X) - else if (laniop.check(&laniop, port)) - return &laniop; - #endif -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7300/irq.c linux-2.6.17/arch/sh/boards/se/7300/irq.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/7300/irq.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7300/irq.c 2006-07-12 16:54:20.000000000 +0000 -@@ -12,7 +12,7 @@ - #include <linux/irq.h> - #include <asm/irq.h> - #include <asm/io.h> --#include <asm/mach/se7300.h> -+#include <asm/se7300.h> - - /* - * Initialize IRQ setting -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7300/led.c linux-2.6.17/arch/sh/boards/se/7300/led.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/7300/led.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7300/led.c 2006-07-12 16:54:20.000000000 +0000 -@@ -13,24 +13,10 @@ - - #include <linux/config.h> - #include <linux/sched.h> --#include <asm/mach/se7300.h> -- --static void --mach_led(int position, int value) --{ -- volatile unsigned short *p = (volatile unsigned short *) PA_LED; -- -- if (value) { -- *p |= (1 << 8); -- } else { -- *p &= ~(1 << 8); -- } --} -- -+#include <asm/se7300.h> - - /* Cycle the LED's in the clasic Knightrider/Sun pattern */ --void --heartbeat_7300se(void) -+void heartbeat_7300se(void) - { - static unsigned int cnt = 0, period = 0; - volatile unsigned short *p = (volatile unsigned short *) PA_LED; -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7300/setup.c linux-2.6.17/arch/sh/boards/se/7300/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/7300/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7300/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -10,8 +10,7 @@ - #include <linux/config.h> - #include <linux/init.h> - #include <asm/machvec.h> --#include <asm/machvec_init.h> --#include <asm/mach/io.h> -+#include <asm/se7300.h> - - void heartbeat_7300se(void); - void init_7300se_IRQ(void); -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/73180/CVS/Entries linux-2.6.17/arch/sh/boards/se/73180/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/se/73180/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/73180/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,6 @@ -+/Makefile/1.1/Mon Jun 28 13:18:45 2004// -+/io.c/1.2/Tue May 31 14:00:25 2005// -+/irq.c/1.2/Tue May 31 14:00:25 2005// -+/led.c/1.2/Tue May 31 14:00:25 2005// -+/setup.c/1.3/Sun Jan 8 12:22:57 2006// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/73180/CVS/Repository linux-2.6.17/arch/sh/boards/se/73180/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/se/73180/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/73180/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/se/73180 -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/73180/CVS/Root linux-2.6.17/arch/sh/boards/se/73180/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/se/73180/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/73180/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/73180/io.c linux-2.6.17/arch/sh/boards/se/73180/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/73180/io.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/73180/io.c 2006-07-12 16:54:20.000000000 +0000 -@@ -100,6 +100,7 @@ - badio(inw, port); - } - -+#ifdef CONFIG_SMC91X - /* MSTLANEX01 LAN at 0xb400:0000 */ - static struct iop laniop = { - .start = 0x300, -@@ -111,6 +112,7 @@ - .outb = simple_outb, - .outw = simple_outw, - }; -+#endif - - /* NE2000 pc card NIC */ - static struct iop neiop = { -@@ -124,6 +126,7 @@ - .outw = simple_outw, - }; - -+#ifdef CONFIG_IDE - /* CF in CF slot */ - static struct iop cfiop = { - .base = 0xb0600000, -@@ -133,12 +136,13 @@ - .outb = pcc_outb, - .outw = simple_outw, - }; -+#endif - - static __inline__ struct iop * - port2iop(unsigned long port) - { - if (0) ; --#if defined(CONFIG_SMC91111) -+#if defined(CONFIG_SMC91X) - else if (laniop.check(&laniop, port)) - return &laniop; - #endif -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/73180/irq.c linux-2.6.17/arch/sh/boards/se/73180/irq.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/73180/irq.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/73180/irq.c 2006-07-12 16:54:20.000000000 +0000 -@@ -7,7 +7,6 @@ - * Modified for SH-Mobile SolutionEngine 73180 Support - * by YOSHII Takashi <yoshii-takashi@hitachi-ul.co.jp> - * -- * - */ - - #include <linux/config.h> -@@ -18,14 +17,6 @@ - #include <asm/mach/se73180.h> - - static int --intreq2irq(int i) --{ -- if (i == 5) -- return 10; -- return 32 + 7 - i; --} -- --static int - irq2intreq(int irq) - { - if (irq == 10) -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/73180/led.c linux-2.6.17/arch/sh/boards/se/73180/led.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/73180/led.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/73180/led.c 2006-07-12 16:54:20.000000000 +0000 -@@ -15,21 +15,8 @@ - #include <linux/sched.h> - #include <asm/mach/se73180.h> - --static void --mach_led(int position, int value) --{ -- volatile unsigned short *p = (volatile unsigned short *) PA_LED; -- -- if (value) { -- *p |= (1 << LED_SHIFT); -- } else { -- *p &= ~(1 << LED_SHIFT); -- } --} -- - /* Cycle the LED's in the clasic Knightrider/Sun pattern */ --void --heartbeat_73180se(void) -+void heartbeat_73180se(void) - { - static unsigned int cnt = 0, period = 0; - volatile unsigned short *p = (volatile unsigned short *) PA_LED; -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/73180/setup.c linux-2.6.17/arch/sh/boards/se/73180/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/73180/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/73180/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -12,8 +12,8 @@ - #include <linux/config.h> - #include <linux/init.h> - #include <asm/machvec.h> --#include <asm/machvec_init.h> --#include <asm/mach/io.h> -+#include <asm/se73180.h> -+#include <asm/irq.h> - - void heartbeat_73180se(void); - void init_73180se_IRQ(void); -@@ -52,6 +52,7 @@ - .mv_outsl = sh73180se_outsl, - - .mv_init_irq = init_73180se_IRQ, -+ .mv_irq_demux = shmse_irq_demux, - #ifdef CONFIG_HEARTBEAT - .mv_heartbeat = heartbeat_73180se, - #endif -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/770x/CVS/Entries linux-2.6.17/arch/sh/boards/se/770x/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/se/770x/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/770x/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,7 @@ -+/Makefile/1.5/Tue May 31 14:49:59 2005// -+/io.c/1.7/Sun Feb 5 21:55:29 2006// -+/irq.c/1.7/Wed Jan 4 17:53:54 2006/-ko/ -+/led.c/1.4/Wed Jan 4 17:53:54 2006// -+/mach.c/1.8/Wed Jan 4 17:53:54 2006// -+/setup.c/1.5/Wed Jan 4 17:53:54 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/770x/CVS/Repository linux-2.6.17/arch/sh/boards/se/770x/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/se/770x/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/770x/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/se/770x -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/770x/CVS/Root linux-2.6.17/arch/sh/boards/se/770x/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/se/770x/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/770x/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/770x/Makefile linux-2.6.17/arch/sh/boards/se/770x/Makefile ---- linux-2.6.17-vanilla/arch/sh/boards/se/770x/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/770x/Makefile 2006-07-12 16:54:20.000000000 +0000 -@@ -2,5 +2,6 @@ - # Makefile for the 770x SolutionEngine specific parts of the kernel - # - --obj-y := mach.o setup.o io.o irq.o led.o -+obj-y := mach.o setup.o io.o irq.o - -+obj-$(CONFIG_HEARTBEAT) += led.o -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/770x/io.c linux-2.6.17/arch/sh/boards/se/770x/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/770x/io.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/770x/io.c 2006-07-12 16:54:20.000000000 +0000 -@@ -1,4 +1,4 @@ --/* $Id: io.c,v 1.5 2004/02/22 23:08:43 kkojima Exp $ -+/* $Id: io.c,v 1.7 2006/02/05 21:55:29 lethal Exp $ - * - * linux/arch/sh/kernel/io_se.c - * -@@ -11,7 +11,7 @@ - #include <linux/kernel.h> - #include <linux/types.h> - #include <asm/io.h> --#include <asm/se/se.h> -+#include <asm/se.h> - - /* SH pcmcia io window base, start and end. */ - int sh_pcic_io_wbase = 0xb8400000; -@@ -20,11 +20,6 @@ - int sh_pcic_io_type; - int sh_pcic_io_dummy; - --static inline void delay(void) --{ -- ctrl_inw(0xa0000000); --} -- - /* MS7750 requires special versions of in*, out* routines, since - PC-like io ports are located at upper half byte of 16-bit word which - can be accessed only with 16-bit wide. */ -@@ -52,10 +47,6 @@ - return 1; - } - --#define maybebadio(name,port) \ -- printk("bad PC-like io %s for port 0x%lx at 0x%08x\n", \ -- #name, (port), (__u32) __builtin_return_address(0)) -- - unsigned char se_inb(unsigned long port) - { - if (sh_pcic_io_start <= port && port <= sh_pcic_io_stop) -@@ -76,7 +67,7 @@ - v = (*port2adr(port) >> 8); - else - v = (*port2adr(port))&0xff; -- delay(); -+ ctrl_delay(); - return v; - } - -@@ -86,13 +77,13 @@ - (sh_pcic_io_start <= port && port <= sh_pcic_io_stop)) - return *port2adr(port); - else -- maybebadio(inw, port); -+ maybebadio(port); - return 0; - } - - unsigned int se_inl(unsigned long port) - { -- maybebadio(inl, port); -+ maybebadio(port); - return 0; - } - -@@ -114,7 +105,7 @@ - *(port2adr(port)) = value << 8; - else - *(port2adr(port)) = value; -- delay(); -+ ctrl_delay(); - } - - void se_outw(unsigned short value, unsigned long port) -@@ -123,12 +114,12 @@ - (sh_pcic_io_start <= port && port <= sh_pcic_io_stop)) - *port2adr(port) = value; - else -- maybebadio(outw, port); -+ maybebadio(port); - } - - void se_outl(unsigned int value, unsigned long port) - { -- maybebadio(outl, port); -+ maybebadio(port); - } - - void se_insb(unsigned long port, void *addr, unsigned long count) -@@ -159,7 +150,7 @@ - - void se_insl(unsigned long port, void *addr, unsigned long count) - { -- maybebadio(insl, port); -+ maybebadio(port); - } - - void se_outsb(unsigned long port, const void *addr, unsigned long count) -@@ -190,37 +181,5 @@ - - void se_outsl(unsigned long port, const void *addr, unsigned long count) - { -- maybebadio(outsw, port); --} -- --/* Map ISA bus address to the real address. Only for PCMCIA. */ -- --/* ISA page descriptor. */ --static __u32 sh_isa_memmap[256]; -- --static int --sh_isa_mmap(__u32 start, __u32 length, __u32 offset) --{ -- int idx; -- -- if (start >= 0x100000 || (start & 0xfff) || (length != 0x1000)) -- return -1; -- -- idx = start >> 12; -- sh_isa_memmap[idx] = 0xb8000000 + (offset &~ 0xfff); --#if 0 -- printk("sh_isa_mmap: start %x len %x offset %x (idx %x paddr %x)\n", -- start, length, offset, idx, sh_isa_memmap[idx]); --#endif -- return 0; --} -- --unsigned long --se_isa_port2addr(unsigned long offset) --{ -- int idx; -- -- idx = (offset >> 12) & 0xff; -- offset &= 0xfff; -- return sh_isa_memmap[idx] + offset; -+ maybebadio(port); - } -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/770x/irq.c linux-2.6.17/arch/sh/boards/se/770x/irq.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/770x/irq.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/770x/irq.c 2006-07-12 16:54:20.000000000 +0000 -@@ -12,7 +12,7 @@ - #include <linux/irq.h> - #include <asm/irq.h> - #include <asm/io.h> --#include <asm/se/se.h> -+#include <asm/se.h> - - /* - * Initialize IRQ setting -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/770x/led.c linux-2.6.17/arch/sh/boards/se/770x/led.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/770x/led.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/770x/led.c 2006-07-12 16:54:20.000000000 +0000 -@@ -10,22 +10,8 @@ - */ - - #include <linux/config.h> --#include <asm/se/se.h> -- --static void mach_led(int position, int value) --{ -- volatile unsigned short* p = (volatile unsigned short*)PA_LED; -- -- if (value) { -- *p |= (1<<8); -- } else { -- *p &= ~(1<<8); -- } --} -- --#ifdef CONFIG_HEARTBEAT -- - #include <linux/sched.h> -+#include <asm/se.h> - - /* Cycle the LED's in the clasic Knightrider/Sun pattern */ - void heartbeat_se(void) -@@ -65,4 +51,3 @@ - *p = 1<<(bit+8); - - } --#endif /* CONFIG_HEARTBEAT */ -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/770x/mach.c linux-2.6.17/arch/sh/boards/se/770x/mach.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/770x/mach.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/770x/mach.c 2006-07-12 16:54:20.000000000 +0000 -@@ -14,12 +14,9 @@ - - #include <asm/machvec.h> - #include <asm/rtc.h> --#include <asm/machvec_init.h> -- --#include <asm/se/io.h> -+#include <asm/se.h> - - void heartbeat_se(void); --void setup_se(void); - void init_se_IRQ(void); - - /* -@@ -58,8 +55,6 @@ - .mv_outsw = se_outsw, - .mv_outsl = se_outsl, - -- .mv_isa_port2addr = se_isa_port2addr, -- - .mv_init_irq = init_se_IRQ, - #ifdef CONFIG_HEARTBEAT - .mv_heartbeat = heartbeat_se, -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/770x/setup.c linux-2.6.17/arch/sh/boards/se/770x/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/770x/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/770x/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -1,4 +1,4 @@ --/* $Id: setup.c,v 1.1.2.4 2002/03/02 21:57:07 lethal Exp $ -+/* $Id: setup.c,v 1.3 2003/05/04 19:29:47 lethal Exp $ - * - * linux/arch/sh/boards/se/770x/setup.c - * -@@ -15,8 +15,8 @@ - #include <linux/hdreg.h> - #include <linux/ide.h> - #include <asm/io.h> --#include <asm/se/se.h> --#include <asm/se/smc37c93x.h> -+#include <asm/se.h> -+#include <asm/smc37c93x.h> - - /* - * Configure the Super I/O chip -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7751/CVS/Entries linux-2.6.17/arch/sh/boards/se/7751/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/se/7751/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7751/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,8 @@ -+/Makefile/1.5/Tue May 31 15:16:49 2005// -+/io.c/1.6/Sun Feb 5 21:55:29 2006// -+/irq.c/1.3/Wed Jan 4 18:13:24 2006// -+/led.c/1.4/Wed Jan 4 18:13:24 2006// -+/mach.c/1.6/Wed Jan 4 18:13:24 2006// -+/pci.c/1.8/Fri Sep 24 15:16:19 2004// -+/setup.c/1.3/Wed Jan 4 18:13:24 2006// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7751/CVS/Repository linux-2.6.17/arch/sh/boards/se/7751/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/se/7751/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7751/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/se/7751 -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7751/CVS/Root linux-2.6.17/arch/sh/boards/se/7751/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/se/7751/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7751/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7751/Makefile linux-2.6.17/arch/sh/boards/se/7751/Makefile ---- linux-2.6.17-vanilla/arch/sh/boards/se/7751/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7751/Makefile 2006-07-12 16:54:20.000000000 +0000 -@@ -2,7 +2,8 @@ - # Makefile for the 7751 SolutionEngine specific parts of the kernel - # - --obj-y := mach.o setup.o io.o irq.o led.o -+obj-y := mach.o setup.o io.o irq.o - - obj-$(CONFIG_PCI) += pci.o -+obj-$(CONFIG_HEARTBEAT) += led.o - -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7751/io.c linux-2.6.17/arch/sh/boards/se/7751/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/7751/io.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7751/io.c 2006-07-12 16:54:20.000000000 +0000 -@@ -1,6 +1,4 @@ --/* -- * linux/arch/sh/kernel/io_7751se.c -- * -+/* - * Copyright (C) 2001 Ian da Silva, Jeremy Siegel - * Based largely on io_se.c. - * -@@ -10,96 +8,21 @@ - * placeholder code from io_se.c left in with the - * expectation of later SuperIO and PCMCIA access. - */ -- - #include <linux/kernel.h> - #include <linux/types.h> -+#include <linux/pci.h> - #include <asm/io.h> --#include <asm/se7751/se7751.h> -+#include <asm/se7751.h> - #include <asm/addrspace.h> - --#include <linux/pci.h> --#include "../../../drivers/pci/pci-sh7751.h" -- --#if 0 --/****************************************************************** -- * Variables from io_se.c, related to PCMCIA (not PCI); we're not -- * compiling them in, and have removed references from functions -- * which follow. [Many checked for IO ports in the range bounded -- * by sh_pcic_io_start/stop, and used sh_pcic_io_wbase as offset. -- * As start/stop are uninitialized, only port 0x0 would match?] -- * When used, remember to adjust names to avoid clash with io_se? -- *****************************************************************/ --/* SH pcmcia io window base, start and end. */ --int sh_pcic_io_wbase = 0xb8400000; --int sh_pcic_io_start; --int sh_pcic_io_stop; --int sh_pcic_io_type; --int sh_pcic_io_dummy; --/*************************************************************/ --#endif -- --/* -- * The 7751 Solution Engine uses the built-in PCI controller (PCIC) -- * of the 7751 processor, and has a SuperIO accessible via the PCI. -- * The board also includes a PCMCIA controller on its memory bus, -- * like the other Solution Engine boards. -- */ -- --#define PCIIOBR (volatile long *)PCI_REG(SH7751_PCIIOBR) --#define PCIMBR (volatile long *)PCI_REG(SH7751_PCIMBR) --#define PCI_IO_AREA SH7751_PCI_IO_BASE --#define PCI_MEM_AREA SH7751_PCI_CONFIG_BASE -- --#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK)) -- --#define maybebadio(name,port) \ -- printk("bad PC-like io %s for port 0x%lx at 0x%08x\n", \ -- #name, (port), (__u32) __builtin_return_address(0)) -- --static inline void delay(void) --{ -- ctrl_inw(0xa0000000); --} -- --static inline volatile __u16 * --port2adr(unsigned int port) -+static inline volatile u16 *port2adr(unsigned int port) - { - if (port >= 0x2000) - return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000)); --#if 0 -- else -- return (volatile __u16 *) (PA_SUPERIO + (port << 1)); --#endif -- maybebadio(name,(unsigned long)port); -+ maybebadio((unsigned long)port); - return (volatile __u16*)port; - } - --#if 0 --/* The 7751 Solution Engine seems to have everything hooked */ --/* up pretty normally (nothing on high-bytes only...) so this */ --/* shouldn't be needed */ --static inline int --shifted_port(unsigned long port) --{ -- /* For IDE registers, value is not shifted */ -- if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6) -- return 0; -- else -- return 1; --} --#endif -- --/* In case someone configures the kernel w/o PCI support: in that */ --/* scenario, don't ever bother to check for PCI-window addresses */ -- --/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */ --#if defined(CONFIG_PCI) --#define CHECK_SH7751_PCIIO(port) \ -- ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE))) --#else --#define CHECK_SH7751_PCIIO(port) (0) --#endif -- - /* - * General outline: remap really low stuff [eventually] to SuperIO, - * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO) -@@ -111,10 +34,10 @@ - { - if (PXSEG(port)) - return *(volatile unsigned char *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- return *(volatile unsigned char *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ return *(volatile unsigned char *)pci_ioaddr(port); - else -- return (*port2adr(port))&0xff; -+ return (*port2adr(port)) & 0xff; - } - - unsigned char sh7751se_inb_p(unsigned long port) -@@ -123,11 +46,11 @@ - - if (PXSEG(port)) - v = *(volatile unsigned char *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- v = *(volatile unsigned char *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ v = *(volatile unsigned char *)pci_ioaddr(port); - else -- v = (*port2adr(port))&0xff; -- delay(); -+ v = (*port2adr(port)) & 0xff; -+ ctrl_delay(); - return v; - } - -@@ -135,12 +58,12 @@ - { - if (PXSEG(port)) - return *(volatile unsigned short *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- return *(volatile unsigned short *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ return *(volatile unsigned short *)pci_ioaddr(port); - else if (port >= 0x2000) - return *port2adr(port); - else -- maybebadio(inw, port); -+ maybebadio(port); - return 0; - } - -@@ -148,12 +71,12 @@ - { - if (PXSEG(port)) - return *(volatile unsigned long *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- return *(volatile unsigned int *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ return *(volatile unsigned int *)pci_ioaddr(port); - else if (port >= 0x2000) - return *port2adr(port); - else -- maybebadio(inl, port); -+ maybebadio(port); - return 0; - } - -@@ -162,8 +85,8 @@ - - if (PXSEG(port)) - *(volatile unsigned char *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned char*)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned char*)pci_ioaddr(port)) = value; - else - *(port2adr(port)) = value; - } -@@ -172,73 +95,41 @@ - { - if (PXSEG(port)) - *(volatile unsigned char *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned char*)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned char*)pci_ioaddr(port)) = value; - else - *(port2adr(port)) = value; -- delay(); -+ ctrl_delay(); - } - - void sh7751se_outw(unsigned short value, unsigned long port) - { - if (PXSEG(port)) - *(volatile unsigned short *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned short *)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned short *)pci_ioaddr(port)) = value; - else if (port >= 0x2000) - *port2adr(port) = value; - else -- maybebadio(outw, port); -+ maybebadio(port); - } - - void sh7751se_outl(unsigned int value, unsigned long port) - { - if (PXSEG(port)) - *(volatile unsigned long *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned long*)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned long*)pci_ioaddr(port)) = value; - else -- maybebadio(outl, port); -+ maybebadio(port); - } - - void sh7751se_insl(unsigned long port, void *addr, unsigned long count) - { -- maybebadio(insl, port); -+ maybebadio(port); - } - - void sh7751se_outsl(unsigned long port, const void *addr, unsigned long count) - { -- maybebadio(outsw, port); --} -- --/* Map ISA bus address to the real address. Only for PCMCIA. */ -- --/* ISA page descriptor. */ --static __u32 sh_isa_memmap[256]; -- --#if 0 --static int --sh_isa_mmap(__u32 start, __u32 length, __u32 offset) --{ -- int idx; -- -- if (start >= 0x100000 || (start & 0xfff) || (length != 0x1000)) -- return -1; -- -- idx = start >> 12; -- sh_isa_memmap[idx] = 0xb8000000 + (offset &~ 0xfff); -- printk("sh_isa_mmap: start %x len %x offset %x (idx %x paddr %x)\n", -- start, length, offset, idx, sh_isa_memmap[idx]); -- return 0; --} --#endif -- --unsigned long --sh7751se_isa_port2addr(unsigned long offset) --{ -- int idx; -- -- idx = (offset >> 12) & 0xff; -- offset &= 0xfff; -- return sh_isa_memmap[idx] + offset; -+ maybebadio(port); - } -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7751/irq.c linux-2.6.17/arch/sh/boards/se/7751/irq.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/7751/irq.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7751/irq.c 2006-07-12 16:54:20.000000000 +0000 -@@ -13,7 +13,7 @@ - #include <linux/init.h> - #include <linux/irq.h> - #include <asm/irq.h> --#include <asm/se7751/se7751.h> -+#include <asm/se7751.h> - - /* - * Initialize IRQ setting -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7751/led.c linux-2.6.17/arch/sh/boards/se/7751/led.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/7751/led.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7751/led.c 2006-07-12 16:54:20.000000000 +0000 -@@ -8,24 +8,8 @@ - * - * This file contains Solution Engine specific LED code. - */ -- --#include <linux/config.h> --#include <asm/se7751/se7751.h> -- --static void mach_led(int position, int value) --{ -- volatile unsigned short* p = (volatile unsigned short*)PA_LED; -- -- if (value) { -- *p |= (1<<8); -- } else { -- *p &= ~(1<<8); -- } --} -- --#ifdef CONFIG_HEARTBEAT -- - #include <linux/sched.h> -+#include <asm/se7751.h> - - /* Cycle the LED's in the clasic Knightrider/Sun pattern */ - void heartbeat_7751se(void) -@@ -65,4 +49,3 @@ - *p = 1<<(bit+8); - - } --#endif /* CONFIG_HEARTBEAT */ -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7751/mach.c linux-2.6.17/arch/sh/boards/se/7751/mach.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/7751/mach.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7751/mach.c 2006-07-12 16:54:20.000000000 +0000 -@@ -11,12 +11,8 @@ - - #include <linux/config.h> - #include <linux/init.h> -- - #include <asm/machvec.h> --#include <asm/rtc.h> --#include <asm/machvec_init.h> -- --#include <asm/se7751/io.h> -+#include <asm/se7751.h> - - void heartbeat_7751se(void); - void init_7751se_IRQ(void); -@@ -45,8 +41,6 @@ - .mv_insl = sh7751se_insl, - .mv_outsl = sh7751se_outsl, - -- .mv_isa_port2addr = sh7751se_isa_port2addr, -- - .mv_init_irq = init_7751se_IRQ, - #ifdef CONFIG_HEARTBEAT - .mv_heartbeat = heartbeat_7751se, -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/7751/setup.c linux-2.6.17/arch/sh/boards/se/7751/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/se/7751/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/7751/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -1,4 +1,4 @@ --/* -+/* - * linux/arch/sh/kernel/setup_7751se.c - * - * Copyright (C) 2000 Kazumoto Kojima -@@ -12,11 +12,9 @@ - #include <linux/config.h> - #include <linux/init.h> - #include <linux/irq.h> -- --#include <linux/hdreg.h> - #include <linux/ide.h> - #include <asm/io.h> --#include <asm/se7751/se7751.h> -+#include <asm/se7751.h> - - #ifdef CONFIG_SH_KGDB - #include <asm/kgdb.h> -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/CVS/Entries linux-2.6.17/arch/sh/boards/se/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/se/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,4 @@ -+D/7300//// -+D/73180//// -+D/770x//// -+D/7751//// -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/CVS/Repository linux-2.6.17/arch/sh/boards/se/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/se/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/se -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/se/CVS/Root linux-2.6.17/arch/sh/boards/se/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/se/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/se/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/sh03/CVS/Entries linux-2.6.17/arch/sh/boards/sh03/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/sh03/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/sh03/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Makefile/1.1/Thu Oct 7 11:01:14 2004/-ko/ -+/led.c/1.1/Thu Oct 7 11:01:14 2004/-ko/ -+/setup.c/1.3/Sun Feb 5 21:55:29 2006/-ko/ -+/rtc.c/1.4/Sat Jul 8 20:16:05 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/sh03/CVS/Repository linux-2.6.17/arch/sh/boards/sh03/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/sh03/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/sh03/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/sh03 -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/sh03/CVS/Root linux-2.6.17/arch/sh/boards/sh03/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/sh03/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/sh03/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/sh03/rtc.c linux-2.6.17/arch/sh/boards/sh03/rtc.c ---- linux-2.6.17-vanilla/arch/sh/boards/sh03/rtc.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/sh03/rtc.c 2006-07-12 16:54:20.000000000 +0000 -@@ -10,9 +10,10 @@ - #include <linux/sched.h> - #include <linux/time.h> - #include <linux/bcd.h> --#include <asm/io.h> - #include <linux/rtc.h> - #include <linux/spinlock.h> -+#include <asm/io.h> -+#include <asm/rtc.h> - - #define RTC_BASE 0xb0000000 - #define RTC_SEC1 (RTC_BASE + 0) -@@ -34,8 +35,6 @@ - #define RTC_BUSY 1 - #define RTC_STOP 2 - --extern void (*rtc_get_time)(struct timespec *); --extern int (*rtc_set_time)(const time_t); - extern spinlock_t rtc_lock; - - unsigned long get_cmos_time(void) -@@ -128,6 +127,6 @@ - - void sh03_time_init(void) - { -- rtc_get_time = sh03_rtc_gettimeofday; -- rtc_set_time = sh03_rtc_settimeofday; -+ rtc_sh_get_time = sh03_rtc_gettimeofday; -+ rtc_sh_set_time = sh03_rtc_settimeofday; - } -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/sh03/setup.c linux-2.6.17/arch/sh/boards/sh03/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/sh03/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/sh03/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -8,22 +8,18 @@ - #include <linux/config.h> - #include <linux/init.h> - #include <linux/irq.h> --#include <linux/hdreg.h> --#include <linux/ide.h> - #include <asm/io.h> -+#include <asm/rtc.h> - #include <asm/sh03/io.h> - #include <asm/sh03/sh03.h> - #include <asm/addrspace.h> --#include "../../drivers/pci/pci-sh7751.h" -- --extern void (*board_time_init)(void); - - const char *get_system_type(void) - { -- return "Interface CTP/PCI-SH03)"; -+ return "Interface (CTP/PCI-SH03)"; - } - --void init_sh03_IRQ(void) -+static void init_sh03_IRQ(void) - { - ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR); - -@@ -35,31 +31,26 @@ - - extern void *cf_io_base; - --unsigned long sh03_isa_port2addr(unsigned long port) -+static void __iomem *sh03_ioport_map(unsigned long port, unsigned int size) - { - if (PXSEG(port)) -- return port; -+ return (void __iomem *)port; - /* CompactFlash (IDE) */ -- if (((port >= 0x1f0) && (port <= 0x1f7)) || (port == 0x3f6)) { -- return (unsigned long)cf_io_base + port; -- } -- return port + SH7751_PCI_IO_BASE; --} -+ if (((port >= 0x1f0) && (port <= 0x1f7)) || (port == 0x3f6)) -+ return (void __iomem *)((unsigned long)cf_io_base + port); - --/* -- * The Machine Vector -- */ -+ return (void __iomem *)(port + PCI_IO_BASE); -+} - - struct sh_machine_vector mv_sh03 __initmv = { - .mv_nr_irqs = 48, -- .mv_isa_port2addr = sh03_isa_port2addr, -+ .mv_ioport_map = sh03_ioport_map, - .mv_init_irq = init_sh03_IRQ, - - #ifdef CONFIG_HEARTBEAT - .mv_heartbeat = heartbeat_sh03, - #endif - }; -- - ALIAS_MV(sh03) - - /* arch/sh/boards/sh03/rtc.c */ -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/sh2000/CVS/Entries linux-2.6.17/arch/sh/boards/sh2000/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/sh2000/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/sh2000/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,3 @@ -+/Makefile/1.6/Thu Mar 11 18:08:03 2004// -+/setup.c/1.4/Mon Aug 4 01:57:07 2003// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/sh2000/CVS/Repository linux-2.6.17/arch/sh/boards/sh2000/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/sh2000/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/sh2000/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/sh2000 -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/sh2000/CVS/Root linux-2.6.17/arch/sh/boards/sh2000/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/sh2000/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/sh2000/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/snapgear/CVS/Entries linux-2.6.17/arch/sh/boards/snapgear/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/snapgear/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/snapgear/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Makefile/1.3/Thu Mar 11 18:08:03 2004// -+/io.c/1.5/Sun Feb 5 21:55:29 2006// -+/setup.c/1.4/Wed Jan 4 18:42:42 2006// -+/rtc.c/1.3/Sat Jul 8 20:16:05 2006// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/snapgear/CVS/Repository linux-2.6.17/arch/sh/boards/snapgear/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/snapgear/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/snapgear/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/snapgear -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/snapgear/CVS/Root linux-2.6.17/arch/sh/boards/snapgear/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/snapgear/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/snapgear/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/snapgear/io.c linux-2.6.17/arch/sh/boards/snapgear/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/snapgear/io.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/snapgear/io.c 2006-07-12 16:54:20.000000000 +0000 -@@ -1,6 +1,4 @@ --/* -- * linux/arch/sh/kernel/io_7751se.c -- * -+/* - * Copyright (C) 2002 David McCullough <davidm@snapgear.com> - * Copyright (C) 2001 Ian da Silva, Jeremy Siegel - * Based largely on io_se.c. -@@ -11,67 +9,22 @@ - * placeholder code from io_se.c left in with the - * expectation of later SuperIO and PCMCIA access. - */ -- - #include <linux/kernel.h> - #include <linux/types.h> - #include <linux/pci.h> - #include <asm/io.h> - #include <asm/addrspace.h> - --#include <asm/pci.h> --#include "../../drivers/pci/pci-sh7751.h" -- - #ifdef CONFIG_SH_SECUREEDGE5410 - unsigned short secureedge5410_ioport; - #endif - --/* -- * The SnapGear uses the built-in PCI controller (PCIC) -- * of the 7751 processor -- */ -- --#define PCIIOBR (volatile long *)PCI_REG(SH7751_PCIIOBR) --#define PCIMBR (volatile long *)PCI_REG(SH7751_PCIMBR) --#define PCI_IO_AREA SH7751_PCI_IO_BASE --#define PCI_MEM_AREA SH7751_PCI_CONFIG_BASE -- -- --#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK)) -- -- --#define maybebadio(name,port) \ -- printk("bad PC-like io %s for port 0x%lx at 0x%08x\n", \ -- #name, (port), (__u32) __builtin_return_address(0)) -- -- --static inline void delay(void) --{ -- ctrl_inw(0xa0000000); --} -- -- - static inline volatile __u16 *port2adr(unsigned int port) - { --#if 0 -- if (port >= 0x2000) -- return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000)); --#endif -- maybebadio(name,(unsigned long)port); -+ maybebadio((unsigned long)port); - return (volatile __u16*)port; - } - -- --/* In case someone configures the kernel w/o PCI support: in that */ --/* scenario, don't ever bother to check for PCI-window addresses */ -- --/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */ --#if defined(CONFIG_PCI) --#define CHECK_SH7751_PCIIO(port) \ -- ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE))) --#else --#define CHECK_SH7751_PCIIO(port) (0) --#endif -- - /* - * General outline: remap really low stuff [eventually] to SuperIO, - * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO) -@@ -79,148 +32,106 @@ - * should be way beyond the window, and is used w/o translation for - * compatibility. - */ -- - unsigned char snapgear_inb(unsigned long port) - { - if (PXSEG(port)) - return *(volatile unsigned char *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- return *(volatile unsigned char *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ return *(volatile unsigned char *)pci_ioaddr(port); - else -- return (*port2adr(port))&0xff; -+ return (*port2adr(port)) & 0xff; - } - -- - unsigned char snapgear_inb_p(unsigned long port) - { - unsigned char v; - - if (PXSEG(port)) - v = *(volatile unsigned char *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- v = *(volatile unsigned char *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ v = *(volatile unsigned char *)pci_ioaddr(port); - else -- v = (*port2adr(port))&0xff; -- delay(); -+ v = (*port2adr(port))&0xff; -+ ctrl_delay(); - return v; - } - -- - unsigned short snapgear_inw(unsigned long port) - { - if (PXSEG(port)) - return *(volatile unsigned short *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- return *(volatile unsigned short *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ return *(volatile unsigned short *)pci_ioaddr(port); - else if (port >= 0x2000) - return *port2adr(port); - else -- maybebadio(inw, port); -+ maybebadio(port); - return 0; - } - -- - unsigned int snapgear_inl(unsigned long port) - { - if (PXSEG(port)) - return *(volatile unsigned long *)port; -- else if (CHECK_SH7751_PCIIO(port)) -- return *(volatile unsigned int *)PCI_IOMAP(port); -+ else if (is_pci_ioaddr(port)) -+ return *(volatile unsigned int *)pci_ioaddr(port); - else if (port >= 0x2000) - return *port2adr(port); - else -- maybebadio(inl, port); -+ maybebadio(port); - return 0; - } - -- - void snapgear_outb(unsigned char value, unsigned long port) - { - - if (PXSEG(port)) - *(volatile unsigned char *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned char*)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned char*)pci_ioaddr(port)) = value; - else - *(port2adr(port)) = value; - } - -- - void snapgear_outb_p(unsigned char value, unsigned long port) - { - if (PXSEG(port)) - *(volatile unsigned char *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned char*)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned char*)pci_ioaddr(port)) = value; - else - *(port2adr(port)) = value; -- delay(); -+ ctrl_delay(); - } - -- - void snapgear_outw(unsigned short value, unsigned long port) - { - if (PXSEG(port)) - *(volatile unsigned short *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned short *)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned short *)pci_ioaddr(port)) = value; - else if (port >= 0x2000) - *port2adr(port) = value; - else -- maybebadio(outw, port); -+ maybebadio(port); - } - -- - void snapgear_outl(unsigned int value, unsigned long port) - { - if (PXSEG(port)) - *(volatile unsigned long *)port = value; -- else if (CHECK_SH7751_PCIIO(port)) -- *((unsigned long*)PCI_IOMAP(port)) = value; -+ else if (is_pci_ioaddr(port)) -+ *((unsigned long*)pci_ioaddr(port)) = value; - else -- maybebadio(outl, port); -+ maybebadio(port); - } - - void snapgear_insl(unsigned long port, void *addr, unsigned long count) - { -- maybebadio(insl, port); -+ maybebadio(port); - } - - void snapgear_outsl(unsigned long port, const void *addr, unsigned long count) - { -- maybebadio(outsw, port); --} -- --/* Map ISA bus address to the real address. Only for PCMCIA. */ -- -- --/* ISA page descriptor. */ --static __u32 sh_isa_memmap[256]; -- -- --#if 0 --static int sh_isa_mmap(__u32 start, __u32 length, __u32 offset) --{ -- int idx; -- -- if (start >= 0x100000 || (start & 0xfff) || (length != 0x1000)) -- return -1; -- -- idx = start >> 12; -- sh_isa_memmap[idx] = 0xb8000000 + (offset &~ 0xfff); --#if 0 -- printk("sh_isa_mmap: start %x len %x offset %x (idx %x paddr %x)\n", -- start, length, offset, idx, sh_isa_memmap[idx]); --#endif -- return 0; --} --#endif -- --unsigned long snapgear_isa_port2addr(unsigned long offset) --{ -- int idx; -- -- idx = (offset >> 12) & 0xff; -- offset &= 0xfff; -- return sh_isa_memmap[idx] + offset; -+ maybebadio(port); - } -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/snapgear/rtc.c linux-2.6.17/arch/sh/boards/snapgear/rtc.c ---- linux-2.6.17-vanilla/arch/sh/boards/snapgear/rtc.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/snapgear/rtc.c 2006-07-12 16:54:20.000000000 +0000 -@@ -17,10 +17,7 @@ - #include <linux/time.h> - #include <linux/rtc.h> - #include <linux/mc146818rtc.h> -- - #include <asm/io.h> --#include <asm/rtc.h> --#include <asm/mc146818rtc.h> - - /****************************************************************************/ - -@@ -168,11 +165,11 @@ - } - - if (use_ds1302) { -- rtc_get_time = snapgear_rtc_gettimeofday; -- rtc_set_time = snapgear_rtc_settimeofday; -+ rtc_sh_get_time = snapgear_rtc_gettimeofday; -+ rtc_sh_set_time = snapgear_rtc_settimeofday; - } else { -- rtc_get_time = sh_rtc_gettimeofday; -- rtc_set_time = sh_rtc_settimeofday; -+ rtc_sh_get_time = sh_rtc_gettimeofday; -+ rtc_sh_set_time = sh_rtc_settimeofday; - } - - printk("SnapGear RTC: using %s rtc.\n", use_ds1302 ? "ds1302" : "internal"); -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/snapgear/setup.c linux-2.6.17/arch/sh/boards/snapgear/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/snapgear/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/snapgear/setup.c 2006-07-12 16:54:20.000000000 +0000 -@@ -1,5 +1,4 @@ --/****************************************************************************/ --/* -+/* - * linux/arch/sh/boards/snapgear/setup.c - * - * Copyright (C) 2002 David McCullough <davidm@snapgear.com> -@@ -12,8 +11,6 @@ - * Modified for 7751 Solution Engine by - * Ian da Silva and Jeremy Siegel, 2001. - */ --/****************************************************************************/ -- - #include <linux/config.h> - #include <linux/init.h> - #include <linux/irq.h> -@@ -22,14 +19,13 @@ - #include <linux/delay.h> - #include <linux/module.h> - #include <linux/sched.h> -- - #include <asm/machvec.h> --#include <asm/mach/io.h> -+#include <asm/snapgear.h> - #include <asm/irq.h> - #include <asm/io.h> -+#include <asm/rtc.h> - #include <asm/cpu/timer.h> - --extern void (*board_time_init)(void); - extern void secureedge5410_rtc_init(void); - extern void pcibios_init(void); - -@@ -86,91 +82,6 @@ - make_ipr_irq(IRL3_IRQ, IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY); - } - --/****************************************************************************/ --/* -- * Fast poll interrupt simulator. -- */ -- --/* -- * Leave all of the fast timer/fast poll stuff commented out for now, since -- * it's not clear whether it actually works or not. Since it wasn't being used -- * at all in 2.4, we'll assume it's not sane for 2.6 either.. -- PFM -- */ --#if 0 --#define FAST_POLL 1000 --//#define FAST_POLL_INTR -- --#define FASTTIMER_IRQ 17 --#define FASTTIMER_IPR_ADDR INTC_IPRA --#define FASTTIMER_IPR_POS 2 --#define FASTTIMER_PRIORITY 3 -- --#ifdef FAST_POLL_INTR --#define TMU1_TCR_INIT 0x0020 --#else --#define TMU1_TCR_INIT 0 --#endif --#define TMU_TSTR_INIT 1 --#define TMU1_TCR_CALIB 0x0000 -- -- --#ifdef FAST_POLL_INTR --static void fast_timer_irq(int irq, void *dev_instance, struct pt_regs *regs) --{ -- unsigned long timer_status; -- timer_status = ctrl_inw(TMU1_TCR); -- timer_status &= ~0x100; -- ctrl_outw(timer_status, TMU1_TCR); --} --#endif -- --/* -- * return the current ticks on the fast timer -- */ -- --unsigned long fast_timer_count(void) --{ -- return(ctrl_inl(TMU1_TCNT)); --} -- --/* -- * setup a fast timer for profiling etc etc -- */ -- --static void setup_fast_timer() --{ -- unsigned long interval; -- --#ifdef FAST_POLL_INTR -- interval = (current_cpu_data.module_clock/4 + FAST_POLL/2) / FAST_POLL; -- -- make_ipr_irq(FASTTIMER_IRQ, FASTTIMER_IPR_ADDR, FASTTIMER_IPR_POS, -- FASTTIMER_PRIORITY); -- -- printk("SnapGear: %dHz fast timer on IRQ %d\n",FAST_POLL,FASTTIMER_IRQ); -- -- if (request_irq(FASTTIMER_IRQ, fast_timer_irq, 0, "SnapGear fast timer", -- NULL) != 0) -- printk("%s(%d): request_irq() failed?\n", __FILE__, __LINE__); --#else -- printk("SnapGear: fast timer running\n",FAST_POLL,FASTTIMER_IRQ); -- interval = 0xffffffff; --#endif -- -- ctrl_outb(ctrl_inb(TMU_TSTR) & ~0x2, TMU_TSTR); /* disable timer 1 */ -- ctrl_outw(TMU1_TCR_INIT, TMU1_TCR); -- ctrl_outl(interval, TMU1_TCOR); -- ctrl_outl(interval, TMU1_TCNT); -- ctrl_outb(ctrl_inb(TMU_TSTR) | 0x2, TMU_TSTR); /* enable timer 1 */ -- -- printk("Timer count 1 = 0x%x\n", fast_timer_count()); -- udelay(1000); -- printk("Timer count 2 = 0x%x\n", fast_timer_count()); --} --#endif -- --/****************************************************************************/ -- - const char *get_system_type(void) - { - return "SnapGear SecureEdge5410"; -@@ -197,8 +108,6 @@ - .mv_outw_p = snapgear_outw, - .mv_outl_p = snapgear_outl, - -- .mv_isa_port2addr = snapgear_isa_port2addr, -- - .mv_init_irq = init_snapgear_IRQ, - }; - ALIAS_MV(snapgear) -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/superh/CVS/Entries linux-2.6.17/arch/sh/boards/superh/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/superh/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/superh/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+D/microdev//// -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/superh/CVS/Repository linux-2.6.17/arch/sh/boards/superh/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/superh/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/superh/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/superh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/superh/CVS/Root linux-2.6.17/arch/sh/boards/superh/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/superh/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/superh/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/superh/microdev/CVS/Entries linux-2.6.17/arch/sh/boards/superh/microdev/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/superh/microdev/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/superh/microdev/CVS/Entries 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1,6 @@ -+/Makefile/1.1/Wed Aug 4 01:04:30 2004// -+/io.c/1.3/Wed Jan 4 17:14:53 2006// -+/irq.c/1.3/Sat Dec 17 23:34:08 2005// -+/led.c/1.1/Wed Aug 4 01:04:30 2004// -+/setup.c/1.7/Tue Jan 3 22:35:50 2006// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/superh/microdev/CVS/Repository linux-2.6.17/arch/sh/boards/superh/microdev/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/superh/microdev/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/superh/microdev/CVS/Repository 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/superh/microdev -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/superh/microdev/CVS/Root linux-2.6.17/arch/sh/boards/superh/microdev/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/superh/microdev/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/superh/microdev/CVS/Root 2006-07-12 16:54:20.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/superh/microdev/setup.c linux-2.6.17/arch/sh/boards/superh/microdev/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/superh/microdev/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/superh/microdev/setup.c 2006-07-12 16:54:21.000000000 +0000 -@@ -398,7 +398,7 @@ - /* enable the appropriate GPIO pins for IDE functionality: - * bit[0] In/Out 1==input; 0==output - * bit[1] Polarity 1==invert; 0==no invert -- * bit[2] Int Enb #1 1==Enable Combined IRQ #1; 0==disable -+ * bit[2] Int Enb #1 1==Enable Combined IRQ #1; 0==disable - * bit[3:4] Function Select 00==original; 01==Alternate Function #1 - */ - SMSC_WRITE_INDEXED(0x00, 0xc2); /* GP42 = nIDE1_OE */ -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/titan/CVS/Entries linux-2.6.17/arch/sh/boards/titan/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/titan/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/titan/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.1/Wed Nov 9 14:56:34 2005/-ko/ -+/io.c/1.6/Sun Feb 5 21:55:29 2006/-ko/ -+/setup.c/1.3/Tue Jan 3 22:51:46 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/titan/CVS/Repository linux-2.6.17/arch/sh/boards/titan/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/titan/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/titan/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/titan -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/titan/CVS/Root linux-2.6.17/arch/sh/boards/titan/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/titan/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/titan/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/titan/Makefile linux-2.6.17/arch/sh/boards/titan/Makefile ---- linux-2.6.17-vanilla/arch/sh/boards/titan/Makefile 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/titan/Makefile 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,5 @@ -+# -+# Makefile for the Nimble Microsystems TITAN specific parts of the kernel -+# -+ -+obj-y := setup.o io.o -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/titan/io.c linux-2.6.17/arch/sh/boards/titan/io.c ---- linux-2.6.17-vanilla/arch/sh/boards/titan/io.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/titan/io.c 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,126 @@ -+/* -+ * I/O routines for Titan -+ */ -+#include <linux/pci.h> -+#include <asm/machvec.h> -+#include <asm/addrspace.h> -+#include <asm/titan.h> -+#include <asm/io.h> -+ -+static inline unsigned int port2adr(unsigned int port) -+{ -+ maybebadio((unsigned long)port); -+ return port; -+} -+ -+u8 titan_inb(unsigned long port) -+{ -+ if (PXSEG(port)) -+ return ctrl_inb(port); -+ else if (is_pci_ioaddr(port)) -+ return ctrl_inb(pci_ioaddr(port)); -+ return ctrl_inw(port2adr(port)) & 0xff; -+} -+ -+u8 titan_inb_p(unsigned long port) -+{ -+ u8 v; -+ -+ if (PXSEG(port)) -+ v = ctrl_inb(port); -+ else if (is_pci_ioaddr(port)) -+ v = ctrl_inb(pci_ioaddr(port)); -+ else -+ v = ctrl_inw(port2adr(port)) & 0xff; -+ ctrl_delay(); -+ return v; -+} -+ -+u16 titan_inw(unsigned long port) -+{ -+ if (PXSEG(port)) -+ return ctrl_inw(port); -+ else if (is_pci_ioaddr(port)) -+ return ctrl_inw(pci_ioaddr(port)); -+ else if (port >= 0x2000) -+ return ctrl_inw(port2adr(port)); -+ else -+ maybebadio(port); -+ return 0; -+} -+ -+u32 titan_inl(unsigned long port) -+{ -+ if (PXSEG(port)) -+ return ctrl_inl(port); -+ else if (is_pci_ioaddr(port)) -+ return ctrl_inl(pci_ioaddr(port)); -+ else if (port >= 0x2000) -+ return ctrl_inw(port2adr(port)); -+ else -+ maybebadio(port); -+ return 0; -+} -+ -+void titan_outb(u8 value, unsigned long port) -+{ -+ if (PXSEG(port)) -+ ctrl_outb(value, port); -+ else if (is_pci_ioaddr(port)) -+ ctrl_outb(value, pci_ioaddr(port)); -+ else -+ ctrl_outw(value, port2adr(port)); -+} -+ -+void titan_outb_p(u8 value, unsigned long port) -+{ -+ if (PXSEG(port)) -+ ctrl_outb(value, port); -+ else if (is_pci_ioaddr(port)) -+ ctrl_outb(value, pci_ioaddr(port)); -+ else -+ ctrl_outw(value, port2adr(port)); -+ ctrl_delay(); -+} -+ -+void titan_outw(u16 value, unsigned long port) -+{ -+ if (PXSEG(port)) -+ ctrl_outw(value, port); -+ else if (is_pci_ioaddr(port)) -+ ctrl_outw(value, pci_ioaddr(port)); -+ else if (port >= 0x2000) -+ ctrl_outw(value, port2adr(port)); -+ else -+ maybebadio(port); -+} -+ -+void titan_outl(u32 value, unsigned long port) -+{ -+ if (PXSEG(port)) -+ ctrl_outl(value, port); -+ else if (is_pci_ioaddr(port)) -+ ctrl_outl(value, pci_ioaddr(port)); -+ else -+ maybebadio(port); -+} -+ -+void titan_insl(unsigned long port, void *dst, unsigned long count) -+{ -+ maybebadio(port); -+} -+ -+void titan_outsl(unsigned long port, const void *src, unsigned long count) -+{ -+ maybebadio(port); -+} -+ -+void __iomem *titan_ioport_map(unsigned long port, unsigned int size) -+{ -+ if (PXSEG(port) || is_pci_memaddr(port)) -+ return (void __iomem *)port; -+ else if (is_pci_ioaddr(port)) -+ return (void __iomem *)pci_ioaddr(port); -+ -+ return (void __iomem *)port2adr(port); -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/titan/setup.c linux-2.6.17/arch/sh/boards/titan/setup.c ---- linux-2.6.17-vanilla/arch/sh/boards/titan/setup.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/titan/setup.c 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,59 @@ -+/* -+ * Setup for Titan -+ */ -+ -+#include <linux/init.h> -+#include <asm/irq.h> -+#include <asm/titan.h> -+#include <asm/io.h> -+ -+extern void __init pcibios_init_platform(void); -+ -+static void __init init_titan_irq(void) -+{ -+ /* enable individual interrupt mode for externals */ -+ ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR); -+ -+ make_ipr_irq( TITAN_IRQ_WAN, IRL0_IPR_ADDR, IRL0_IPR_POS, IRL0_PRIORITY); /* PCIRQ0 */ -+ make_ipr_irq( TITAN_IRQ_LAN, IRL1_IPR_ADDR, IRL1_IPR_POS, IRL1_PRIORITY); /* PCIRQ1 */ -+ make_ipr_irq( TITAN_IRQ_MPCIA, IRL2_IPR_ADDR, IRL2_IPR_POS, IRL2_PRIORITY); /* PCIRQ2 */ -+ make_ipr_irq( TITAN_IRQ_USB, IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY); /* PCIRQ3 */ -+} -+ -+const char *get_system_type(void) -+{ -+ return "Titan"; -+} -+ -+int __init platform_setup(void) -+{ -+ printk("%s Platform Setup\n", get_system_type()); -+ return 0; -+} -+ -+struct sh_machine_vector mv_titan __initmv = { -+ .mv_nr_irqs = NR_IRQS, -+ -+ .mv_inb = titan_inb, -+ .mv_inw = titan_inw, -+ .mv_inl = titan_inl, -+ .mv_outb = titan_outb, -+ .mv_outw = titan_outw, -+ .mv_outl = titan_outl, -+ -+ .mv_inb_p = titan_inb_p, -+ .mv_inw_p = titan_inw, -+ .mv_inl_p = titan_inl, -+ .mv_outb_p = titan_outb_p, -+ .mv_outw_p = titan_outw, -+ .mv_outl_p = titan_outl, -+ -+ .mv_insl = titan_insl, -+ .mv_outsl = titan_outsl, -+ -+ .mv_ioport_map = titan_ioport_map, -+ -+ .mv_init_irq = init_titan_irq, -+ .mv_init_pci = pcibios_init_platform, -+}; -+ALIAS_MV(titan) -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/unknown/CVS/Entries linux-2.6.17/arch/sh/boards/unknown/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boards/unknown/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/unknown/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,3 @@ -+/Makefile/1.5/Tue Nov 8 19:55:58 2005// -+/setup.c/1.3/Tue Nov 8 19:55:58 2005// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/unknown/CVS/Repository linux-2.6.17/arch/sh/boards/unknown/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boards/unknown/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/unknown/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boards/unknown -diff -ruN linux-2.6.17-vanilla/arch/sh/boards/unknown/CVS/Root linux-2.6.17/arch/sh/boards/unknown/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boards/unknown/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boards/unknown/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boot/.cvsignore linux-2.6.17/arch/sh/boot/.cvsignore ---- linux-2.6.17-vanilla/arch/sh/boot/.cvsignore 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boot/.cvsignore 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+zImage -diff -ruN linux-2.6.17-vanilla/arch/sh/boot/CVS/Entries linux-2.6.17/arch/sh/boot/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boot/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boot/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,3 @@ -+/.cvsignore/1.1.1.1/Mon Oct 15 20:44:47 2001// -+/Makefile/1.9/Wed Jun 16 15:21:46 2004/-ko/ -+D/compressed//// -diff -ruN linux-2.6.17-vanilla/arch/sh/boot/CVS/Repository linux-2.6.17/arch/sh/boot/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boot/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boot/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boot -diff -ruN linux-2.6.17-vanilla/arch/sh/boot/CVS/Root linux-2.6.17/arch/sh/boot/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boot/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boot/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/boot/compressed/.cvsignore linux-2.6.17/arch/sh/boot/compressed/.cvsignore ---- linux-2.6.17-vanilla/arch/sh/boot/compressed/.cvsignore 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boot/compressed/.cvsignore 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,3 @@ -+vmlinux -+vmlinux.bin -+vmlinux.bin.gz -diff -ruN linux-2.6.17-vanilla/arch/sh/boot/compressed/CVS/Entries linux-2.6.17/arch/sh/boot/compressed/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/boot/compressed/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boot/compressed/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,6 @@ -+/.cvsignore/1.2/Sat May 10 03:22:05 2003// -+/Makefile/1.13/Mon Oct 25 10:41:02 2004// -+/head.S/1.3/Mon Aug 11 07:14:13 2003/-ko/ -+/misc.c/1.4/Mon May 31 21:20:29 2004/-ko/ -+/vmlinux.scr/1.1/Sat May 10 03:22:05 2003// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/boot/compressed/CVS/Repository linux-2.6.17/arch/sh/boot/compressed/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/boot/compressed/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boot/compressed/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/boot/compressed -diff -ruN linux-2.6.17-vanilla/arch/sh/boot/compressed/CVS/Root linux-2.6.17/arch/sh/boot/compressed/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/boot/compressed/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/boot/compressed/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/CVS/Entries linux-2.6.17/arch/sh/cchips/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/cchips/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,3 @@ -+/Kconfig/1.5/Wed Jan 4 16:34:31 2006// -+D/hd6446x//// -+D/voyagergx//// -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/CVS/Repository linux-2.6.17/arch/sh/cchips/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/cchips/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/cchips -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/CVS/Root linux-2.6.17/arch/sh/cchips/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/cchips/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/Kconfig linux-2.6.17/arch/sh/cchips/Kconfig ---- linux-2.6.17-vanilla/arch/sh/cchips/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/Kconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -65,6 +65,11 @@ - - Do not change this unless you know what you are doing. - -+config HD64461_IOBASE -+ hex "HD64461 start address" -+ depends on HD64461 -+ default "0xb0000000" -+ - config HD64461_ENABLER - bool "HD64461 PCMCIA enabler" - depends on HD64461 -@@ -73,7 +78,6 @@ - via the HD64461 companion chip. - Otherwise, say N. - -- - config HD64465_IOBASE - hex "HD64465 start address" - depends on HD64465 -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/CVS/Entries linux-2.6.17/arch/sh/cchips/hd6446x/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,2 @@ -+D/hd64461//// -+D/hd64465//// -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/CVS/Repository linux-2.6.17/arch/sh/cchips/hd6446x/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/cchips/hd6446x -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/CVS/Root linux-2.6.17/arch/sh/cchips/hd6446x/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64461/CVS/Entries linux-2.6.17/arch/sh/cchips/hd6446x/hd64461/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64461/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/hd64461/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.4/Thu Mar 11 18:08:03 2004// -+/io.c/1.8/Sun Feb 5 21:55:29 2006// -+/setup.c/1.7/Wed Jan 4 14:53:18 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64461/CVS/Repository linux-2.6.17/arch/sh/cchips/hd6446x/hd64461/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64461/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/hd64461/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/cchips/hd6446x/hd64461 -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64461/CVS/Root linux-2.6.17/arch/sh/cchips/hd6446x/hd64461/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64461/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/hd64461/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64461/io.c linux-2.6.17/arch/sh/cchips/hd6446x/hd64461/io.c ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64461/io.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/hd64461/io.c 2006-07-12 16:54:21.000000000 +0000 -@@ -1,12 +1,12 @@ - /* -- * $Id: io.c,v 1.6 2004/03/16 00:07:50 lethal Exp $ -+ * $Id: io.c,v 1.8 2006/02/05 21:55:29 lethal Exp $ - * Copyright (C) 2000 YAEGASHI Takeshi - * Typical I/O routines for HD64461 system. - */ - - #include <linux/config.h> - #include <asm/io.h> --#include <asm/hd64461/hd64461.h> -+#include <asm/hd64461.h> - - #define MEM_BASE (CONFIG_HD64461_IOBASE - HD64461_STBCR) - -@@ -55,11 +55,6 @@ - return 0xa0000000 + (port & 0x1fffffff); - } - --static inline void delay(void) --{ -- ctrl_inw(0xa0000000); --} -- - unsigned char hd64461_inb(unsigned long port) - { - return *(volatile unsigned char*)PORT2ADDR(port); -@@ -68,7 +63,7 @@ - unsigned char hd64461_inb_p(unsigned long port) - { - unsigned long v = *(volatile unsigned char*)PORT2ADDR(port); -- delay(); -+ ctrl_delay(); - return v; - } - -@@ -90,7 +85,7 @@ - void hd64461_outb_p(unsigned char b, unsigned long port) - { - *(volatile unsigned char*)PORT2ADDR(port) = b; -- delay(); -+ ctrl_delay(); - } - - void hd64461_outw(unsigned short b, unsigned long port) -@@ -145,13 +140,13 @@ - while(count--) *addr=*buf++; - } - --unsigned short hd64461_readw(unsigned long addr) -+unsigned short hd64461_readw(void __iomem *addr) - { -- return *(volatile unsigned short*)(MEM_BASE+addr); -+ return ctrl_inw(MEM_BASE+(unsigned long __force)addr); - } - --void hd64461_writew(unsigned short b, unsigned long addr) -+void hd64461_writew(unsigned short b, void __iomem *addr) - { -- *(volatile unsigned short*)(MEM_BASE+addr) = b; -+ ctrl_outw(b, MEM_BASE+(unsigned long __force)addr); - } - -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64461/setup.c linux-2.6.17/arch/sh/cchips/hd6446x/hd64461/setup.c ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64461/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/hd64461/setup.c 2006-07-12 16:54:21.000000000 +0000 -@@ -15,8 +15,7 @@ - - #include <asm/io.h> - #include <asm/irq.h> -- --#include <asm/hd64461/hd64461.h> -+#include <asm/hd64461.h> - - static void disable_hd64461_irq(unsigned int irq) - { -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64465/CVS/Entries linux-2.6.17/arch/sh/cchips/hd6446x/hd64465/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64465/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/hd64465/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Makefile/1.4/Thu Mar 11 18:08:03 2004// -+/gpio.c/1.4/Mon May 19 22:24:18 2003// -+/io.c/1.5/Tue Mar 8 06:46:56 2005/-ko/ -+/setup.c/1.5/Sun Aug 15 16:59:26 2004/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64465/CVS/Repository linux-2.6.17/arch/sh/cchips/hd6446x/hd64465/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64465/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/hd64465/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/cchips/hd6446x/hd64465 -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64465/CVS/Root linux-2.6.17/arch/sh/cchips/hd6446x/hd64465/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/cchips/hd6446x/hd64465/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/hd6446x/hd64465/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/CVS/Entries linux-2.6.17/arch/sh/cchips/voyagergx/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/voyagergx/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Makefile/1.2/Tue May 31 14:33:28 2005/-ko/ -+/consistent.c/1.5/Fri Jan 27 16:11:52 2006/-ko/ -+/irq.c/1.5/Wed Feb 8 22:08:10 2006/-ko/ -+/setup.c/1.2/Wed Feb 8 22:08:10 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/CVS/Repository linux-2.6.17/arch/sh/cchips/voyagergx/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/voyagergx/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/cchips/voyagergx -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/CVS/Root linux-2.6.17/arch/sh/cchips/voyagergx/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/voyagergx/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/Makefile linux-2.6.17/arch/sh/cchips/voyagergx/Makefile ---- linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/voyagergx/Makefile 2006-07-12 16:54:21.000000000 +0000 -@@ -4,5 +4,5 @@ - - obj-y := irq.o setup.o - --obj-$(CONFIG_USB_OHCI_HCD) += consistent.o -+obj-$(CONFIG_USB_SM501) += consistent.o - -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/irq.c linux-2.6.17/arch/sh/cchips/voyagergx/irq.c ---- linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/irq.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/voyagergx/irq.c 2006-07-12 16:54:21.000000000 +0000 -@@ -33,8 +33,7 @@ - - #include <asm/io.h> - #include <asm/irq.h> --#include <asm/rts7751r2d/rts7751r2d.h> --#include <asm/rts7751r2d/voyagergx_reg.h> -+#include <asm/mach/voyagergx_reg.h> - - static void disable_voyagergx_irq(unsigned int irq) - { -diff -ruN linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/setup.c linux-2.6.17/arch/sh/cchips/voyagergx/setup.c ---- linux-2.6.17-vanilla/arch/sh/cchips/voyagergx/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/cchips/voyagergx/setup.c 2006-07-12 16:54:21.000000000 +0000 -@@ -13,7 +13,7 @@ - #include <linux/init.h> - #include <linux/module.h> - #include <asm/io.h> --#include <asm/rts7751r2d/voyagergx_reg.h> -+#include <asm/mach/voyagergx_reg.h> - - static int __init setup_voyagergx(void) - { -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/CVS/Entries linux-2.6.17/arch/sh/configs/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/configs/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,19 @@ -+/adx_defconfig/1.3/Wed Oct 5 21:34:14 2005// -+/cqreek_defconfig/1.3/Wed Oct 5 21:34:14 2005// -+/dreamcast_defconfig/1.8/Wed Jan 4 19:03:16 2006// -+/hs7751rvoip_defconfig/1.4/Wed Jan 4 19:03:16 2006// -+/landisk_defconfig/1.4/Sun Dec 18 00:20:37 2005/-ko/ -+/microdev_defconfig/1.7/Wed Jan 4 19:03:16 2006/-ko/ -+/rts7751r2d_defconfig/1.6/Wed Jan 4 19:03:16 2006/-ko/ -+/se7300_defconfig/1.5/Wed Jan 4 19:03:16 2006// -+/se73180_defconfig/1.7/Sun Jan 8 12:22:57 2006// -+/se7705_defconfig/1.4/Wed Jan 4 19:03:16 2006/-ko/ -+/se7750_defconfig/1.4/Wed Jan 4 19:03:16 2006/-ko/ -+/se7751_defconfig/1.4/Wed Jan 4 19:03:16 2006// -+/sh03_defconfig/1.4/Wed Jan 4 19:03:16 2006/-ko/ -+/snapgear_defconfig/1.5/Wed Jan 4 19:03:16 2006// -+/systemh_defconfig/1.4/Wed Jan 4 19:03:16 2006// -+/r7780rp_defconfig/1.2/Wed Jul 5 14:50:34 2006/-ko/ -+/hp6xx_defconfig/1.8/Thu Jul 6 12:38:07 2006/-ko/ -+/titan_defconfig/1.3/Thu Jul 6 18:40:37 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/CVS/Repository linux-2.6.17/arch/sh/configs/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/configs/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/configs -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/CVS/Root linux-2.6.17/arch/sh/configs/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/configs/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/adx_defconfig linux-2.6.17/arch/sh/configs/adx_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/adx_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/adx_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:26 2005 -+# Linux kernel version: 2.6.13-sh -+# Thu Oct 6 00:20:11 2005 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -16,6 +16,7 @@ - CONFIG_EXPERIMENTAL=y - CONFIG_CLEAN_COMPILE=y - CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup -@@ -25,22 +26,23 @@ - # CONFIG_SYSVIPC is not set - # CONFIG_BSD_PROCESS_ACCT is not set - # CONFIG_SYSCTL is not set --# CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_HOTPLUG is not set - # CONFIG_IKCONFIG is not set - # CONFIG_EMBEDDED is not set - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -57,9 +59,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -76,46 +76,90 @@ - # CONFIG_SH_RTS7751R2D is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set --# CONFIG_CPU_SH3 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - CONFIG_CPU_SUBTYPE_SH7750=y -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - # CONFIG_CPU_SUBTYPE_SH7751 is not set -+# CONFIG_CPU_SUBTYPE_SH7751R is not set - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --# CONFIG_CMDLINE_BOOL is not set -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x08000000 - CONFIG_MEMORY_SIZE=0x00400000 --CONFIG_MEMORY_SET=y --# CONFIG_MEMORY_OVERRIDE is not set - CONFIG_CF_ENABLER=y - # CONFIG_CF_AREA5 is not set - CONFIG_CF_AREA6=y - CONFIG_CF_BASE_ADDR=0xb8000000 -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y - CONFIG_SH_RTC=y - CONFIG_SH_FPU=y --CONFIG_ZERO_PAGE_OFFSET=0x00001000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 --CONFIG_CPU_LITTLE_ENDIAN=y --# CONFIG_PREEMPT is not set --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set - # CONFIG_SH_STORE_QUEUES is not set --# CONFIG_SMP is not set --CONFIG_SH_PCLK_CALC=y --CONFIG_SH_PCLK_FREQ=50000000 -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+# CONFIG_SH_PCLK_FREQ_BOOL is not set - - # - # CPU Frequency scaling -@@ -133,18 +177,29 @@ - # CONFIG_HD6446X_SERIES is not set - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features - # --# CONFIG_PCI is not set -+# CONFIG_KEXEC is not set -+# CONFIG_PREEMPT is not set -+# CONFIG_SMP is not set - - # --# PCCARD (PCMCIA/CardBus) support -+# Boot options - # --# CONFIG_PCCARD is not set -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+# CONFIG_CMDLINE_BOOL is not set -+ -+# -+# Bus options -+# -+# CONFIG_PCI is not set - - # --# PC-card bridges -+# PCCARD (PCMCIA/CardBus) support - # -+# CONFIG_PCCARD is not set - - # - # PCI Hotplug Support -@@ -158,9 +213,9 @@ - # CONFIG_BINFMT_MISC is not set - - # --# SH initrd options -+# Networking - # --# CONFIG_EMBEDDED_RAMDISK is not set -+# CONFIG_NET is not set - - # - # Device Drivers -@@ -250,6 +305,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -260,9 +316,8 @@ - # - - # --# Networking support -+# Network device support - # --# CONFIG_NET is not set - # CONFIG_NETPOLL is not set - # CONFIG_NET_POLL_CONTROLLER is not set - -@@ -293,18 +348,6 @@ - # CONFIG_INPUT_EVBUG is not set - - # --# Input I/O drivers --# --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y --CONFIG_SERIO=y --CONFIG_SERIO_I8042=y --CONFIG_SERIO_SERPORT=y --# CONFIG_SERIO_CT82C710 is not set --CONFIG_SERIO_LIBPS2=y --# CONFIG_SERIO_RAW is not set -- --# - # Input Device Drivers - # - CONFIG_INPUT_KEYBOARD=y -@@ -322,6 +365,16 @@ - # CONFIG_INPUT_MISC is not set - - # -+# Hardware I/O ports -+# -+CONFIG_SERIO=y -+CONFIG_SERIO_I8042=y -+CONFIG_SERIO_SERPORT=y -+CONFIG_SERIO_LIBPS2=y -+# CONFIG_SERIO_RAW is not set -+# CONFIG_GAMEPORT is not set -+ -+# - # Character devices - # - CONFIG_VT=y -@@ -359,13 +412,17 @@ - # - # Ftape, the floppy tape device driver - # --# CONFIG_DRM is not set - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+ -+# - # I2C support - # - # CONFIG_I2C is not set -+# CONFIG_I2C_SENSOR is not set - - # - # Dallas's 1-wire bus -@@ -373,6 +430,12 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - -@@ -393,7 +456,6 @@ - # - # Console display driver support - # --CONFIG_VGA_CONSOLE=y - CONFIG_DUMMY_CONSOLE=y - - # -@@ -408,10 +470,6 @@ - # CONFIG_USB_ARCH_HAS_OHCI is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information --# -- --# - # USB Gadget Support - # - # CONFIG_USB_GADGET is not set -@@ -424,17 +482,22 @@ - # - # InfiniBand support - # --# CONFIG_INFINIBAND is not set -+ -+# -+# SN Devices -+# - - # - # File systems - # - CONFIG_EXT2_FS=y - # CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set - # CONFIG_EXT3_FS is not set - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -+# CONFIG_FS_POSIX_ACL is not set - - # - # XFS support -@@ -442,6 +505,7 @@ - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set - # CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - # CONFIG_AUTOFS_FS is not set -@@ -466,7 +530,6 @@ - CONFIG_PROC_FS=y - # CONFIG_PROC_KCORE is not set - CONFIG_SYSFS=y --# CONFIG_DEVFS_FS is not set - # CONFIG_DEVPTS_FS_XATTR is not set - # CONFIG_TMPFS is not set - # CONFIG_HUGETLBFS is not set -@@ -509,7 +572,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - CONFIG_SH_STANDARD_BIOS=y - # CONFIG_EARLY_SCIF_CONSOLE is not set -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/cqreek_defconfig linux-2.6.17/arch/sh/configs/cqreek_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/cqreek_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/cqreek_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:38 2005 -+# Linux kernel version: 2.6.13-sh -+# Thu Oct 6 00:20:14 2005 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -16,6 +16,7 @@ - CONFIG_EXPERIMENTAL=y - CONFIG_CLEAN_COMPILE=y - CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup -@@ -25,22 +26,23 @@ - # CONFIG_SYSVIPC is not set - # CONFIG_BSD_PROCESS_ACCT is not set - # CONFIG_SYSCTL is not set --# CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_HOTPLUG is not set - # CONFIG_IKCONFIG is not set - # CONFIG_EMBEDDED is not set - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -57,9 +59,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - CONFIG_SH_CQREEK=y - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -76,41 +76,86 @@ - # CONFIG_SH_RTS7751R2D is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH3=y --# CONFIG_CPU_SH4 is not set -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - CONFIG_CPU_SUBTYPE_SH7708=y - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - # CONFIG_CPU_SUBTYPE_SH7751 is not set -+# CONFIG_CPU_SUBTYPE_SH7751R is not set - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --# CONFIG_CMDLINE_BOOL is not set -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x0c000000 - CONFIG_MEMORY_SIZE=0x00400000 --# CONFIG_MEMORY_OVERRIDE is not set -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y - CONFIG_SH_RTC=y - CONFIG_SH_DSP=y - CONFIG_SH_ADC=y --CONFIG_ZERO_PAGE_OFFSET=0x00001000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 --CONFIG_CPU_LITTLE_ENDIAN=y --# CONFIG_PREEMPT is not set --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set --# CONFIG_SMP is not set --CONFIG_SH_PCLK_CALC=y --CONFIG_SH_PCLK_FREQ=1193182 -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+# CONFIG_SH_PCLK_FREQ_BOOL is not set - - # - # CPU Frequency scaling -@@ -128,18 +173,29 @@ - # CONFIG_HD6446X_SERIES is not set - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features - # --# CONFIG_PCI is not set -+# CONFIG_KEXEC is not set -+# CONFIG_PREEMPT is not set -+# CONFIG_SMP is not set - - # --# PCCARD (PCMCIA/CardBus) support -+# Boot options - # --# CONFIG_PCCARD is not set -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+# CONFIG_CMDLINE_BOOL is not set -+ -+# -+# Bus options -+# -+# CONFIG_PCI is not set - - # --# PC-card bridges -+# PCCARD (PCMCIA/CardBus) support - # -+# CONFIG_PCCARD is not set - - # - # PCI Hotplug Support -@@ -153,9 +209,9 @@ - # CONFIG_BINFMT_MISC is not set - - # --# SH initrd options -+# Networking - # --# CONFIG_EMBEDDED_RAMDISK is not set -+# CONFIG_NET is not set - - # - # Device Drivers -@@ -245,6 +301,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -255,9 +312,8 @@ - # - - # --# Networking support -+# Network device support - # --# CONFIG_NET is not set - # CONFIG_NETPOLL is not set - # CONFIG_NET_POLL_CONTROLLER is not set - -@@ -288,18 +344,6 @@ - # CONFIG_INPUT_EVBUG is not set - - # --# Input I/O drivers --# --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y --CONFIG_SERIO=y --CONFIG_SERIO_I8042=y --CONFIG_SERIO_SERPORT=y --# CONFIG_SERIO_CT82C710 is not set --CONFIG_SERIO_LIBPS2=y --# CONFIG_SERIO_RAW is not set -- --# - # Input Device Drivers - # - CONFIG_INPUT_KEYBOARD=y -@@ -317,6 +361,16 @@ - # CONFIG_INPUT_MISC is not set - - # -+# Hardware I/O ports -+# -+CONFIG_SERIO=y -+CONFIG_SERIO_I8042=y -+CONFIG_SERIO_SERPORT=y -+CONFIG_SERIO_LIBPS2=y -+# CONFIG_SERIO_RAW is not set -+# CONFIG_GAMEPORT is not set -+ -+# - # Character devices - # - CONFIG_VT=y -@@ -354,13 +408,17 @@ - # - # Ftape, the floppy tape device driver - # --# CONFIG_DRM is not set - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+ -+# - # I2C support - # - # CONFIG_I2C is not set -+# CONFIG_I2C_SENSOR is not set - - # - # Dallas's 1-wire bus -@@ -368,6 +426,12 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - -@@ -388,7 +452,6 @@ - # - # Console display driver support - # --CONFIG_VGA_CONSOLE=y - CONFIG_DUMMY_CONSOLE=y - - # -@@ -403,10 +466,6 @@ - # CONFIG_USB_ARCH_HAS_OHCI is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information --# -- --# - # USB Gadget Support - # - # CONFIG_USB_GADGET is not set -@@ -419,17 +478,22 @@ - # - # InfiniBand support - # --# CONFIG_INFINIBAND is not set -+ -+# -+# SN Devices -+# - - # - # File systems - # - CONFIG_EXT2_FS=y - # CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set - # CONFIG_EXT3_FS is not set - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -+# CONFIG_FS_POSIX_ACL is not set - - # - # XFS support -@@ -437,6 +501,7 @@ - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set - # CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - # CONFIG_AUTOFS_FS is not set -@@ -461,7 +526,6 @@ - CONFIG_PROC_FS=y - # CONFIG_PROC_KCORE is not set - CONFIG_SYSFS=y --# CONFIG_DEVFS_FS is not set - # CONFIG_DEVPTS_FS_XATTR is not set - # CONFIG_TMPFS is not set - # CONFIG_HUGETLBFS is not set -@@ -504,7 +568,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - CONFIG_SH_STANDARD_BIOS=y - # CONFIG_EARLY_PRINTK is not set -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/dreamcast_defconfig linux-2.6.17/arch/sh/configs/dreamcast_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/dreamcast_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/dreamcast_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:40 2005 -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 14:20:29 2006 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -17,11 +17,13 @@ - CONFIG_CLEAN_COMPILE=y - CONFIG_BROKEN_ON_SMP=y - CONFIG_LOCK_KERNEL=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup - # - CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y - CONFIG_SWAP=y - CONFIG_SYSVIPC=y - # CONFIG_POSIX_MQUEUE is not set -@@ -29,22 +31,26 @@ - # CONFIG_BSD_PROCESS_ACCT_V3 is not set - CONFIG_SYSCTL=y - # CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - CONFIG_HOTPLUG=y - CONFIG_KOBJECT_UEVENT=y - # CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+CONFIG_CC_OPTIMIZE_FOR_SIZE=y - CONFIG_EMBEDDED=y - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y --CONFIG_CC_OPTIMIZE_FOR_SIZE=y - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -58,6 +64,24 @@ - CONFIG_KMOD=y - - # -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+CONFIG_IOSCHED_CFQ=y -+CONFIG_DEFAULT_AS=y -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+# CONFIG_DEFAULT_NOOP is not set -+CONFIG_DEFAULT_IOSCHED="anticipatory" -+ -+# - # System type - # - # CONFIG_SH_SOLUTION_ENGINE is not set -@@ -67,9 +91,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -86,48 +108,97 @@ - # CONFIG_SH_RTS7751R2D is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set --# CONFIG_CPU_SH3 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - CONFIG_CPU_SUBTYPE_SH7750=y -+CONFIG_CPU_SUBTYPE_SH7091=y -+CONFIG_CPU_SUBTYPE_SH7750R=y -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - # CONFIG_CPU_SUBTYPE_SH7751 is not set -+# CONFIG_CPU_SUBTYPE_SH7751R is not set - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y - CONFIG_HUGETLB_PAGE_SIZE_64K=y - # CONFIG_HUGETLB_PAGE_SIZE_1MB is not set --# CONFIG_CMDLINE_BOOL is not set -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x0c000000 - CONFIG_MEMORY_SIZE=0x01000000 --CONFIG_MEMORY_SET=y --# CONFIG_MEMORY_OVERRIDE is not set --CONFIG_SH_FPU=y --CONFIG_ZERO_PAGE_OFFSET=0x00001000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 -+ -+# -+# Processor features -+# - CONFIG_CPU_LITTLE_ENDIAN=y --CONFIG_PREEMPT=y --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --CONFIG_SH_OCRAM=y -+CONFIG_SH_FPU=y - CONFIG_SH_STORE_QUEUES=y --# CONFIG_SMP is not set --CONFIG_SH_PCLK_CALC=y -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+CONFIG_SH_PCLK_FREQ_BOOL=y - CONFIG_SH_PCLK_FREQ=49876504 - - # - # CPU Frequency scaling - # - CONFIG_CPU_FREQ=y -+CONFIG_CPU_FREQ_TABLE=y - # CONFIG_CPU_FREQ_DEBUG is not set - CONFIG_CPU_FREQ_STAT=y - # CONFIG_CPU_FREQ_STAT_DETAILS is not set -@@ -137,16 +208,13 @@ - CONFIG_CPU_FREQ_GOV_POWERSAVE=y - CONFIG_CPU_FREQ_GOV_USERSPACE=y - # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set --CONFIG_CPU_FREQ_TABLE=y --CONFIG_SH_CPU_FREQ=y -+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set -+# CONFIG_SH_CPU_FREQ is not set - - # - # DMA support - # --CONFIG_SH_DMA=y --CONFIG_NR_ONCHIP_DMA_CHANNELS=4 --CONFIG_NR_DMA_CHANNELS_BOOL=y --CONFIG_NR_DMA_CHANNELS=9 -+# CONFIG_SH_DMA is not set - - # - # Companion Chips -@@ -154,14 +222,28 @@ - # CONFIG_HD6446X_SERIES is not set - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features -+# -+# CONFIG_KEXEC is not set -+CONFIG_PREEMPT=y -+# CONFIG_SMP is not set -+ -+# -+# Boot options -+# -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+CONFIG_CMDLINE_BOOL=y -+CONFIG_CMDLINE="console=ttySC1,115200 panic=3" -+ -+# -+# Bus options - # --CONFIG_MAPLE=y - CONFIG_PCI=y - # CONFIG_SH_PCIDMA_NONCOHERENT is not set - CONFIG_PCI_AUTO=y - CONFIG_PCI_LEGACY_PROC=y --CONFIG_PCI_NAMES=y - - # - # PCCARD (PCMCIA/CardBus) support -@@ -169,10 +251,6 @@ - # CONFIG_PCCARD is not set - - # --# PC-card bridges --# -- --# - # PCI Hotplug Support - # - # CONFIG_HOTPLUG_PCI is not set -@@ -185,9 +263,72 @@ - # CONFIG_BINFMT_MISC is not set - - # --# SH initrd options -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+CONFIG_PACKET=y -+# CONFIG_PACKET_MMAP is not set -+CONFIG_UNIX=y -+# CONFIG_NET_KEY is not set -+CONFIG_INET=y -+# CONFIG_IP_MULTICAST is not set -+# CONFIG_IP_ADVANCED_ROUTER is not set -+CONFIG_IP_FIB_HASH=y -+# CONFIG_IP_PNP is not set -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE is not set -+# CONFIG_ARPD is not set -+# CONFIG_SYN_COOKIES is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+# CONFIG_INET_TUNNEL is not set -+CONFIG_INET_DIAG=y -+CONFIG_INET_TCP_DIAG=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+# CONFIG_IPV6 is not set -+# CONFIG_NETFILTER is not set -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+# CONFIG_ATM is not set -+# CONFIG_BRIDGE is not set -+# CONFIG_VLAN_8021Q is not set -+# CONFIG_DECNET is not set -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+ -+# -+# QoS and/or fair queueing - # --# CONFIG_EMBEDDED_RAMDISK is not set -+# CONFIG_NET_SCHED is not set -+ -+# -+# Network testing -+# -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+# CONFIG_IEEE80211 is not set - - # - # Device Drivers -@@ -201,6 +342,11 @@ - # CONFIG_FW_LOADER is not set - - # -+# Connector - unified userspace <-> kernelspace linker -+# -+# CONFIG_CONNECTOR is not set -+ -+# - # Memory Technology Devices (MTD) - # - # CONFIG_MTD is not set -@@ -217,7 +363,6 @@ - # - # Block devices - # --# CONFIG_BLK_DEV_FD is not set - # CONFIG_BLK_CPQ_DA is not set - # CONFIG_BLK_CPQ_CISS_DA is not set - # CONFIG_BLK_DEV_DAC960 is not set -@@ -226,21 +371,9 @@ - # CONFIG_BLK_DEV_LOOP is not set - # CONFIG_BLK_DEV_NBD is not set - # CONFIG_BLK_DEV_SX8 is not set --CONFIG_BLK_DEV_RAM=y -+# CONFIG_BLK_DEV_RAM is not set - CONFIG_BLK_DEV_RAM_COUNT=16 --CONFIG_BLK_DEV_RAM_SIZE=1024 --CONFIG_BLK_DEV_INITRD=y --CONFIG_INITRAMFS_SOURCE="" --# CONFIG_LBD is not set - # CONFIG_CDROM_PKTCDVD is not set -- --# --# IO Schedulers --# --CONFIG_IOSCHED_NOOP=y --CONFIG_IOSCHED_AS=y --CONFIG_IOSCHED_DEADLINE=y --CONFIG_IOSCHED_CFQ=y - # CONFIG_ATA_OVER_ETH is not set - - # -@@ -251,6 +384,7 @@ - # - # SCSI device support - # -+# CONFIG_RAID_ATTRS is not set - # CONFIG_SCSI is not set - - # -@@ -261,6 +395,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -273,70 +408,8 @@ - # CONFIG_I2O is not set - - # --# Networking support --# --CONFIG_NET=y -- --# --# Networking options --# --CONFIG_PACKET=y --# CONFIG_PACKET_MMAP is not set --# CONFIG_NETLINK_DEV is not set --CONFIG_UNIX=y --# CONFIG_NET_KEY is not set --CONFIG_INET=y --# CONFIG_IP_MULTICAST is not set --# CONFIG_IP_ADVANCED_ROUTER is not set --CONFIG_IP_PNP=y --CONFIG_IP_PNP_DHCP=y --# CONFIG_IP_PNP_BOOTP is not set --# CONFIG_IP_PNP_RARP is not set --# CONFIG_NET_IPIP is not set --# CONFIG_NET_IPGRE is not set --# CONFIG_ARPD is not set --# CONFIG_SYN_COOKIES is not set --# CONFIG_INET_AH is not set --# CONFIG_INET_ESP is not set --# CONFIG_INET_IPCOMP is not set --# CONFIG_INET_TUNNEL is not set --CONFIG_IP_TCPDIAG=y --# CONFIG_IP_TCPDIAG_IPV6 is not set --# CONFIG_IPV6 is not set --# CONFIG_NETFILTER is not set -- --# --# SCTP Configuration (EXPERIMENTAL) --# --# CONFIG_IP_SCTP is not set --# CONFIG_ATM is not set --# CONFIG_BRIDGE is not set --# CONFIG_VLAN_8021Q is not set --# CONFIG_DECNET is not set --# CONFIG_LLC2 is not set --# CONFIG_IPX is not set --# CONFIG_ATALK is not set --# CONFIG_X25 is not set --# CONFIG_LAPB is not set --# CONFIG_NET_DIVERT is not set --# CONFIG_ECONET is not set --# CONFIG_WAN_ROUTER is not set -- --# --# QoS and/or fair queueing -+# Network device support - # --# CONFIG_NET_SCHED is not set --# CONFIG_NET_CLS_ROUTE is not set -- --# --# Network testing --# --# CONFIG_NET_PKTGEN is not set --# CONFIG_NETPOLL is not set --# CONFIG_NET_POLL_CONTROLLER is not set --# CONFIG_HAMRADIO is not set --# CONFIG_IRDA is not set --# CONFIG_BT is not set - CONFIG_NETDEVICES=y - # CONFIG_DUMMY is not set - # CONFIG_BONDING is not set -@@ -349,6 +422,11 @@ - # CONFIG_ARCNET is not set - - # -+# PHY device support -+# -+# CONFIG_PHYLIB is not set -+ -+# - # Ethernet (10 or 100Mbit) - # - CONFIG_NET_ETHERNET=y -@@ -356,6 +434,7 @@ - # CONFIG_STNIC is not set - # CONFIG_HAPPYMEAL is not set - # CONFIG_SUNGEM is not set -+# CONFIG_CASSINI is not set - # CONFIG_NET_VENDOR_3COM is not set - # CONFIG_SMC91X is not set - -@@ -364,6 +443,7 @@ - # - # CONFIG_NET_TULIP is not set - # CONFIG_HP100 is not set -+# CONFIG_NE2000 is not set - CONFIG_NET_PCI=y - # CONFIG_PCNET32 is not set - # CONFIG_AMD8111_ETH is not set -@@ -398,13 +478,17 @@ - # CONFIG_HAMACHI is not set - # CONFIG_YELLOWFIN is not set - # CONFIG_R8169 is not set -+# CONFIG_SIS190 is not set -+# CONFIG_SKGE is not set - # CONFIG_SK98LIN is not set - # CONFIG_VIA_VELOCITY is not set - # CONFIG_TIGON3 is not set -+# CONFIG_BNX2 is not set - - # - # Ethernet (10000 Mbit) - # -+# CONFIG_CHELSIO_T1 is not set - # CONFIG_IXGB is not set - # CONFIG_S2IO is not set - -@@ -428,6 +512,8 @@ - # CONFIG_SLIP is not set - # CONFIG_SHAPER is not set - # CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set - - # - # ISDN subsystem -@@ -457,19 +543,6 @@ - # CONFIG_INPUT_EVBUG is not set - - # --# Input I/O drivers --# --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y --CONFIG_SERIO=y --# CONFIG_SERIO_I8042 is not set --# CONFIG_SERIO_SERPORT is not set --# CONFIG_SERIO_CT82C710 is not set --# CONFIG_SERIO_PCIPS2 is not set --CONFIG_SERIO_LIBPS2=y --# CONFIG_SERIO_RAW is not set -- --# - # Input Device Drivers - # - CONFIG_INPUT_KEYBOARD=y -@@ -478,17 +551,26 @@ - # CONFIG_KEYBOARD_LKKBD is not set - # CONFIG_KEYBOARD_XTKBD is not set - # CONFIG_KEYBOARD_NEWTON is not set --# CONFIG_KEYBOARD_MAPLE is not set - CONFIG_INPUT_MOUSE=y - CONFIG_MOUSE_PS2=y - # CONFIG_MOUSE_SERIAL is not set --# CONFIG_MOUSE_MAPLE is not set - # CONFIG_MOUSE_VSXXXAA is not set - # CONFIG_INPUT_JOYSTICK is not set - # CONFIG_INPUT_TOUCHSCREEN is not set - # CONFIG_INPUT_MISC is not set - - # -+# Hardware I/O ports -+# -+CONFIG_SERIO=y -+# CONFIG_SERIO_I8042 is not set -+# CONFIG_SERIO_SERPORT is not set -+# CONFIG_SERIO_PCIPS2 is not set -+CONFIG_SERIO_LIBPS2=y -+# CONFIG_SERIO_RAW is not set -+# CONFIG_GAMEPORT is not set -+ -+# - # Character devices - # - CONFIG_VT=y -@@ -508,6 +590,7 @@ - CONFIG_SERIAL_SH_SCI_CONSOLE=y - CONFIG_SERIAL_CORE=y - CONFIG_SERIAL_CORE_CONSOLE=y -+# CONFIG_SERIAL_JSM is not set - CONFIG_UNIX98_PTYS=y - CONFIG_LEGACY_PTYS=y - CONFIG_LEGACY_PTY_COUNT=256 -@@ -547,6 +630,12 @@ - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# - # I2C support - # - # CONFIG_I2C is not set -@@ -557,10 +646,21 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - - # -+# Multimedia Capabilities Port drivers -+# -+ -+# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -@@ -574,6 +674,10 @@ - # Graphics support - # - CONFIG_FB=y -+CONFIG_FB_CFB_FILLRECT=y -+CONFIG_FB_CFB_COPYAREA=y -+CONFIG_FB_CFB_IMAGEBLIT=y -+# CONFIG_FB_MACMODES is not set - # CONFIG_FB_MODE_HELPERS is not set - # CONFIG_FB_TILEBLITTING is not set - # CONFIG_FB_CIRRUS is not set -@@ -583,6 +687,8 @@ - # CONFIG_FB_IMSTT is not set - CONFIG_FB_PVR2=y - # CONFIG_FB_EPSON1355 is not set -+# CONFIG_FB_S1D13XXX is not set -+# CONFIG_FB_NVIDIA is not set - # CONFIG_FB_RIVA is not set - # CONFIG_FB_MATROX is not set - # CONFIG_FB_RADEON_OLD is not set -@@ -595,24 +701,27 @@ - # CONFIG_FB_KYRO is not set - # CONFIG_FB_3DFX is not set - # CONFIG_FB_VOODOO1 is not set -+# CONFIG_FB_CYBLA is not set - # CONFIG_FB_TRIDENT is not set - # CONFIG_FB_VIRTUAL is not set - - # - # Console display driver support - # --# CONFIG_VGA_CONSOLE is not set - CONFIG_DUMMY_CONSOLE=y - CONFIG_FRAMEBUFFER_CONSOLE=y -+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set - CONFIG_FONTS=y - CONFIG_FONT_8x8=y - CONFIG_FONT_8x16=y - # CONFIG_FONT_6x11 is not set -+# CONFIG_FONT_7x14 is not set - # CONFIG_FONT_PEARL_8x8 is not set - # CONFIG_FONT_ACORN_8x8 is not set - # CONFIG_FONT_MINI_4x6 is not set - # CONFIG_FONT_SUN8x16 is not set - # CONFIG_FONT_SUN12x22 is not set -+# CONFIG_FONT_10x18 is not set - - # - # Logo configuration -@@ -634,12 +743,12 @@ - # - # USB support - # --# CONFIG_USB is not set - CONFIG_USB_ARCH_HAS_HCD=y - CONFIG_USB_ARCH_HAS_OHCI=y -+# CONFIG_USB is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' - # - - # -@@ -658,6 +767,10 @@ - # CONFIG_INFINIBAND is not set - - # -+# SN Devices -+# -+ -+# - # File systems - # - # CONFIG_EXT2_FS is not set -@@ -665,17 +778,16 @@ - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -- --# --# XFS support --# -+# CONFIG_FS_POSIX_ACL is not set - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set --CONFIG_ROMFS_FS=y -+# CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set --CONFIG_DNOTIFY=y -+# CONFIG_DNOTIFY is not set - # CONFIG_AUTOFS_FS is not set - # CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set - - # - # CD-ROM/DVD Filesystems -@@ -696,15 +808,11 @@ - CONFIG_PROC_FS=y - CONFIG_PROC_KCORE=y - CONFIG_SYSFS=y --CONFIG_DEVFS_FS=y --CONFIG_DEVFS_MOUNT=y --# CONFIG_DEVFS_DEBUG is not set --# CONFIG_DEVPTS_FS_XATTR is not set - CONFIG_TMPFS=y --# CONFIG_TMPFS_XATTR is not set - CONFIG_HUGETLBFS=y - CONFIG_HUGETLB_PAGE=y - CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set - - # - # Miscellaneous filesystems -@@ -716,7 +824,7 @@ - # CONFIG_BEFS_FS is not set - # CONFIG_BFS_FS is not set - # CONFIG_EFS_FS is not set --CONFIG_CRAMFS=y -+# CONFIG_CRAMFS is not set - # CONFIG_VXFS_FS is not set - # CONFIG_HPFS_FS is not set - # CONFIG_QNX4FS_FS is not set -@@ -726,22 +834,14 @@ - # - # Network File Systems - # --CONFIG_NFS_FS=y --CONFIG_NFS_V3=y --# CONFIG_NFS_V4 is not set --# CONFIG_NFS_DIRECTIO is not set -+# CONFIG_NFS_FS is not set - # CONFIG_NFSD is not set --CONFIG_ROOT_NFS=y --CONFIG_LOCKD=y --CONFIG_LOCKD_V4=y --CONFIG_SUNRPC=y --# CONFIG_RPCSEC_GSS_KRB5 is not set --# CONFIG_RPCSEC_GSS_SPKM3 is not set - # CONFIG_SMB_FS is not set - # CONFIG_CIFS is not set - # CONFIG_NCP_FS is not set - # CONFIG_CODA_FS is not set - # CONFIG_AFS_FS is not set -+# CONFIG_9P_FS is not set - - # - # Partition Types -@@ -758,13 +858,14 @@ - # Profiling support - # - CONFIG_PROFILING=y --CONFIG_OPROFILE=y -+# CONFIG_OPROFILE is not set - - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set --CONFIG_DEBUG_PREEMPT=y -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - # CONFIG_SH_STANDARD_BIOS is not set - # CONFIG_EARLY_SCIF_CONSOLE is not set -@@ -789,6 +890,6 @@ - # Library routines - # - # CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set - CONFIG_CRC32=y - # CONFIG_LIBCRC32C is not set --CONFIG_ZLIB_INFLATE=y -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/hp6xx_defconfig linux-2.6.17/arch/sh/configs/hp6xx_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/hp6xx_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/hp6xx_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,11 +1,12 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.15-sh --# Wed Jan 4 15:32:56 2006 -+# Linux kernel version: 2.6.17 -+# Thu Jul 6 09:58:22 2006 - # - CONFIG_SUPERH=y --CONFIG_UID16=y - CONFIG_RWSEM_GENERIC_SPINLOCK=y -+CONFIG_GENERIC_FIND_NEXT_BIT=y -+CONFIG_GENERIC_HWEIGHT=y - CONFIG_GENERIC_HARDIRQS=y - CONFIG_GENERIC_IRQ_PROBE=y - CONFIG_GENERIC_CALIBRATE_DELAY=y -@@ -14,8 +15,6 @@ - # Code maturity level options - # - CONFIG_EXPERIMENTAL=y --# CONFIG_CLEAN_COMPILE is not set --CONFIG_BROKEN=y - CONFIG_BROKEN_ON_SMP=y - CONFIG_INIT_ENV_ARG_LIMIT=32 - -@@ -28,25 +27,26 @@ - # CONFIG_SYSVIPC is not set - # CONFIG_BSD_PROCESS_ACCT is not set - # CONFIG_SYSCTL is not set --CONFIG_HOTPLUG=y - # CONFIG_IKCONFIG is not set -+# CONFIG_RELAY is not set - CONFIG_INITRAMFS_SOURCE="" -+CONFIG_UID16=y - CONFIG_CC_OPTIMIZE_FOR_SIZE=y - # CONFIG_EMBEDDED is not set - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_HOTPLUG=y - CONFIG_PRINTK=y - CONFIG_BUG=y -+CONFIG_ELF_CORE=y - CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y - CONFIG_SHMEM=y --CONFIG_CC_ALIGN_FUNCTIONS=0 --CONFIG_CC_ALIGN_LABELS=0 --CONFIG_CC_ALIGN_LOOPS=0 --CONFIG_CC_ALIGN_JUMPS=0 -+CONFIG_SLAB=y - # CONFIG_TINY_SHMEM is not set - CONFIG_BASE_SMALL=0 -+# CONFIG_SLOB is not set - - # - # Loadable module support -@@ -57,6 +57,8 @@ - # Block layer - # - # CONFIG_LBD is not set -+# CONFIG_BLK_DEV_IO_TRACE is not set -+# CONFIG_LSF is not set - - # - # IO Schedulers -@@ -96,6 +98,7 @@ - # CONFIG_SH_SECUREEDGE5410 is not set - # CONFIG_SH_HS7751RVOIP is not set - # CONFIG_SH_RTS7751R2D is not set -+# CONFIG_SH_R7780RP is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set - # CONFIG_SH_LANDISK is not set -@@ -175,12 +178,14 @@ - CONFIG_SH_RTC=y - # CONFIG_SH_DSP is not set - CONFIG_SH_ADC=y -+CONFIG_CPU_HAS_INTEVT=y -+CONFIG_CPU_HAS_PINT_IRQ=y -+CONFIG_CPU_HAS_SR_RB=y - - # - # Timer support - # - CONFIG_SH_TMU=y --CONFIG_SH_PCLK_FREQ_BOOL=y - CONFIG_SH_PCLK_FREQ=22110000 - - # -@@ -194,7 +199,6 @@ - CONFIG_SH_DMA=y - CONFIG_NR_ONCHIP_DMA_CHANNELS=4 - # CONFIG_NR_DMA_CHANNELS_BOOL is not set --# CONFIG_DMA_PAGE_OPS is not set - - # - # Companion Chips -@@ -257,6 +261,14 @@ - # CONFIG_BINFMT_MISC is not set - - # -+# Power management options (EXPERIMENTAL) -+# -+CONFIG_PM=y -+CONFIG_PM_LEGACY=y -+# CONFIG_PM_DEBUG is not set -+CONFIG_APM=y -+ -+# - # Networking - # - # CONFIG_NET is not set -@@ -315,7 +327,7 @@ - # CONFIG_BLK_DEV_IDE_SATA is not set - CONFIG_BLK_DEV_IDEDISK=y - # CONFIG_IDEDISK_MULTI_MODE is not set --# CONFIG_BLK_DEV_IDECS is not set -+CONFIG_BLK_DEV_IDECS=y - # CONFIG_BLK_DEV_IDECD is not set - # CONFIG_BLK_DEV_IDETAPE is not set - # CONFIG_BLK_DEV_IDEFLOPPY is not set -@@ -356,19 +368,12 @@ - # - # IEEE 1394 (FireWire) support - # --# CONFIG_IEEE1394 is not set - - # - # I2O device support - # - - # --# Network device support --# --# CONFIG_NETPOLL is not set --# CONFIG_NET_POLL_CONTROLLER is not set -- --# - # ISDN subsystem - # - -@@ -390,17 +395,31 @@ - CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 - CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 - # CONFIG_INPUT_JOYDEV is not set --# CONFIG_INPUT_TSDEV is not set -+CONFIG_INPUT_TSDEV=y -+CONFIG_INPUT_TSDEV_SCREEN_X=240 -+CONFIG_INPUT_TSDEV_SCREEN_Y=320 - # CONFIG_INPUT_EVDEV is not set - # CONFIG_INPUT_EVBUG is not set - - # - # Input Device Drivers - # --# CONFIG_INPUT_KEYBOARD is not set -+CONFIG_INPUT_KEYBOARD=y -+# CONFIG_KEYBOARD_ATKBD is not set -+# CONFIG_KEYBOARD_SUNKBD is not set -+# CONFIG_KEYBOARD_LKKBD is not set -+# CONFIG_KEYBOARD_XTKBD is not set -+# CONFIG_KEYBOARD_NEWTON is not set -+# CONFIG_KEYBOARD_HP620 is not set -+CONFIG_KEYBOARD_HP680=y - # CONFIG_INPUT_MOUSE is not set - # CONFIG_INPUT_JOYSTICK is not set --# CONFIG_INPUT_TOUCHSCREEN is not set -+CONFIG_INPUT_TOUCHSCREEN=y -+# CONFIG_TOUCHSCREEN_GUNZE is not set -+# CONFIG_TOUCHSCREEN_ELO is not set -+# CONFIG_TOUCHSCREEN_MTOUCH is not set -+# CONFIG_TOUCHSCREEN_MK712 is not set -+CONFIG_TOUCHSCREEN_HP600=y - # CONFIG_INPUT_MISC is not set - - # -@@ -471,6 +490,12 @@ - # CONFIG_I2C is not set - - # -+# SPI support -+# -+# CONFIG_SPI is not set -+# CONFIG_SPI_MASTER is not set -+ -+# - # Dallas's 1-wire bus - # - # CONFIG_W1 is not set -@@ -480,6 +505,7 @@ - # - CONFIG_HWMON=y - # CONFIG_HWMON_VID is not set -+# CONFIG_SENSORS_F71805F is not set - # CONFIG_HWMON_DEBUG_CHIP is not set - - # -@@ -487,13 +513,10 @@ - # - - # --# Multimedia Capabilities Port drivers --# -- --# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -+CONFIG_VIDEO_V4L2=y - - # - # Digital Video Broadcasting Devices -@@ -507,6 +530,7 @@ - CONFIG_FB_CFB_COPYAREA=y - CONFIG_FB_CFB_IMAGEBLIT=y - # CONFIG_FB_MACMODES is not set -+CONFIG_FB_FIRMWARE_EDID=y - # CONFIG_FB_MODE_HELPERS is not set - # CONFIG_FB_TILEBLITTING is not set - # CONFIG_FB_EPSON1355 is not set -@@ -553,7 +577,6 @@ - # Open Sound System - # - CONFIG_SOUND_PRIME=y --# CONFIG_OBSOLETE_OSS_DRIVER is not set - # CONFIG_SOUND_MSNDCLAS is not set - # CONFIG_SOUND_MSNDPIN is not set - CONFIG_SOUND_SH_DAC_AUDIO=y -@@ -564,6 +587,7 @@ - # - # CONFIG_USB_ARCH_HAS_HCD is not set - # CONFIG_USB_ARCH_HAS_OHCI is not set -+# CONFIG_USB_ARCH_HAS_EHCI is not set - - # - # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -@@ -580,13 +604,30 @@ - # CONFIG_MMC is not set - - # -+# LED devices -+# -+# CONFIG_NEW_LEDS is not set -+ -+# -+# LED drivers -+# -+ -+# -+# LED Triggers -+# -+ -+# - # InfiniBand support - # --# CONFIG_INFINIBAND is not set - - # --# SN Devices -+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) -+# -+ -+# -+# Real Time Clock - # -+# CONFIG_RTC_CLASS is not set - - # - # File systems -@@ -595,7 +636,6 @@ - # CONFIG_EXT2_FS_XATTR is not set - # CONFIG_EXT2_FS_XIP is not set - # CONFIG_EXT3_FS is not set --# CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set - # CONFIG_FS_POSIX_ACL is not set -@@ -635,7 +675,7 @@ - # CONFIG_HUGETLBFS is not set - # CONFIG_HUGETLB_PAGE is not set - CONFIG_RAMFS=y --# CONFIG_RELAYFS_FS is not set -+# CONFIG_CONFIGFS_FS is not set - - # - # Miscellaneous filesystems -@@ -713,9 +753,11 @@ - # Kernel hacking - # - # CONFIG_PRINTK_TIME is not set -+# CONFIG_MAGIC_SYSRQ is not set - # CONFIG_DEBUG_KERNEL is not set - CONFIG_LOG_BUF_SHIFT=14 --# CONFIG_FRAME_POINTER is not set -+# CONFIG_DEBUG_FS is not set -+# CONFIG_UNWIND_INFO is not set - # CONFIG_SH_STANDARD_BIOS is not set - # CONFIG_KGDB is not set - -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/hs7751rvoip_defconfig linux-2.6.17/arch/sh/configs/hs7751rvoip_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/hs7751rvoip_defconfig 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/hs7751rvoip_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,884 @@ -+# -+# Automatically generated make config: don't edit -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 17:02:02 2006 -+# -+CONFIG_SUPERH=y -+CONFIG_UID16=y -+CONFIG_RWSEM_GENERIC_SPINLOCK=y -+CONFIG_GENERIC_HARDIRQS=y -+CONFIG_GENERIC_IRQ_PROBE=y -+CONFIG_GENERIC_CALIBRATE_DELAY=y -+ -+# -+# Code maturity level options -+# -+CONFIG_EXPERIMENTAL=y -+CONFIG_CLEAN_COMPILE=y -+CONFIG_BROKEN_ON_SMP=y -+CONFIG_LOCK_KERNEL=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 -+ -+# -+# General setup -+# -+CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y -+CONFIG_SWAP=y -+CONFIG_SYSVIPC=y -+CONFIG_POSIX_MQUEUE=y -+CONFIG_BSD_PROCESS_ACCT=y -+# CONFIG_BSD_PROCESS_ACCT_V3 is not set -+CONFIG_SYSCTL=y -+# CONFIG_AUDIT is not set -+CONFIG_HOTPLUG=y -+CONFIG_KOBJECT_UEVENT=y -+# CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -+CONFIG_EMBEDDED=y -+# CONFIG_KALLSYMS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y -+CONFIG_FUTEX=y -+CONFIG_EPOLL=y -+CONFIG_SHMEM=y -+CONFIG_CC_ALIGN_FUNCTIONS=0 -+CONFIG_CC_ALIGN_LABELS=0 -+CONFIG_CC_ALIGN_LOOPS=0 -+CONFIG_CC_ALIGN_JUMPS=0 -+# CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 -+ -+# -+# Loadable module support -+# -+CONFIG_MODULES=y -+CONFIG_MODULE_UNLOAD=y -+# CONFIG_MODULE_FORCE_UNLOAD is not set -+CONFIG_OBSOLETE_MODPARM=y -+# CONFIG_MODVERSIONS is not set -+# CONFIG_MODULE_SRCVERSION_ALL is not set -+CONFIG_KMOD=y -+ -+# -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+CONFIG_IOSCHED_CFQ=y -+CONFIG_DEFAULT_AS=y -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+# CONFIG_DEFAULT_NOOP is not set -+CONFIG_DEFAULT_IOSCHED="anticipatory" -+ -+# -+# System type -+# -+# CONFIG_SH_SOLUTION_ENGINE is not set -+# CONFIG_SH_7751_SOLUTION_ENGINE is not set -+# CONFIG_SH_7300_SOLUTION_ENGINE is not set -+# CONFIG_SH_73180_SOLUTION_ENGINE is not set -+# CONFIG_SH_7751_SYSTEMH is not set -+# CONFIG_SH_STB1_HARP is not set -+# CONFIG_SH_STB1_OVERDRIVE is not set -+# CONFIG_SH_HP6XX is not set -+# CONFIG_SH_CQREEK is not set -+# CONFIG_SH_DMIDA is not set -+# CONFIG_SH_EC3104 is not set -+# CONFIG_SH_SATURN is not set -+# CONFIG_SH_DREAMCAST is not set -+# CONFIG_SH_CAT68701 is not set -+# CONFIG_SH_BIGSUR is not set -+# CONFIG_SH_SH2000 is not set -+# CONFIG_SH_ADX is not set -+# CONFIG_SH_MPC1211 is not set -+# CONFIG_SH_SH03 is not set -+# CONFIG_SH_SECUREEDGE5410 is not set -+CONFIG_SH_HS7751RVOIP=y -+# CONFIG_SH_RTS7751R2D is not set -+# CONFIG_SH_EDOSK7705 is not set -+# CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set -+# CONFIG_SH_UNKNOWN is not set -+ -+# -+# Processor selection -+# -+CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7300 is not set -+# CONFIG_CPU_SUBTYPE_SH7705 is not set -+# CONFIG_CPU_SUBTYPE_SH7707 is not set -+# CONFIG_CPU_SUBTYPE_SH7708 is not set -+# CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set -+CONFIG_CPU_SUBTYPE_SH7751=y -+CONFIG_CPU_SUBTYPE_SH7751R=y -+# CONFIG_CPU_SUBTYPE_SH7760 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_ST40STB1 is not set -+# CONFIG_CPU_SUBTYPE_ST40GX1 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# -+CONFIG_MMU=y -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set -+CONFIG_MEMORY_START=0x0c000000 -+CONFIG_MEMORY_SIZE=0x04000000 -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y -+CONFIG_SH_RTC=y -+CONFIG_SH_FPU=y -+# CONFIG_SH_STORE_QUEUES is not set -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+ -+# -+# HS7751RVoIP options -+# -+CONFIG_HS7751RVOIP_CODEC=y -+# CONFIG_SH_PCLK_FREQ_BOOL is not set -+ -+# -+# CPU Frequency scaling -+# -+# CONFIG_CPU_FREQ is not set -+ -+# -+# DMA support -+# -+# CONFIG_SH_DMA is not set -+ -+# -+# Companion Chips -+# -+# CONFIG_HD6446X_SERIES is not set -+ -+# -+# Kernel features -+# -+# CONFIG_KEXEC is not set -+CONFIG_PREEMPT=y -+# CONFIG_SMP is not set -+ -+# -+# Boot options -+# -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+CONFIG_CMDLINE_BOOL=y -+CONFIG_CMDLINE="mem=64M console=ttySC1,115200 root=/dev/hda1" -+ -+# -+# Bus options -+# -+CONFIG_PCI=y -+CONFIG_SH_PCIDMA_NONCOHERENT=y -+CONFIG_PCI_AUTO=y -+CONFIG_PCI_AUTO_UPDATE_RESOURCES=y -+CONFIG_PCI_LEGACY_PROC=y -+ -+# -+# PCCARD (PCMCIA/CardBus) support -+# -+# CONFIG_PCCARD is not set -+ -+# -+# PCI Hotplug Support -+# -+# CONFIG_HOTPLUG_PCI is not set -+ -+# -+# Executable file formats -+# -+CONFIG_BINFMT_ELF=y -+# CONFIG_BINFMT_FLAT is not set -+# CONFIG_BINFMT_MISC is not set -+ -+# -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+CONFIG_PACKET=y -+CONFIG_PACKET_MMAP=y -+CONFIG_UNIX=y -+# CONFIG_NET_KEY is not set -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+CONFIG_IP_ADVANCED_ROUTER=y -+CONFIG_ASK_IP_FIB_HASH=y -+# CONFIG_IP_FIB_TRIE is not set -+CONFIG_IP_FIB_HASH=y -+# CONFIG_IP_MULTIPLE_TABLES is not set -+# CONFIG_IP_ROUTE_MULTIPATH is not set -+# CONFIG_IP_ROUTE_VERBOSE is not set -+# CONFIG_IP_PNP is not set -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE is not set -+# CONFIG_IP_MROUTE is not set -+# CONFIG_ARPD is not set -+# CONFIG_SYN_COOKIES is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+# CONFIG_INET_TUNNEL is not set -+CONFIG_INET_DIAG=y -+CONFIG_INET_TCP_DIAG=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+# CONFIG_IPV6 is not set -+# CONFIG_NETFILTER is not set -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+# CONFIG_ATM is not set -+# CONFIG_BRIDGE is not set -+# CONFIG_VLAN_8021Q is not set -+# CONFIG_DECNET is not set -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+ -+# -+# QoS and/or fair queueing -+# -+# CONFIG_NET_SCHED is not set -+ -+# -+# Network testing -+# -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+# CONFIG_IEEE80211 is not set -+ -+# -+# Device Drivers -+# -+ -+# -+# Generic Driver Options -+# -+CONFIG_STANDALONE=y -+CONFIG_PREVENT_FIRMWARE_BUILD=y -+CONFIG_FW_LOADER=m -+ -+# -+# Connector - unified userspace <-> kernelspace linker -+# -+# CONFIG_CONNECTOR is not set -+ -+# -+# Memory Technology Devices (MTD) -+# -+# CONFIG_MTD is not set -+ -+# -+# Parallel port support -+# -+# CONFIG_PARPORT is not set -+ -+# -+# Plug and Play support -+# -+ -+# -+# Block devices -+# -+# CONFIG_BLK_CPQ_DA is not set -+# CONFIG_BLK_CPQ_CISS_DA is not set -+# CONFIG_BLK_DEV_DAC960 is not set -+# CONFIG_BLK_DEV_UMEM is not set -+# CONFIG_BLK_DEV_COW_COMMON is not set -+# CONFIG_BLK_DEV_LOOP is not set -+# CONFIG_BLK_DEV_NBD is not set -+# CONFIG_BLK_DEV_SX8 is not set -+# CONFIG_BLK_DEV_RAM is not set -+CONFIG_BLK_DEV_RAM_COUNT=16 -+# CONFIG_CDROM_PKTCDVD is not set -+# CONFIG_ATA_OVER_ETH is not set -+ -+# -+# ATA/ATAPI/MFM/RLL support -+# -+CONFIG_IDE=y -+CONFIG_IDE_MAX_HWIFS=1 -+CONFIG_BLK_DEV_IDE=y -+ -+# -+# Please see Documentation/ide.txt for help/info on IDE drives -+# -+# CONFIG_BLK_DEV_IDE_SATA is not set -+CONFIG_BLK_DEV_IDEDISK=y -+# CONFIG_IDEDISK_MULTI_MODE is not set -+# CONFIG_BLK_DEV_IDECD is not set -+# CONFIG_BLK_DEV_IDETAPE is not set -+# CONFIG_BLK_DEV_IDEFLOPPY is not set -+# CONFIG_IDE_TASK_IOCTL is not set -+ -+# -+# IDE chipset support/bugfixes -+# -+CONFIG_IDE_GENERIC=y -+CONFIG_BLK_DEV_IDEPCI=y -+CONFIG_IDEPCI_SHARE_IRQ=y -+# CONFIG_BLK_DEV_OFFBOARD is not set -+CONFIG_BLK_DEV_GENERIC=y -+# CONFIG_BLK_DEV_OPTI621 is not set -+# CONFIG_BLK_DEV_IDEDMA_PCI is not set -+CONFIG_IDE_SH=y -+# CONFIG_IDE_ARM is not set -+# CONFIG_BLK_DEV_IDEDMA is not set -+# CONFIG_IDEDMA_AUTO is not set -+# CONFIG_BLK_DEV_HD is not set -+ -+# -+# SCSI device support -+# -+# CONFIG_RAID_ATTRS is not set -+# CONFIG_SCSI is not set -+ -+# -+# Multi-device support (RAID and LVM) -+# -+# CONFIG_MD is not set -+ -+# -+# Fusion MPT device support -+# -+# CONFIG_FUSION is not set -+ -+# -+# IEEE 1394 (FireWire) support -+# -+# CONFIG_IEEE1394 is not set -+ -+# -+# I2O device support -+# -+# CONFIG_I2O is not set -+ -+# -+# Network device support -+# -+CONFIG_NETDEVICES=y -+# CONFIG_DUMMY is not set -+# CONFIG_BONDING is not set -+# CONFIG_EQUALIZER is not set -+# CONFIG_TUN is not set -+ -+# -+# ARCnet devices -+# -+# CONFIG_ARCNET is not set -+ -+# -+# PHY device support -+# -+# CONFIG_PHYLIB is not set -+ -+# -+# Ethernet (10 or 100Mbit) -+# -+CONFIG_NET_ETHERNET=y -+CONFIG_MII=y -+# CONFIG_STNIC is not set -+# CONFIG_HAPPYMEAL is not set -+# CONFIG_SUNGEM is not set -+# CONFIG_CASSINI is not set -+# CONFIG_NET_VENDOR_3COM is not set -+# CONFIG_SMC91X is not set -+ -+# -+# Tulip family network device support -+# -+# CONFIG_NET_TULIP is not set -+# CONFIG_HP100 is not set -+# CONFIG_NE2000 is not set -+CONFIG_NET_PCI=y -+# CONFIG_PCNET32 is not set -+# CONFIG_AMD8111_ETH is not set -+# CONFIG_ADAPTEC_STARFIRE is not set -+# CONFIG_B44 is not set -+# CONFIG_FORCEDETH is not set -+# CONFIG_DGRS is not set -+# CONFIG_EEPRO100 is not set -+# CONFIG_E100 is not set -+# CONFIG_FEALNX is not set -+# CONFIG_NATSEMI is not set -+# CONFIG_NE2K_PCI is not set -+# CONFIG_8139CP is not set -+CONFIG_8139TOO=y -+# CONFIG_8139TOO_PIO is not set -+# CONFIG_8139TOO_TUNE_TWISTER is not set -+# CONFIG_8139TOO_8129 is not set -+# CONFIG_8139_OLD_RX_RESET is not set -+# CONFIG_SIS900 is not set -+# CONFIG_EPIC100 is not set -+# CONFIG_SUNDANCE is not set -+# CONFIG_TLAN is not set -+# CONFIG_VIA_RHINE is not set -+ -+# -+# Ethernet (1000 Mbit) -+# -+# CONFIG_ACENIC is not set -+# CONFIG_DL2K is not set -+# CONFIG_E1000 is not set -+# CONFIG_NS83820 is not set -+# CONFIG_HAMACHI is not set -+# CONFIG_YELLOWFIN is not set -+# CONFIG_R8169 is not set -+# CONFIG_SIS190 is not set -+# CONFIG_SKGE is not set -+# CONFIG_SK98LIN is not set -+# CONFIG_VIA_VELOCITY is not set -+# CONFIG_TIGON3 is not set -+# CONFIG_BNX2 is not set -+ -+# -+# Ethernet (10000 Mbit) -+# -+# CONFIG_CHELSIO_T1 is not set -+# CONFIG_IXGB is not set -+# CONFIG_S2IO is not set -+ -+# -+# Token Ring devices -+# -+# CONFIG_TR is not set -+ -+# -+# Wireless LAN (non-hamradio) -+# -+# CONFIG_NET_RADIO is not set -+ -+# -+# Wan interfaces -+# -+# CONFIG_WAN is not set -+# CONFIG_FDDI is not set -+# CONFIG_HIPPI is not set -+# CONFIG_PPP is not set -+# CONFIG_SLIP is not set -+# CONFIG_SHAPER is not set -+# CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set -+ -+# -+# ISDN subsystem -+# -+# CONFIG_ISDN is not set -+ -+# -+# Telephony Support -+# -+# CONFIG_PHONE is not set -+ -+# -+# Input device support -+# -+CONFIG_INPUT=y -+ -+# -+# Userland interfaces -+# -+# CONFIG_INPUT_MOUSEDEV is not set -+# CONFIG_INPUT_JOYDEV is not set -+# CONFIG_INPUT_TSDEV is not set -+# CONFIG_INPUT_EVDEV is not set -+# CONFIG_INPUT_EVBUG is not set -+ -+# -+# Input Device Drivers -+# -+# CONFIG_INPUT_KEYBOARD is not set -+# CONFIG_INPUT_MOUSE is not set -+# CONFIG_INPUT_JOYSTICK is not set -+# CONFIG_INPUT_TOUCHSCREEN is not set -+# CONFIG_INPUT_MISC is not set -+ -+# -+# Hardware I/O ports -+# -+CONFIG_SERIO=y -+CONFIG_SERIO_I8042=y -+CONFIG_SERIO_SERPORT=y -+# CONFIG_SERIO_PCIPS2 is not set -+# CONFIG_SERIO_LIBPS2 is not set -+# CONFIG_SERIO_RAW is not set -+# CONFIG_GAMEPORT is not set -+ -+# -+# Character devices -+# -+# CONFIG_VT is not set -+# CONFIG_SERIAL_NONSTANDARD is not set -+ -+# -+# Serial drivers -+# -+# CONFIG_SERIAL_8250 is not set -+ -+# -+# Non-8250 serial port support -+# -+CONFIG_SERIAL_SH_SCI=y -+CONFIG_SERIAL_SH_SCI_CONSOLE=y -+CONFIG_SERIAL_CORE=y -+CONFIG_SERIAL_CORE_CONSOLE=y -+# CONFIG_SERIAL_JSM is not set -+CONFIG_UNIX98_PTYS=y -+# CONFIG_LEGACY_PTYS is not set -+ -+# -+# IPMI -+# -+# CONFIG_IPMI_HANDLER is not set -+ -+# -+# Watchdog Cards -+# -+# CONFIG_WATCHDOG is not set -+# CONFIG_RTC is not set -+# CONFIG_GEN_RTC is not set -+# CONFIG_DTLK is not set -+# CONFIG_R3964 is not set -+# CONFIG_APPLICOM is not set -+ -+# -+# Ftape, the floppy tape device driver -+# -+# CONFIG_DRM is not set -+# CONFIG_RAW_DRIVER is not set -+ -+# -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# -+# I2C support -+# -+# CONFIG_I2C is not set -+ -+# -+# Dallas's 1-wire bus -+# -+# CONFIG_W1 is not set -+ -+# -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# -+# Misc devices -+# -+ -+# -+# Multimedia Capabilities Port drivers -+# -+ -+# -+# Multimedia devices -+# -+# CONFIG_VIDEO_DEV is not set -+ -+# -+# Digital Video Broadcasting Devices -+# -+# CONFIG_DVB is not set -+ -+# -+# Graphics support -+# -+# CONFIG_FB is not set -+ -+# -+# Sound -+# -+# CONFIG_SOUND is not set -+ -+# -+# USB support -+# -+CONFIG_USB_ARCH_HAS_HCD=y -+CONFIG_USB_ARCH_HAS_OHCI=y -+# CONFIG_USB is not set -+ -+# -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -+# -+ -+# -+# USB Gadget Support -+# -+# CONFIG_USB_GADGET is not set -+ -+# -+# MMC/SD Card support -+# -+# CONFIG_MMC is not set -+ -+# -+# InfiniBand support -+# -+# CONFIG_INFINIBAND is not set -+ -+# -+# SN Devices -+# -+ -+# -+# File systems -+# -+CONFIG_EXT2_FS=y -+# CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set -+# CONFIG_EXT3_FS is not set -+# CONFIG_JBD is not set -+# CONFIG_REISERFS_FS is not set -+# CONFIG_JFS_FS is not set -+# CONFIG_FS_POSIX_ACL is not set -+# CONFIG_XFS_FS is not set -+# CONFIG_MINIX_FS is not set -+# CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y -+# CONFIG_QUOTA is not set -+CONFIG_DNOTIFY=y -+# CONFIG_AUTOFS_FS is not set -+# CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set -+ -+# -+# CD-ROM/DVD Filesystems -+# -+# CONFIG_ISO9660_FS is not set -+# CONFIG_UDF_FS is not set -+ -+# -+# DOS/FAT/NT Filesystems -+# -+# CONFIG_MSDOS_FS is not set -+# CONFIG_VFAT_FS is not set -+# CONFIG_NTFS_FS is not set -+ -+# -+# Pseudo filesystems -+# -+CONFIG_PROC_FS=y -+CONFIG_PROC_KCORE=y -+CONFIG_SYSFS=y -+CONFIG_TMPFS=y -+# CONFIG_HUGETLBFS is not set -+# CONFIG_HUGETLB_PAGE is not set -+CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set -+ -+# -+# Miscellaneous filesystems -+# -+# CONFIG_ADFS_FS is not set -+# CONFIG_AFFS_FS is not set -+# CONFIG_HFS_FS is not set -+# CONFIG_HFSPLUS_FS is not set -+# CONFIG_BEFS_FS is not set -+# CONFIG_BFS_FS is not set -+# CONFIG_EFS_FS is not set -+# CONFIG_CRAMFS is not set -+# CONFIG_VXFS_FS is not set -+# CONFIG_HPFS_FS is not set -+# CONFIG_QNX4FS_FS is not set -+# CONFIG_SYSV_FS is not set -+# CONFIG_UFS_FS is not set -+ -+# -+# Network File Systems -+# -+CONFIG_NFS_FS=y -+CONFIG_NFS_V3=y -+# CONFIG_NFS_V3_ACL is not set -+CONFIG_NFS_V4=y -+CONFIG_NFS_DIRECTIO=y -+# CONFIG_NFSD is not set -+CONFIG_LOCKD=y -+CONFIG_LOCKD_V4=y -+CONFIG_NFS_COMMON=y -+CONFIG_SUNRPC=y -+CONFIG_SUNRPC_GSS=y -+CONFIG_RPCSEC_GSS_KRB5=y -+# CONFIG_RPCSEC_GSS_SPKM3 is not set -+# CONFIG_SMB_FS is not set -+# CONFIG_CIFS is not set -+# CONFIG_NCP_FS is not set -+# CONFIG_CODA_FS is not set -+# CONFIG_AFS_FS is not set -+# CONFIG_9P_FS is not set -+ -+# -+# Partition Types -+# -+CONFIG_PARTITION_ADVANCED=y -+# CONFIG_ACORN_PARTITION is not set -+# CONFIG_OSF_PARTITION is not set -+# CONFIG_AMIGA_PARTITION is not set -+# CONFIG_ATARI_PARTITION is not set -+# CONFIG_MAC_PARTITION is not set -+CONFIG_MSDOS_PARTITION=y -+# CONFIG_BSD_DISKLABEL is not set -+# CONFIG_MINIX_SUBPARTITION is not set -+# CONFIG_SOLARIS_X86_PARTITION is not set -+# CONFIG_UNIXWARE_DISKLABEL is not set -+# CONFIG_LDM_PARTITION is not set -+# CONFIG_SGI_PARTITION is not set -+# CONFIG_ULTRIX_PARTITION is not set -+# CONFIG_SUN_PARTITION is not set -+# CONFIG_EFI_PARTITION is not set -+ -+# -+# Native Language Support -+# -+# CONFIG_NLS is not set -+ -+# -+# Profiling support -+# -+# CONFIG_PROFILING is not set -+ -+# -+# Kernel hacking -+# -+# CONFIG_PRINTK_TIME is not set -+# CONFIG_DEBUG_KERNEL is not set -+CONFIG_LOG_BUF_SHIFT=14 -+# CONFIG_FRAME_POINTER is not set -+# CONFIG_SH_STANDARD_BIOS is not set -+# CONFIG_EARLY_SCIF_CONSOLE is not set -+# CONFIG_KGDB is not set -+ -+# -+# Security options -+# -+# CONFIG_KEYS is not set -+# CONFIG_SECURITY is not set -+ -+# -+# Cryptographic options -+# -+CONFIG_CRYPTO=y -+# CONFIG_CRYPTO_HMAC is not set -+# CONFIG_CRYPTO_NULL is not set -+# CONFIG_CRYPTO_MD4 is not set -+CONFIG_CRYPTO_MD5=y -+# CONFIG_CRYPTO_SHA1 is not set -+# CONFIG_CRYPTO_SHA256 is not set -+# CONFIG_CRYPTO_SHA512 is not set -+# CONFIG_CRYPTO_WP512 is not set -+# CONFIG_CRYPTO_TGR192 is not set -+CONFIG_CRYPTO_DES=y -+# CONFIG_CRYPTO_BLOWFISH is not set -+# CONFIG_CRYPTO_TWOFISH is not set -+# CONFIG_CRYPTO_SERPENT is not set -+# CONFIG_CRYPTO_AES is not set -+# CONFIG_CRYPTO_CAST5 is not set -+# CONFIG_CRYPTO_CAST6 is not set -+# CONFIG_CRYPTO_TEA is not set -+# CONFIG_CRYPTO_ARC4 is not set -+# CONFIG_CRYPTO_KHAZAD is not set -+# CONFIG_CRYPTO_ANUBIS is not set -+# CONFIG_CRYPTO_DEFLATE is not set -+# CONFIG_CRYPTO_MICHAEL_MIC is not set -+# CONFIG_CRYPTO_CRC32C is not set -+# CONFIG_CRYPTO_TEST is not set -+ -+# -+# Hardware crypto devices -+# -+ -+# -+# Library routines -+# -+# CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set -+CONFIG_CRC32=y -+# CONFIG_LIBCRC32C is not set -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/landisk_defconfig linux-2.6.17/arch/sh/configs/landisk_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/landisk_defconfig 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/landisk_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,1372 @@ -+# -+# Automatically generated make config: don't edit -+# Linux kernel version: 2.6.14-sh -+# Sun Dec 18 01:38:13 2005 -+# -+CONFIG_SUPERH=y -+CONFIG_UID16=y -+CONFIG_RWSEM_GENERIC_SPINLOCK=y -+CONFIG_GENERIC_HARDIRQS=y -+CONFIG_GENERIC_IRQ_PROBE=y -+CONFIG_GENERIC_CALIBRATE_DELAY=y -+ -+# -+# Code maturity level options -+# -+CONFIG_EXPERIMENTAL=y -+CONFIG_CLEAN_COMPILE=y -+CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 -+ -+# -+# General setup -+# -+CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y -+CONFIG_SWAP=y -+CONFIG_SYSVIPC=y -+# CONFIG_POSIX_MQUEUE is not set -+# CONFIG_BSD_PROCESS_ACCT is not set -+CONFIG_SYSCTL=y -+# CONFIG_AUDIT is not set -+CONFIG_HOTPLUG=y -+CONFIG_KOBJECT_UEVENT=y -+# CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+# CONFIG_EMBEDDED is not set -+CONFIG_KALLSYMS=y -+CONFIG_KALLSYMS_EXTRA_PASS=y -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y -+CONFIG_FUTEX=y -+CONFIG_EPOLL=y -+CONFIG_SHMEM=y -+CONFIG_CC_ALIGN_FUNCTIONS=0 -+CONFIG_CC_ALIGN_LABELS=0 -+CONFIG_CC_ALIGN_LOOPS=0 -+CONFIG_CC_ALIGN_JUMPS=0 -+# CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 -+ -+# -+# Loadable module support -+# -+CONFIG_MODULES=y -+CONFIG_MODULE_UNLOAD=y -+CONFIG_MODULE_FORCE_UNLOAD=y -+CONFIG_OBSOLETE_MODPARM=y -+# CONFIG_MODVERSIONS is not set -+# CONFIG_MODULE_SRCVERSION_ALL is not set -+CONFIG_KMOD=y -+ -+# -+# System type -+# -+# CONFIG_SH_SOLUTION_ENGINE is not set -+# CONFIG_SH_7751_SOLUTION_ENGINE is not set -+# CONFIG_SH_7300_SOLUTION_ENGINE is not set -+# CONFIG_SH_73180_SOLUTION_ENGINE is not set -+# CONFIG_SH_7751_SYSTEMH is not set -+# CONFIG_SH_STB1_HARP is not set -+# CONFIG_SH_STB1_OVERDRIVE is not set -+# CONFIG_SH_HP6XX is not set -+# CONFIG_SH_CQREEK is not set -+# CONFIG_SH_DMIDA is not set -+# CONFIG_SH_EC3104 is not set -+# CONFIG_SH_SATURN is not set -+# CONFIG_SH_DREAMCAST is not set -+# CONFIG_SH_CAT68701 is not set -+# CONFIG_SH_BIGSUR is not set -+# CONFIG_SH_SH2000 is not set -+# CONFIG_SH_ADX is not set -+# CONFIG_SH_MPC1211 is not set -+# CONFIG_SH_SH03 is not set -+# CONFIG_SH_SECUREEDGE5410 is not set -+# CONFIG_SH_HS7751RVOIP is not set -+# CONFIG_SH_RTS7751R2D is not set -+# CONFIG_SH_EDOSK7705 is not set -+# CONFIG_SH_SH4202_MICRODEV is not set -+CONFIG_SH_LANDISK=y -+# CONFIG_SH_TITAN is not set -+# CONFIG_SH_UNKNOWN is not set -+ -+# -+# Processor selection -+# -+CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7300 is not set -+# CONFIG_CPU_SUBTYPE_SH7705 is not set -+# CONFIG_CPU_SUBTYPE_SH7707 is not set -+# CONFIG_CPU_SUBTYPE_SH7708 is not set -+# CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set -+CONFIG_CPU_SUBTYPE_SH7751=y -+CONFIG_CPU_SUBTYPE_SH7751R=y -+# CONFIG_CPU_SUBTYPE_SH7760 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_ST40STB1 is not set -+# CONFIG_CPU_SUBTYPE_ST40GX1 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# -+CONFIG_MMU=y -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set -+CONFIG_MEMORY_START=0x0c000000 -+CONFIG_MEMORY_SIZE=0x04000000 -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y -+CONFIG_SH_FPU=y -+# CONFIG_SH_STORE_QUEUES is not set -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+CONFIG_SH_PCLK_FREQ_BOOL=y -+CONFIG_SH_PCLK_FREQ=33333333 -+ -+# -+# CPU Frequency scaling -+# -+# CONFIG_CPU_FREQ is not set -+ -+# -+# DMA support -+# -+CONFIG_SH_DMA=y -+CONFIG_NR_ONCHIP_DMA_CHANNELS=4 -+# CONFIG_NR_DMA_CHANNELS_BOOL is not set -+ -+# -+# Companion Chips -+# -+# CONFIG_HD6446X_SERIES is not set -+CONFIG_HEARTBEAT=y -+ -+# -+# Kernel features -+# -+CONFIG_KEXEC=y -+# CONFIG_PREEMPT is not set -+# CONFIG_SMP is not set -+ -+# -+# Boot options -+# -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+# CONFIG_CMDLINE_BOOL is not set -+ -+# -+# Bus options -+# -+CONFIG_ISA=y -+CONFIG_PCI=y -+CONFIG_SH_PCIDMA_NONCOHERENT=y -+CONFIG_PCI_AUTO=y -+CONFIG_PCI_AUTO_UPDATE_RESOURCES=y -+CONFIG_PCI_LEGACY_PROC=y -+ -+# -+# PCCARD (PCMCIA/CardBus) support -+# -+CONFIG_PCCARD=y -+# CONFIG_PCMCIA_DEBUG is not set -+CONFIG_PCMCIA=y -+CONFIG_PCMCIA_LOAD_CIS=y -+CONFIG_PCMCIA_IOCTL=y -+CONFIG_CARDBUS=y -+ -+# -+# PC-card bridges -+# -+CONFIG_YENTA=y -+# CONFIG_PD6729 is not set -+# CONFIG_I82092 is not set -+# CONFIG_I82365 is not set -+# CONFIG_TCIC is not set -+CONFIG_PCMCIA_PROBE=y -+CONFIG_PCCARD_NONSTATIC=y -+ -+# -+# PCI Hotplug Support -+# -+# CONFIG_HOTPLUG_PCI is not set -+ -+# -+# Executable file formats -+# -+CONFIG_BINFMT_ELF=y -+# CONFIG_BINFMT_FLAT is not set -+# CONFIG_BINFMT_MISC is not set -+ -+# -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+CONFIG_PACKET=y -+# CONFIG_PACKET_MMAP is not set -+CONFIG_UNIX=y -+# CONFIG_NET_KEY is not set -+CONFIG_INET=y -+# CONFIG_IP_MULTICAST is not set -+CONFIG_IP_ADVANCED_ROUTER=y -+CONFIG_ASK_IP_FIB_HASH=y -+# CONFIG_IP_FIB_TRIE is not set -+CONFIG_IP_FIB_HASH=y -+# CONFIG_IP_MULTIPLE_TABLES is not set -+# CONFIG_IP_ROUTE_MULTIPATH is not set -+# CONFIG_IP_ROUTE_VERBOSE is not set -+CONFIG_IP_PNP=y -+# CONFIG_IP_PNP_DHCP is not set -+# CONFIG_IP_PNP_BOOTP is not set -+# CONFIG_IP_PNP_RARP is not set -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE is not set -+# CONFIG_ARPD is not set -+# CONFIG_SYN_COOKIES is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+# CONFIG_INET_TUNNEL is not set -+CONFIG_INET_DIAG=y -+CONFIG_INET_TCP_DIAG=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+ -+# -+# IP: Virtual Server Configuration -+# -+# CONFIG_IP_VS is not set -+# CONFIG_IPV6 is not set -+CONFIG_NETFILTER=y -+# CONFIG_NETFILTER_DEBUG is not set -+# CONFIG_NETFILTER_NETLINK is not set -+ -+# -+# IP: Netfilter Configuration -+# -+CONFIG_IP_NF_CONNTRACK=m -+CONFIG_IP_NF_CT_ACCT=y -+CONFIG_IP_NF_CONNTRACK_MARK=y -+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set -+# CONFIG_IP_NF_CT_PROTO_SCTP is not set -+CONFIG_IP_NF_FTP=m -+CONFIG_IP_NF_IRC=m -+# CONFIG_IP_NF_NETBIOS_NS is not set -+CONFIG_IP_NF_TFTP=m -+CONFIG_IP_NF_AMANDA=m -+# CONFIG_IP_NF_PPTP is not set -+CONFIG_IP_NF_QUEUE=m -+CONFIG_IP_NF_IPTABLES=m -+CONFIG_IP_NF_MATCH_LIMIT=m -+CONFIG_IP_NF_MATCH_IPRANGE=m -+CONFIG_IP_NF_MATCH_MAC=m -+CONFIG_IP_NF_MATCH_PKTTYPE=m -+CONFIG_IP_NF_MATCH_MARK=m -+CONFIG_IP_NF_MATCH_MULTIPORT=m -+CONFIG_IP_NF_MATCH_TOS=m -+CONFIG_IP_NF_MATCH_RECENT=m -+CONFIG_IP_NF_MATCH_ECN=m -+CONFIG_IP_NF_MATCH_DSCP=m -+CONFIG_IP_NF_MATCH_AH_ESP=m -+CONFIG_IP_NF_MATCH_LENGTH=m -+CONFIG_IP_NF_MATCH_TTL=m -+CONFIG_IP_NF_MATCH_TCPMSS=m -+CONFIG_IP_NF_MATCH_HELPER=m -+CONFIG_IP_NF_MATCH_STATE=m -+CONFIG_IP_NF_MATCH_CONNTRACK=m -+CONFIG_IP_NF_MATCH_OWNER=m -+CONFIG_IP_NF_MATCH_ADDRTYPE=m -+CONFIG_IP_NF_MATCH_REALM=m -+CONFIG_IP_NF_MATCH_SCTP=m -+# CONFIG_IP_NF_MATCH_DCCP is not set -+CONFIG_IP_NF_MATCH_COMMENT=m -+CONFIG_IP_NF_MATCH_CONNMARK=m -+# CONFIG_IP_NF_MATCH_CONNBYTES is not set -+CONFIG_IP_NF_MATCH_HASHLIMIT=m -+# CONFIG_IP_NF_MATCH_STRING is not set -+CONFIG_IP_NF_FILTER=m -+CONFIG_IP_NF_TARGET_REJECT=m -+CONFIG_IP_NF_TARGET_LOG=m -+CONFIG_IP_NF_TARGET_ULOG=m -+CONFIG_IP_NF_TARGET_TCPMSS=m -+# CONFIG_IP_NF_TARGET_NFQUEUE is not set -+CONFIG_IP_NF_NAT=m -+CONFIG_IP_NF_NAT_NEEDED=y -+CONFIG_IP_NF_TARGET_MASQUERADE=m -+CONFIG_IP_NF_TARGET_REDIRECT=m -+CONFIG_IP_NF_TARGET_NETMAP=m -+CONFIG_IP_NF_TARGET_SAME=m -+# CONFIG_IP_NF_NAT_SNMP_BASIC is not set -+CONFIG_IP_NF_NAT_IRC=m -+CONFIG_IP_NF_NAT_FTP=m -+CONFIG_IP_NF_NAT_TFTP=m -+CONFIG_IP_NF_NAT_AMANDA=m -+CONFIG_IP_NF_MANGLE=m -+CONFIG_IP_NF_TARGET_TOS=m -+CONFIG_IP_NF_TARGET_ECN=m -+CONFIG_IP_NF_TARGET_DSCP=m -+CONFIG_IP_NF_TARGET_MARK=m -+CONFIG_IP_NF_TARGET_CLASSIFY=m -+# CONFIG_IP_NF_TARGET_TTL is not set -+CONFIG_IP_NF_TARGET_CONNMARK=m -+# CONFIG_IP_NF_TARGET_CLUSTERIP is not set -+CONFIG_IP_NF_RAW=m -+CONFIG_IP_NF_TARGET_NOTRACK=m -+CONFIG_IP_NF_ARPTABLES=m -+CONFIG_IP_NF_ARPFILTER=m -+CONFIG_IP_NF_ARP_MANGLE=m -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+# CONFIG_ATM is not set -+# CONFIG_BRIDGE is not set -+# CONFIG_VLAN_8021Q is not set -+# CONFIG_DECNET is not set -+CONFIG_LLC=m -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+CONFIG_ATALK=m -+# CONFIG_DEV_APPLETALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+# CONFIG_NET_SCHED is not set -+CONFIG_NET_CLS_ROUTE=y -+ -+# -+# Network testing -+# -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+# CONFIG_IEEE80211 is not set -+ -+# -+# Device Drivers -+# -+ -+# -+# Generic Driver Options -+# -+CONFIG_STANDALONE=y -+CONFIG_PREVENT_FIRMWARE_BUILD=y -+CONFIG_FW_LOADER=y -+ -+# -+# Connector - unified userspace <-> kernelspace linker -+# -+# CONFIG_CONNECTOR is not set -+ -+# -+# Memory Technology Devices (MTD) -+# -+# CONFIG_MTD is not set -+ -+# -+# Parallel port support -+# -+# CONFIG_PARPORT is not set -+ -+# -+# Plug and Play support -+# -+# CONFIG_PNP is not set -+ -+# -+# Block devices -+# -+# CONFIG_BLK_CPQ_DA is not set -+# CONFIG_BLK_CPQ_CISS_DA is not set -+# CONFIG_BLK_DEV_DAC960 is not set -+# CONFIG_BLK_DEV_UMEM is not set -+# CONFIG_BLK_DEV_COW_COMMON is not set -+CONFIG_BLK_DEV_LOOP=y -+# CONFIG_BLK_DEV_CRYPTOLOOP is not set -+# CONFIG_BLK_DEV_NBD is not set -+# CONFIG_BLK_DEV_SX8 is not set -+# CONFIG_BLK_DEV_UB is not set -+CONFIG_BLK_DEV_RAM=y -+CONFIG_BLK_DEV_RAM_COUNT=16 -+CONFIG_BLK_DEV_RAM_SIZE=4096 -+# CONFIG_BLK_DEV_INITRD is not set -+# CONFIG_LBD is not set -+# CONFIG_CDROM_PKTCDVD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+CONFIG_IOSCHED_CFQ=y -+# CONFIG_ATA_OVER_ETH is not set -+ -+# -+# ATA/ATAPI/MFM/RLL support -+# -+CONFIG_IDE=y -+CONFIG_IDE_MAX_HWIFS=4 -+CONFIG_BLK_DEV_IDE=y -+ -+# -+# Please see Documentation/ide.txt for help/info on IDE drives -+# -+# CONFIG_BLK_DEV_IDE_SATA is not set -+CONFIG_BLK_DEV_IDEDISK=y -+# CONFIG_IDEDISK_MULTI_MODE is not set -+# CONFIG_BLK_DEV_IDECS is not set -+CONFIG_BLK_DEV_IDECD=y -+# CONFIG_BLK_DEV_IDETAPE is not set -+# CONFIG_BLK_DEV_IDEFLOPPY is not set -+CONFIG_BLK_DEV_IDESCSI=y -+# CONFIG_IDE_TASK_IOCTL is not set -+ -+# -+# IDE chipset support/bugfixes -+# -+CONFIG_IDE_GENERIC=y -+CONFIG_BLK_DEV_IDEPCI=y -+CONFIG_IDEPCI_SHARE_IRQ=y -+CONFIG_BLK_DEV_OFFBOARD=y -+CONFIG_BLK_DEV_GENERIC=y -+# CONFIG_BLK_DEV_OPTI621 is not set -+CONFIG_BLK_DEV_IDEDMA_PCI=y -+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set -+CONFIG_IDEDMA_PCI_AUTO=y -+CONFIG_IDEDMA_ONLYDISK=y -+CONFIG_BLK_DEV_AEC62XX=y -+# CONFIG_BLK_DEV_ALI15X3 is not set -+# CONFIG_BLK_DEV_AMD74XX is not set -+# CONFIG_BLK_DEV_CMD64X is not set -+# CONFIG_BLK_DEV_TRIFLEX is not set -+# CONFIG_BLK_DEV_CY82C693 is not set -+# CONFIG_BLK_DEV_CS5520 is not set -+# CONFIG_BLK_DEV_CS5530 is not set -+# CONFIG_BLK_DEV_HPT34X is not set -+# CONFIG_BLK_DEV_HPT366 is not set -+# CONFIG_BLK_DEV_SC1200 is not set -+# CONFIG_BLK_DEV_PIIX is not set -+# CONFIG_BLK_DEV_IT821X is not set -+# CONFIG_BLK_DEV_NS87415 is not set -+# CONFIG_BLK_DEV_PDC202XX_OLD is not set -+# CONFIG_BLK_DEV_PDC202XX_NEW is not set -+# CONFIG_BLK_DEV_SVWKS is not set -+# CONFIG_BLK_DEV_SIIMAGE is not set -+# CONFIG_BLK_DEV_SLC90E66 is not set -+# CONFIG_BLK_DEV_TRM290 is not set -+# CONFIG_BLK_DEV_VIA82CXXX is not set -+CONFIG_IDE_SH=y -+# CONFIG_IDE_ARM is not set -+# CONFIG_IDE_CHIPSETS is not set -+CONFIG_BLK_DEV_IDEDMA=y -+# CONFIG_IDEDMA_IVB is not set -+CONFIG_IDEDMA_AUTO=y -+# CONFIG_BLK_DEV_HD is not set -+ -+# -+# SCSI device support -+# -+# CONFIG_RAID_ATTRS is not set -+CONFIG_SCSI=y -+CONFIG_SCSI_PROC_FS=y -+ -+# -+# SCSI support type (disk, tape, CD-ROM) -+# -+CONFIG_BLK_DEV_SD=y -+# CONFIG_CHR_DEV_ST is not set -+# CONFIG_CHR_DEV_OSST is not set -+# CONFIG_BLK_DEV_SR is not set -+# CONFIG_CHR_DEV_SG is not set -+# CONFIG_CHR_DEV_SCH is not set -+ -+# -+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -+# -+CONFIG_SCSI_MULTI_LUN=y -+# CONFIG_SCSI_CONSTANTS is not set -+# CONFIG_SCSI_LOGGING is not set -+ -+# -+# SCSI Transport Attributes -+# -+# CONFIG_SCSI_SPI_ATTRS is not set -+# CONFIG_SCSI_FC_ATTRS is not set -+# CONFIG_SCSI_ISCSI_ATTRS is not set -+# CONFIG_SCSI_SAS_ATTRS is not set -+ -+# -+# SCSI low-level drivers -+# -+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -+# CONFIG_SCSI_3W_9XXX is not set -+# CONFIG_SCSI_ACARD is not set -+# CONFIG_SCSI_AHA152X is not set -+# CONFIG_SCSI_AACRAID is not set -+# CONFIG_SCSI_AIC7XXX is not set -+# CONFIG_SCSI_AIC7XXX_OLD is not set -+# CONFIG_SCSI_AIC79XX is not set -+# CONFIG_SCSI_DPT_I2O is not set -+# CONFIG_SCSI_IN2000 is not set -+# CONFIG_MEGARAID_NEWGEN is not set -+# CONFIG_MEGARAID_LEGACY is not set -+# CONFIG_MEGARAID_SAS is not set -+# CONFIG_SCSI_SATA is not set -+# CONFIG_SCSI_DMX3191D is not set -+# CONFIG_SCSI_DTC3280 is not set -+# CONFIG_SCSI_FUTURE_DOMAIN is not set -+# CONFIG_SCSI_GENERIC_NCR5380 is not set -+# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set -+# CONFIG_SCSI_IPS is not set -+# CONFIG_SCSI_INITIO is not set -+# CONFIG_SCSI_INIA100 is not set -+# CONFIG_SCSI_NCR53C406A is not set -+# CONFIG_SCSI_SYM53C8XX_2 is not set -+# CONFIG_SCSI_IPR is not set -+# CONFIG_SCSI_PAS16 is not set -+# CONFIG_SCSI_PSI240I is not set -+# CONFIG_SCSI_QLOGIC_FAS is not set -+# CONFIG_SCSI_QLOGIC_FC is not set -+# CONFIG_SCSI_QLOGIC_1280 is not set -+CONFIG_SCSI_QLA2XXX=y -+# CONFIG_SCSI_QLA21XX is not set -+# CONFIG_SCSI_QLA22XX is not set -+# CONFIG_SCSI_QLA2300 is not set -+# CONFIG_SCSI_QLA2322 is not set -+# CONFIG_SCSI_QLA6312 is not set -+# CONFIG_SCSI_QLA24XX is not set -+# CONFIG_SCSI_LPFC is not set -+# CONFIG_SCSI_SYM53C416 is not set -+# CONFIG_SCSI_DC395x is not set -+# CONFIG_SCSI_DC390T is not set -+# CONFIG_SCSI_T128 is not set -+# CONFIG_SCSI_NSP32 is not set -+# CONFIG_SCSI_DEBUG is not set -+ -+# -+# PCMCIA SCSI adapter support -+# -+# CONFIG_PCMCIA_AHA152X is not set -+# CONFIG_PCMCIA_FDOMAIN is not set -+# CONFIG_PCMCIA_NINJA_SCSI is not set -+# CONFIG_PCMCIA_QLOGIC is not set -+# CONFIG_PCMCIA_SYM53C500 is not set -+ -+# -+# Old CD-ROM drivers (not SCSI, not IDE) -+# -+# CONFIG_CD_NO_IDESCSI is not set -+ -+# -+# Multi-device support (RAID and LVM) -+# -+CONFIG_MD=y -+CONFIG_BLK_DEV_MD=m -+CONFIG_MD_LINEAR=m -+CONFIG_MD_RAID0=m -+CONFIG_MD_RAID1=m -+# CONFIG_MD_RAID10 is not set -+# CONFIG_MD_RAID5 is not set -+# CONFIG_MD_RAID6 is not set -+# CONFIG_MD_MULTIPATH is not set -+# CONFIG_MD_FAULTY is not set -+# CONFIG_BLK_DEV_DM is not set -+ -+# -+# Fusion MPT device support -+# -+# CONFIG_FUSION is not set -+# CONFIG_FUSION_SPI is not set -+# CONFIG_FUSION_FC is not set -+# CONFIG_FUSION_SAS is not set -+ -+# -+# IEEE 1394 (FireWire) support -+# -+# CONFIG_IEEE1394 is not set -+ -+# -+# I2O device support -+# -+# CONFIG_I2O is not set -+ -+# -+# Network device support -+# -+CONFIG_NETDEVICES=y -+# CONFIG_DUMMY is not set -+# CONFIG_BONDING is not set -+# CONFIG_EQUALIZER is not set -+CONFIG_TUN=m -+ -+# -+# ARCnet devices -+# -+# CONFIG_ARCNET is not set -+ -+# -+# PHY device support -+# -+# CONFIG_PHYLIB is not set -+ -+# -+# Ethernet (10 or 100Mbit) -+# -+CONFIG_NET_ETHERNET=y -+CONFIG_MII=y -+# CONFIG_STNIC is not set -+# CONFIG_HAPPYMEAL is not set -+# CONFIG_SUNGEM is not set -+# CONFIG_CASSINI is not set -+# CONFIG_NET_VENDOR_3COM is not set -+# CONFIG_NET_VENDOR_SMC is not set -+# CONFIG_SMC91X is not set -+# CONFIG_NET_VENDOR_RACAL is not set -+ -+# -+# Tulip family network device support -+# -+# CONFIG_NET_TULIP is not set -+# CONFIG_AT1700 is not set -+# CONFIG_DEPCA is not set -+# CONFIG_HP100 is not set -+# CONFIG_NET_ISA is not set -+# CONFIG_NE2000 is not set -+CONFIG_NET_PCI=y -+# CONFIG_PCNET32 is not set -+# CONFIG_AMD8111_ETH is not set -+# CONFIG_ADAPTEC_STARFIRE is not set -+# CONFIG_AC3200 is not set -+# CONFIG_APRICOT is not set -+# CONFIG_B44 is not set -+# CONFIG_FORCEDETH is not set -+# CONFIG_CS89x0 is not set -+# CONFIG_DGRS is not set -+# CONFIG_EEPRO100 is not set -+# CONFIG_E100 is not set -+# CONFIG_FEALNX is not set -+# CONFIG_NATSEMI is not set -+# CONFIG_NE2K_PCI is not set -+CONFIG_8139CP=y -+# CONFIG_8139TOO is not set -+# CONFIG_SIS900 is not set -+# CONFIG_EPIC100 is not set -+# CONFIG_SUNDANCE is not set -+# CONFIG_TLAN is not set -+# CONFIG_VIA_RHINE is not set -+ -+# -+# Ethernet (1000 Mbit) -+# -+# CONFIG_ACENIC is not set -+# CONFIG_DL2K is not set -+# CONFIG_E1000 is not set -+# CONFIG_NS83820 is not set -+# CONFIG_HAMACHI is not set -+# CONFIG_YELLOWFIN is not set -+# CONFIG_R8169 is not set -+# CONFIG_SIS190 is not set -+# CONFIG_SKGE is not set -+# CONFIG_SK98LIN is not set -+# CONFIG_VIA_VELOCITY is not set -+# CONFIG_TIGON3 is not set -+# CONFIG_BNX2 is not set -+ -+# -+# Ethernet (10000 Mbit) -+# -+# CONFIG_CHELSIO_T1 is not set -+# CONFIG_IXGB is not set -+# CONFIG_S2IO is not set -+ -+# -+# Token Ring devices -+# -+# CONFIG_TR is not set -+ -+# -+# Wireless LAN (non-hamradio) -+# -+# CONFIG_NET_RADIO is not set -+ -+# -+# PCMCIA network device support -+# -+# CONFIG_NET_PCMCIA is not set -+ -+# -+# Wan interfaces -+# -+# CONFIG_WAN is not set -+# CONFIG_FDDI is not set -+# CONFIG_HIPPI is not set -+# CONFIG_PPP is not set -+# CONFIG_SLIP is not set -+# CONFIG_NET_FC is not set -+# CONFIG_SHAPER is not set -+# CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set -+ -+# -+# ISDN subsystem -+# -+# CONFIG_ISDN is not set -+ -+# -+# Telephony Support -+# -+# CONFIG_PHONE is not set -+ -+# -+# Input device support -+# -+CONFIG_INPUT=y -+ -+# -+# Userland interfaces -+# -+CONFIG_INPUT_MOUSEDEV=y -+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -+# CONFIG_INPUT_JOYDEV is not set -+# CONFIG_INPUT_TSDEV is not set -+# CONFIG_INPUT_EVDEV is not set -+# CONFIG_INPUT_EVBUG is not set -+ -+# -+# Input Device Drivers -+# -+# CONFIG_INPUT_KEYBOARD is not set -+# CONFIG_INPUT_MOUSE is not set -+# CONFIG_INPUT_JOYSTICK is not set -+# CONFIG_INPUT_TOUCHSCREEN is not set -+# CONFIG_INPUT_MISC is not set -+ -+# -+# Hardware I/O ports -+# -+# CONFIG_SERIO is not set -+# CONFIG_GAMEPORT is not set -+ -+# -+# Character devices -+# -+CONFIG_VT=y -+CONFIG_VT_CONSOLE=y -+CONFIG_HW_CONSOLE=y -+# CONFIG_SERIAL_NONSTANDARD is not set -+ -+# -+# Serial drivers -+# -+# CONFIG_SERIAL_8250 is not set -+ -+# -+# Non-8250 serial port support -+# -+CONFIG_SERIAL_SH_SCI=y -+CONFIG_SERIAL_SH_SCI_CONSOLE=y -+CONFIG_SERIAL_CORE=y -+CONFIG_SERIAL_CORE_CONSOLE=y -+# CONFIG_SERIAL_JSM is not set -+CONFIG_UNIX98_PTYS=y -+CONFIG_LEGACY_PTYS=y -+CONFIG_LEGACY_PTY_COUNT=256 -+ -+# -+# IPMI -+# -+# CONFIG_IPMI_HANDLER is not set -+ -+# -+# Watchdog Cards -+# -+# CONFIG_WATCHDOG is not set -+# CONFIG_RTC is not set -+CONFIG_RS5C313_RTC=y -+# CONFIG_GEN_RTC is not set -+# CONFIG_DTLK is not set -+# CONFIG_R3964 is not set -+# CONFIG_APPLICOM is not set -+ -+# -+# Ftape, the floppy tape device driver -+# -+# CONFIG_DRM is not set -+ -+# -+# PCMCIA character devices -+# -+# CONFIG_SYNCLINK_CS is not set -+# CONFIG_RAW_DRIVER is not set -+ -+# -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+ -+# -+# I2C support -+# -+# CONFIG_I2C is not set -+ -+# -+# Dallas's 1-wire bus -+# -+# CONFIG_W1 is not set -+ -+# -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# -+# Misc devices -+# -+ -+# -+# Multimedia Capabilities Port drivers -+# -+ -+# -+# Multimedia devices -+# -+CONFIG_VIDEO_DEV=m -+ -+# -+# Video For Linux -+# -+ -+# -+# Video Adapters -+# -+# CONFIG_VIDEO_PMS is not set -+# CONFIG_VIDEO_CPIA is not set -+# CONFIG_VIDEO_STRADIS is not set -+# CONFIG_VIDEO_MXB is not set -+# CONFIG_VIDEO_DPC is not set -+# CONFIG_VIDEO_HEXIUM_ORION is not set -+# CONFIG_VIDEO_HEXIUM_GEMINI is not set -+ -+# -+# Radio Adapters -+# -+# CONFIG_RADIO_CADET is not set -+# CONFIG_RADIO_RTRACK is not set -+# CONFIG_RADIO_RTRACK2 is not set -+# CONFIG_RADIO_AZTECH is not set -+# CONFIG_RADIO_GEMTEK is not set -+# CONFIG_RADIO_GEMTEK_PCI is not set -+# CONFIG_RADIO_MAXIRADIO is not set -+# CONFIG_RADIO_MAESTRO is not set -+# CONFIG_RADIO_SF16FMI is not set -+# CONFIG_RADIO_SF16FMR2 is not set -+# CONFIG_RADIO_TERRATEC is not set -+# CONFIG_RADIO_TRUST is not set -+# CONFIG_RADIO_TYPHOON is not set -+# CONFIG_RADIO_ZOLTRIX is not set -+ -+# -+# Digital Video Broadcasting Devices -+# -+# CONFIG_DVB is not set -+ -+# -+# Graphics support -+# -+# CONFIG_FB is not set -+ -+# -+# Console display driver support -+# -+# CONFIG_MDA_CONSOLE is not set -+CONFIG_DUMMY_CONSOLE=y -+CONFIG_FONT_8x16=y -+ -+# -+# Sound -+# -+CONFIG_SOUND=m -+ -+# -+# Advanced Linux Sound Architecture -+# -+# CONFIG_SND is not set -+ -+# -+# Open Sound System -+# -+CONFIG_SOUND_PRIME=m -+# CONFIG_SOUND_BT878 is not set -+# CONFIG_SOUND_CMPCI is not set -+# CONFIG_SOUND_EMU10K1 is not set -+# CONFIG_SOUND_FUSION is not set -+# CONFIG_SOUND_CS4281 is not set -+# CONFIG_SOUND_ES1370 is not set -+# CONFIG_SOUND_ES1371 is not set -+# CONFIG_SOUND_ESSSOLO1 is not set -+# CONFIG_SOUND_MAESTRO is not set -+# CONFIG_SOUND_MAESTRO3 is not set -+# CONFIG_SOUND_ICH is not set -+# CONFIG_SOUND_SONICVIBES is not set -+# CONFIG_SOUND_TRIDENT is not set -+# CONFIG_SOUND_MSNDCLAS is not set -+# CONFIG_SOUND_MSNDPIN is not set -+# CONFIG_SOUND_VIA82CXXX is not set -+# CONFIG_SOUND_ALI5455 is not set -+# CONFIG_SOUND_FORTE is not set -+# CONFIG_SOUND_RME96XX is not set -+# CONFIG_SOUND_AD1980 is not set -+ -+# -+# USB support -+# -+CONFIG_USB_ARCH_HAS_HCD=y -+CONFIG_USB_ARCH_HAS_OHCI=y -+CONFIG_USB=y -+# CONFIG_USB_DEBUG is not set -+ -+# -+# Miscellaneous USB options -+# -+CONFIG_USB_DEVICEFS=y -+# CONFIG_USB_BANDWIDTH is not set -+# CONFIG_USB_DYNAMIC_MINORS is not set -+# CONFIG_USB_OTG is not set -+ -+# -+# USB Host Controller Drivers -+# -+CONFIG_USB_EHCI_HCD=y -+# CONFIG_USB_EHCI_SPLIT_ISO is not set -+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -+# CONFIG_USB_ISP116X_HCD is not set -+CONFIG_USB_OHCI_HCD=y -+# CONFIG_USB_OHCI_BIG_ENDIAN is not set -+CONFIG_USB_OHCI_LITTLE_ENDIAN=y -+# CONFIG_USB_UHCI_HCD is not set -+# CONFIG_USB_SL811_HCD is not set -+ -+# -+# USB Device Class drivers -+# -+CONFIG_OBSOLETE_OSS_USB_DRIVER=y -+CONFIG_USB_AUDIO=m -+# CONFIG_USB_BLUETOOTH_TTY is not set -+CONFIG_USB_MIDI=m -+# CONFIG_USB_ACM is not set -+CONFIG_USB_PRINTER=m -+ -+# -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# -+CONFIG_USB_STORAGE=m -+# CONFIG_USB_STORAGE_DEBUG is not set -+CONFIG_USB_STORAGE_DATAFAB=y -+CONFIG_USB_STORAGE_FREECOM=y -+CONFIG_USB_STORAGE_ISD200=y -+CONFIG_USB_STORAGE_DPCM=y -+# CONFIG_USB_STORAGE_USBAT is not set -+CONFIG_USB_STORAGE_SDDR09=y -+CONFIG_USB_STORAGE_SDDR55=y -+CONFIG_USB_STORAGE_JUMPSHOT=y -+ -+# -+# USB Input Devices -+# -+CONFIG_USB_HID=m -+CONFIG_USB_HIDINPUT=y -+# CONFIG_HID_FF is not set -+# CONFIG_USB_HIDDEV is not set -+ -+# -+# USB HID Boot Protocol drivers -+# -+# CONFIG_USB_KBD is not set -+# CONFIG_USB_MOUSE is not set -+# CONFIG_USB_AIPTEK is not set -+# CONFIG_USB_WACOM is not set -+# CONFIG_USB_ACECAD is not set -+# CONFIG_USB_KBTAB is not set -+# CONFIG_USB_POWERMATE is not set -+# CONFIG_USB_MTOUCH is not set -+# CONFIG_USB_ITMTOUCH is not set -+# CONFIG_USB_EGALAX is not set -+# CONFIG_USB_YEALINK is not set -+# CONFIG_USB_XPAD is not set -+# CONFIG_USB_ATI_REMOTE is not set -+# CONFIG_USB_KEYSPAN_REMOTE is not set -+# CONFIG_USB_APPLETOUCH is not set -+ -+# -+# USB Imaging devices -+# -+# CONFIG_USB_MDC800 is not set -+# CONFIG_USB_MICROTEK is not set -+ -+# -+# USB Multimedia devices -+# -+CONFIG_USB_DABUSB=m -+CONFIG_USB_VICAM=m -+CONFIG_USB_DSBR=m -+CONFIG_USB_IBMCAM=m -+CONFIG_USB_KONICAWC=m -+CONFIG_USB_OV511=m -+CONFIG_USB_SE401=m -+CONFIG_USB_SN9C102=m -+CONFIG_USB_STV680=m -+CONFIG_USB_PWC=m -+ -+# -+# USB Network Adapters -+# -+# CONFIG_USB_CATC is not set -+# CONFIG_USB_KAWETH is not set -+CONFIG_USB_PEGASUS=m -+CONFIG_USB_RTL8150=m -+# CONFIG_USB_USBNET is not set -+CONFIG_USB_MON=y -+ -+# -+# USB port drivers -+# -+ -+# -+# USB Serial Converter support -+# -+CONFIG_USB_SERIAL=m -+# CONFIG_USB_SERIAL_GENERIC is not set -+# CONFIG_USB_SERIAL_AIRPRIME is not set -+# CONFIG_USB_SERIAL_BELKIN is not set -+# CONFIG_USB_SERIAL_WHITEHEAT is not set -+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -+# CONFIG_USB_SERIAL_CP2101 is not set -+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -+# CONFIG_USB_SERIAL_EMPEG is not set -+CONFIG_USB_SERIAL_FTDI_SIO=m -+# CONFIG_USB_SERIAL_VISOR is not set -+# CONFIG_USB_SERIAL_IPAQ is not set -+# CONFIG_USB_SERIAL_IR is not set -+# CONFIG_USB_SERIAL_EDGEPORT is not set -+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set -+# CONFIG_USB_SERIAL_GARMIN is not set -+# CONFIG_USB_SERIAL_IPW is not set -+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -+# CONFIG_USB_SERIAL_KEYSPAN is not set -+# CONFIG_USB_SERIAL_KLSI is not set -+# CONFIG_USB_SERIAL_KOBIL_SCT is not set -+# CONFIG_USB_SERIAL_MCT_U232 is not set -+CONFIG_USB_SERIAL_PL2303=m -+# CONFIG_USB_SERIAL_HP4X is not set -+# CONFIG_USB_SERIAL_SAFE is not set -+# CONFIG_USB_SERIAL_TI is not set -+# CONFIG_USB_SERIAL_CYBERJACK is not set -+# CONFIG_USB_SERIAL_XIRCOM is not set -+# CONFIG_USB_SERIAL_OPTION is not set -+# CONFIG_USB_SERIAL_OMNINET is not set -+ -+# -+# USB Miscellaneous drivers -+# -+CONFIG_USB_EMI62=m -+CONFIG_USB_EMI26=m -+# CONFIG_USB_AUERSWALD is not set -+# CONFIG_USB_RIO500 is not set -+# CONFIG_USB_LEGOTOWER is not set -+# CONFIG_USB_LCD is not set -+# CONFIG_USB_LED is not set -+# CONFIG_USB_CYTHERM is not set -+# CONFIG_USB_PHIDGETKIT is not set -+# CONFIG_USB_PHIDGETSERVO is not set -+# CONFIG_USB_IDMOUSE is not set -+CONFIG_USB_SISUSBVGA=m -+CONFIG_USB_SISUSBVGA_CON=y -+# CONFIG_USB_LD is not set -+# CONFIG_USB_TEST is not set -+ -+# -+# USB DSL modem support -+# -+ -+# -+# USB Gadget Support -+# -+# CONFIG_USB_GADGET is not set -+ -+# -+# MMC/SD Card support -+# -+# CONFIG_MMC is not set -+ -+# -+# InfiniBand support -+# -+# CONFIG_INFINIBAND is not set -+ -+# -+# SN Devices -+# -+ -+# -+# File systems -+# -+CONFIG_EXT2_FS=y -+# CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set -+CONFIG_EXT3_FS=y -+CONFIG_EXT3_FS_XATTR=y -+# CONFIG_EXT3_FS_POSIX_ACL is not set -+# CONFIG_EXT3_FS_SECURITY is not set -+CONFIG_JBD=y -+# CONFIG_JBD_DEBUG is not set -+CONFIG_FS_MBCACHE=y -+CONFIG_REISERFS_FS=y -+# CONFIG_REISERFS_CHECK is not set -+# CONFIG_REISERFS_PROC_INFO is not set -+# CONFIG_REISERFS_FS_XATTR is not set -+# CONFIG_JFS_FS is not set -+# CONFIG_FS_POSIX_ACL is not set -+# CONFIG_XFS_FS is not set -+# CONFIG_MINIX_FS is not set -+CONFIG_ROMFS_FS=y -+CONFIG_INOTIFY=y -+# CONFIG_QUOTA is not set -+CONFIG_DNOTIFY=y -+# CONFIG_AUTOFS_FS is not set -+# CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set -+ -+# -+# CD-ROM/DVD Filesystems -+# -+CONFIG_ISO9660_FS=m -+# CONFIG_JOLIET is not set -+# CONFIG_ZISOFS is not set -+# CONFIG_UDF_FS is not set -+ -+# -+# DOS/FAT/NT Filesystems -+# -+CONFIG_FAT_FS=y -+CONFIG_MSDOS_FS=y -+CONFIG_VFAT_FS=y -+CONFIG_FAT_DEFAULT_CODEPAGE=437 -+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -+CONFIG_NTFS_FS=m -+# CONFIG_NTFS_DEBUG is not set -+CONFIG_NTFS_RW=y -+ -+# -+# Pseudo filesystems -+# -+CONFIG_PROC_FS=y -+# CONFIG_PROC_KCORE is not set -+CONFIG_SYSFS=y -+CONFIG_TMPFS=y -+# CONFIG_HUGETLBFS is not set -+# CONFIG_HUGETLB_PAGE is not set -+CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set -+ -+# -+# Miscellaneous filesystems -+# -+# CONFIG_ADFS_FS is not set -+# CONFIG_AFFS_FS is not set -+# CONFIG_HFS_FS is not set -+# CONFIG_HFSPLUS_FS is not set -+# CONFIG_BEFS_FS is not set -+# CONFIG_BFS_FS is not set -+# CONFIG_EFS_FS is not set -+# CONFIG_CRAMFS is not set -+# CONFIG_VXFS_FS is not set -+# CONFIG_HPFS_FS is not set -+# CONFIG_QNX4FS_FS is not set -+# CONFIG_SYSV_FS is not set -+CONFIG_UFS_FS=m -+CONFIG_UFS_FS_WRITE=y -+ -+# -+# Network File Systems -+# -+CONFIG_NFS_FS=m -+CONFIG_NFS_V3=y -+# CONFIG_NFS_V3_ACL is not set -+# CONFIG_NFS_V4 is not set -+# CONFIG_NFS_DIRECTIO is not set -+CONFIG_NFSD=m -+CONFIG_NFSD_V3=y -+# CONFIG_NFSD_V3_ACL is not set -+# CONFIG_NFSD_V4 is not set -+CONFIG_NFSD_TCP=y -+CONFIG_LOCKD=m -+CONFIG_LOCKD_V4=y -+CONFIG_EXPORTFS=m -+CONFIG_NFS_COMMON=y -+CONFIG_SUNRPC=m -+# CONFIG_RPCSEC_GSS_KRB5 is not set -+# CONFIG_RPCSEC_GSS_SPKM3 is not set -+CONFIG_SMB_FS=m -+# CONFIG_SMB_NLS_DEFAULT is not set -+# CONFIG_CIFS is not set -+# CONFIG_NCP_FS is not set -+# CONFIG_CODA_FS is not set -+# CONFIG_AFS_FS is not set -+# CONFIG_9P_FS is not set -+ -+# -+# Partition Types -+# -+# CONFIG_PARTITION_ADVANCED is not set -+CONFIG_MSDOS_PARTITION=y -+ -+# -+# Native Language Support -+# -+CONFIG_NLS=y -+CONFIG_NLS_DEFAULT="iso8859-1" -+CONFIG_NLS_CODEPAGE_437=y -+# CONFIG_NLS_CODEPAGE_737 is not set -+# CONFIG_NLS_CODEPAGE_775 is not set -+# CONFIG_NLS_CODEPAGE_850 is not set -+# CONFIG_NLS_CODEPAGE_852 is not set -+# CONFIG_NLS_CODEPAGE_855 is not set -+# CONFIG_NLS_CODEPAGE_857 is not set -+# CONFIG_NLS_CODEPAGE_860 is not set -+# CONFIG_NLS_CODEPAGE_861 is not set -+# CONFIG_NLS_CODEPAGE_862 is not set -+# CONFIG_NLS_CODEPAGE_863 is not set -+# CONFIG_NLS_CODEPAGE_864 is not set -+# CONFIG_NLS_CODEPAGE_865 is not set -+# CONFIG_NLS_CODEPAGE_866 is not set -+# CONFIG_NLS_CODEPAGE_869 is not set -+# CONFIG_NLS_CODEPAGE_936 is not set -+# CONFIG_NLS_CODEPAGE_950 is not set -+CONFIG_NLS_CODEPAGE_932=y -+# CONFIG_NLS_CODEPAGE_949 is not set -+# CONFIG_NLS_CODEPAGE_874 is not set -+# CONFIG_NLS_ISO8859_8 is not set -+# CONFIG_NLS_CODEPAGE_1250 is not set -+# CONFIG_NLS_CODEPAGE_1251 is not set -+# CONFIG_NLS_ASCII is not set -+# CONFIG_NLS_ISO8859_1 is not set -+# CONFIG_NLS_ISO8859_2 is not set -+# CONFIG_NLS_ISO8859_3 is not set -+# CONFIG_NLS_ISO8859_4 is not set -+# CONFIG_NLS_ISO8859_5 is not set -+# CONFIG_NLS_ISO8859_6 is not set -+# CONFIG_NLS_ISO8859_7 is not set -+# CONFIG_NLS_ISO8859_9 is not set -+# CONFIG_NLS_ISO8859_13 is not set -+# CONFIG_NLS_ISO8859_14 is not set -+# CONFIG_NLS_ISO8859_15 is not set -+# CONFIG_NLS_KOI8_R is not set -+# CONFIG_NLS_KOI8_U is not set -+# CONFIG_NLS_UTF8 is not set -+ -+# -+# Profiling support -+# -+# CONFIG_PROFILING is not set -+ -+# -+# Kernel hacking -+# -+# CONFIG_PRINTK_TIME is not set -+# CONFIG_DEBUG_KERNEL is not set -+CONFIG_LOG_BUF_SHIFT=14 -+# CONFIG_FRAME_POINTER is not set -+CONFIG_SH_STANDARD_BIOS=y -+# CONFIG_EARLY_SCIF_CONSOLE is not set -+# CONFIG_EARLY_PRINTK is not set -+# CONFIG_KGDB is not set -+ -+# -+# Security options -+# -+# CONFIG_KEYS is not set -+# CONFIG_SECURITY is not set -+ -+# -+# Cryptographic options -+# -+# CONFIG_CRYPTO is not set -+ -+# -+# Hardware crypto devices -+# -+ -+# -+# Library routines -+# -+# CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set -+CONFIG_CRC32=y -+# CONFIG_LIBCRC32C is not set -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/microdev_defconfig linux-2.6.17/arch/sh/configs/microdev_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/microdev_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/microdev_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,9 +1,10 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.16-rc1 --# Fri Jan 27 19:43:20 2006 -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 18:41:51 2006 - # - CONFIG_SUPERH=y -+CONFIG_UID16=y - CONFIG_RWSEM_GENERIC_SPINLOCK=y - CONFIG_GENERIC_HARDIRQS=y - CONFIG_GENERIC_IRQ_PROBE=y -@@ -30,17 +31,16 @@ - # CONFIG_BSD_PROCESS_ACCT_V3 is not set - CONFIG_SYSCTL=y - # CONFIG_AUDIT is not set -+CONFIG_HOTPLUG=y -+CONFIG_KOBJECT_UEVENT=y - # CONFIG_IKCONFIG is not set - CONFIG_INITRAMFS_SOURCE="" --CONFIG_UID16=y - # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_EMBEDDED=y - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set --CONFIG_HOTPLUG=y - CONFIG_PRINTK=y - CONFIG_BUG=y --CONFIG_ELF_CORE=y - CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y -@@ -49,10 +49,8 @@ - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 --CONFIG_SLAB=y - # CONFIG_TINY_SHMEM is not set - CONFIG_BASE_SMALL=0 --# CONFIG_SLOB is not set - - # - # Loadable module support -@@ -102,7 +100,6 @@ - # CONFIG_SH_SECUREEDGE5410 is not set - # CONFIG_SH_HS7751RVOIP is not set - # CONFIG_SH_RTS7751R2D is not set --# CONFIG_SH_R7780RP is not set - # CONFIG_SH_EDOSK7705 is not set - CONFIG_SH_SH4202_MICRODEV=y - # CONFIG_SH_LANDISK is not set -@@ -157,6 +154,8 @@ - # Memory management options - # - CONFIG_MMU=y -+CONFIG_HUGETLB_PAGE_SIZE_64K=y -+# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set - CONFIG_SELECT_MEMORY_MODEL=y - CONFIG_FLATMEM_MANUAL=y - # CONFIG_DISCONTIGMEM_MANUAL is not set -@@ -170,7 +169,7 @@ - # Cache configuration - # - # CONFIG_SH_DIRECT_MAPPED is not set --# CONFIG_SH_WRITETHROUGH is not set -+CONFIG_SH_WRITETHROUGH=y - # CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x08000000 - CONFIG_MEMORY_SIZE=0x04000000 -@@ -182,13 +181,12 @@ - CONFIG_SH_RTC=y - CONFIG_SH_FPU=y - # CONFIG_SH_STORE_QUEUES is not set --CONFIG_CPU_HAS_INTEVT=y --CONFIG_CPU_HAS_SR_RB=y - - # - # Timer support - # - CONFIG_SH_TMU=y -+CONFIG_SH_PCLK_FREQ_BOOL=y - CONFIG_SH_PCLK_FREQ=66000000 - - # -@@ -223,12 +221,12 @@ - CONFIG_BOOT_LINK_OFFSET=0x00800000 - # CONFIG_UBC_WAKEUP is not set - CONFIG_CMDLINE_BOOL=y --CONFIG_CMDLINE="console=ttySC0,115200" -+CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/hda1" - - # - # Bus options - # --# CONFIG_SUPERHYWAY is not set -+CONFIG_SUPERHYWAY=y - # CONFIG_PCI is not set - - # -@@ -263,7 +261,7 @@ - # CONFIG_IP_ADVANCED_ROUTER is not set - CONFIG_IP_FIB_HASH=y - CONFIG_IP_PNP=y --CONFIG_IP_PNP_DHCP=y -+# CONFIG_IP_PNP_DHCP is not set - # CONFIG_IP_PNP_BOOTP is not set - # CONFIG_IP_PNP_RARP is not set - # CONFIG_NET_IPIP is not set -@@ -290,11 +288,6 @@ - # SCTP Configuration (EXPERIMENTAL) - # - # CONFIG_IP_SCTP is not set -- --# --# TIPC Configuration (EXPERIMENTAL) --# --# CONFIG_TIPC is not set - # CONFIG_ATM is not set - # CONFIG_BRIDGE is not set - # CONFIG_VLAN_8021Q is not set -@@ -387,6 +380,7 @@ - # IDE chipset support/bugfixes - # - CONFIG_IDE_GENERIC=y -+CONFIG_IDE_SH=y - # CONFIG_IDE_ARM is not set - # CONFIG_BLK_DEV_IDEDMA is not set - # CONFIG_IDEDMA_AUTO is not set -@@ -437,6 +431,7 @@ - CONFIG_MII=y - # CONFIG_STNIC is not set - CONFIG_SMC91X=y -+# CONFIG_NE2000 is not set - - # - # Ethernet (1000 Mbit) -@@ -539,12 +534,6 @@ - # CONFIG_I2C is not set - - # --# SPI support --# --# CONFIG_SPI is not set --# CONFIG_SPI_MASTER is not set -- --# - # Dallas's 1-wire bus - # - # CONFIG_W1 is not set -@@ -613,10 +602,6 @@ - # - - # --# EDAC - error detection and reporting (RAS) --# -- --# - # File systems - # - CONFIG_EXT2_FS=y -@@ -633,7 +618,6 @@ - # CONFIG_JFS_FS is not set - # CONFIG_FS_POSIX_ACL is not set - # CONFIG_XFS_FS is not set --# CONFIG_OCFS2_FS is not set - # CONFIG_MINIX_FS is not set - # CONFIG_ROMFS_FS is not set - CONFIG_INOTIFY=y -@@ -666,11 +650,10 @@ - CONFIG_PROC_KCORE=y - CONFIG_SYSFS=y - CONFIG_TMPFS=y --# CONFIG_HUGETLBFS is not set --# CONFIG_HUGETLB_PAGE is not set -+CONFIG_HUGETLBFS=y -+CONFIG_HUGETLB_PAGE=y - CONFIG_RAMFS=y - # CONFIG_RELAYFS_FS is not set --# CONFIG_CONFIGFS_FS is not set - - # - # Miscellaneous filesystems -@@ -772,10 +755,9 @@ - # Kernel hacking - # - # CONFIG_PRINTK_TIME is not set --# CONFIG_MAGIC_SYSRQ is not set - # CONFIG_DEBUG_KERNEL is not set - CONFIG_LOG_BUF_SHIFT=14 --# CONFIG_FRAME_POINTER is not set -+CONFIG_FRAME_POINTER=y - # CONFIG_SH_STANDARD_BIOS is not set - # CONFIG_EARLY_SCIF_CONSOLE is not set - # CONFIG_KGDB is not set -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/r7780rp_defconfig linux-2.6.17/arch/sh/configs/r7780rp_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/r7780rp_defconfig 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/r7780rp_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,1140 @@ -+# -+# Automatically generated make config: don't edit -+# Linux kernel version: 2.6.17 -+# Wed Jul 5 17:40:33 2006 -+# -+CONFIG_SUPERH=y -+CONFIG_RWSEM_GENERIC_SPINLOCK=y -+CONFIG_GENERIC_FIND_NEXT_BIT=y -+CONFIG_GENERIC_HWEIGHT=y -+CONFIG_GENERIC_HARDIRQS=y -+CONFIG_GENERIC_IRQ_PROBE=y -+CONFIG_GENERIC_CALIBRATE_DELAY=y -+ -+# -+# Code maturity level options -+# -+CONFIG_EXPERIMENTAL=y -+CONFIG_BROKEN_ON_SMP=y -+CONFIG_LOCK_KERNEL=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 -+ -+# -+# General setup -+# -+CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y -+CONFIG_SWAP=y -+CONFIG_SYSVIPC=y -+# CONFIG_POSIX_MQUEUE is not set -+CONFIG_BSD_PROCESS_ACCT=y -+# CONFIG_BSD_PROCESS_ACCT_V3 is not set -+CONFIG_SYSCTL=y -+# CONFIG_AUDIT is not set -+CONFIG_IKCONFIG=y -+CONFIG_IKCONFIG_PROC=y -+# CONFIG_RELAY is not set -+CONFIG_INITRAMFS_SOURCE="" -+CONFIG_UID16=y -+CONFIG_CC_OPTIMIZE_FOR_SIZE=y -+CONFIG_EMBEDDED=y -+CONFIG_KALLSYMS=y -+# CONFIG_KALLSYMS_ALL is not set -+# CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_HOTPLUG=y -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_ELF_CORE=y -+CONFIG_BASE_FULL=y -+# CONFIG_FUTEX is not set -+# CONFIG_EPOLL is not set -+CONFIG_SHMEM=y -+CONFIG_SLAB=y -+# CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 -+# CONFIG_SLOB is not set -+ -+# -+# Loadable module support -+# -+CONFIG_MODULES=y -+CONFIG_MODULE_UNLOAD=y -+# CONFIG_MODULE_FORCE_UNLOAD is not set -+# CONFIG_MODVERSIONS is not set -+# CONFIG_MODULE_SRCVERSION_ALL is not set -+CONFIG_KMOD=y -+ -+# -+# Block layer -+# -+# CONFIG_LBD is not set -+# CONFIG_BLK_DEV_IO_TRACE is not set -+# CONFIG_LSF is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+# CONFIG_IOSCHED_AS is not set -+# CONFIG_IOSCHED_DEADLINE is not set -+# CONFIG_IOSCHED_CFQ is not set -+# CONFIG_DEFAULT_AS is not set -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+CONFIG_DEFAULT_NOOP=y -+CONFIG_DEFAULT_IOSCHED="noop" -+ -+# -+# System type -+# -+# CONFIG_SH_SOLUTION_ENGINE is not set -+# CONFIG_SH_7751_SOLUTION_ENGINE is not set -+# CONFIG_SH_7300_SOLUTION_ENGINE is not set -+# CONFIG_SH_73180_SOLUTION_ENGINE is not set -+# CONFIG_SH_7751_SYSTEMH is not set -+# CONFIG_SH_STB1_HARP is not set -+# CONFIG_SH_STB1_OVERDRIVE is not set -+# CONFIG_SH_HP6XX is not set -+# CONFIG_SH_CQREEK is not set -+# CONFIG_SH_DMIDA is not set -+# CONFIG_SH_EC3104 is not set -+# CONFIG_SH_SATURN is not set -+# CONFIG_SH_DREAMCAST is not set -+# CONFIG_SH_CAT68701 is not set -+# CONFIG_SH_BIGSUR is not set -+# CONFIG_SH_SH2000 is not set -+# CONFIG_SH_ADX is not set -+# CONFIG_SH_MPC1211 is not set -+# CONFIG_SH_SH03 is not set -+# CONFIG_SH_SECUREEDGE5410 is not set -+# CONFIG_SH_HS7751RVOIP is not set -+# CONFIG_SH_RTS7751R2D is not set -+CONFIG_SH_R7780RP=y -+# CONFIG_SH_EDOSK7705 is not set -+# CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set -+# CONFIG_SH_UNKNOWN is not set -+ -+# -+# Processor selection -+# -+CONFIG_CPU_SH4=y -+CONFIG_CPU_SH4A=y -+ -+# -+# SH-2 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7300 is not set -+# CONFIG_CPU_SUBTYPE_SH7705 is not set -+# CONFIG_CPU_SUBTYPE_SH7707 is not set -+# CONFIG_CPU_SUBTYPE_SH7708 is not set -+# CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set -+# CONFIG_CPU_SUBTYPE_SH7751 is not set -+# CONFIG_CPU_SUBTYPE_SH7751R is not set -+# CONFIG_CPU_SUBTYPE_SH7760 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_ST40STB1 is not set -+# CONFIG_CPU_SUBTYPE_ST40GX1 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+CONFIG_CPU_SUBTYPE_SH7780=y -+ -+# -+# Memory management options -+# -+CONFIG_MMU=y -+CONFIG_32BIT=y -+CONFIG_HUGETLB_PAGE_SIZE_64K=y -+# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set -+CONFIG_MEMORY_START=0x08000000 -+CONFIG_MEMORY_SIZE=0x08000000 -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y -+CONFIG_SH_FPU=y -+CONFIG_SH_STORE_QUEUES=y -+CONFIG_CPU_HAS_INTEVT=y -+CONFIG_CPU_HAS_INTC2_IRQ=y -+CONFIG_CPU_HAS_SR_RB=y -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+CONFIG_SH_PCLK_FREQ=32000000 -+ -+# -+# CPU Frequency scaling -+# -+# CONFIG_CPU_FREQ is not set -+ -+# -+# DMA support -+# -+CONFIG_SH_DMA=y -+CONFIG_NR_ONCHIP_DMA_CHANNELS=6 -+# CONFIG_NR_DMA_CHANNELS_BOOL is not set -+ -+# -+# Companion Chips -+# -+# CONFIG_HD6446X_SERIES is not set -+ -+# -+# Kernel features -+# -+# CONFIG_KEXEC is not set -+CONFIG_PREEMPT=y -+# CONFIG_SMP is not set -+ -+# -+# Boot options -+# -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+CONFIG_CMDLINE_BOOL=y -+CONFIG_CMDLINE="mem=128M console=ttySC0,115200 root=/dev/hda1" -+ -+# -+# Bus options -+# -+CONFIG_PCI=y -+CONFIG_SH_PCIDMA_NONCOHERENT=y -+CONFIG_PCI_AUTO=y -+CONFIG_PCI_AUTO_UPDATE_RESOURCES=y -+# CONFIG_PCI_DEBUG is not set -+ -+# -+# PCCARD (PCMCIA/CardBus) support -+# -+# CONFIG_PCCARD is not set -+ -+# -+# PCI Hotplug Support -+# -+CONFIG_HOTPLUG_PCI=y -+# CONFIG_HOTPLUG_PCI_FAKE is not set -+# CONFIG_HOTPLUG_PCI_CPCI is not set -+# CONFIG_HOTPLUG_PCI_SHPC is not set -+ -+# -+# Executable file formats -+# -+CONFIG_BINFMT_ELF=y -+# CONFIG_BINFMT_FLAT is not set -+# CONFIG_BINFMT_MISC is not set -+ -+# -+# Power management options (EXPERIMENTAL) -+# -+# CONFIG_PM is not set -+ -+# -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+# CONFIG_NETDEBUG is not set -+CONFIG_PACKET=y -+# CONFIG_PACKET_MMAP is not set -+CONFIG_UNIX=y -+# CONFIG_NET_KEY is not set -+CONFIG_INET=y -+# CONFIG_IP_MULTICAST is not set -+CONFIG_IP_ADVANCED_ROUTER=y -+CONFIG_ASK_IP_FIB_HASH=y -+# CONFIG_IP_FIB_TRIE is not set -+CONFIG_IP_FIB_HASH=y -+# CONFIG_IP_MULTIPLE_TABLES is not set -+# CONFIG_IP_ROUTE_MULTIPATH is not set -+# CONFIG_IP_ROUTE_VERBOSE is not set -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+# CONFIG_IP_PNP_BOOTP is not set -+# CONFIG_IP_PNP_RARP is not set -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE is not set -+# CONFIG_ARPD is not set -+# CONFIG_SYN_COOKIES is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+# CONFIG_INET_XFRM_TUNNEL is not set -+# CONFIG_INET_TUNNEL is not set -+CONFIG_INET_DIAG=y -+CONFIG_INET_TCP_DIAG=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+# CONFIG_IPV6 is not set -+# CONFIG_INET6_XFRM_TUNNEL is not set -+# CONFIG_INET6_TUNNEL is not set -+# CONFIG_NETFILTER is not set -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+ -+# -+# TIPC Configuration (EXPERIMENTAL) -+# -+# CONFIG_TIPC is not set -+# CONFIG_ATM is not set -+CONFIG_BRIDGE=m -+# CONFIG_VLAN_8021Q is not set -+# CONFIG_DECNET is not set -+CONFIG_LLC=m -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+ -+# -+# QoS and/or fair queueing -+# -+# CONFIG_NET_SCHED is not set -+ -+# -+# Network testing -+# -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+# CONFIG_IEEE80211 is not set -+CONFIG_WIRELESS_EXT=y -+ -+# -+# Device Drivers -+# -+ -+# -+# Generic Driver Options -+# -+CONFIG_STANDALONE=y -+CONFIG_PREVENT_FIRMWARE_BUILD=y -+CONFIG_FW_LOADER=m -+# CONFIG_DEBUG_DRIVER is not set -+ -+# -+# Connector - unified userspace <-> kernelspace linker -+# -+# CONFIG_CONNECTOR is not set -+ -+# -+# Memory Technology Devices (MTD) -+# -+# CONFIG_MTD is not set -+ -+# -+# Parallel port support -+# -+# CONFIG_PARPORT is not set -+ -+# -+# Plug and Play support -+# -+ -+# -+# Block devices -+# -+# CONFIG_BLK_CPQ_DA is not set -+# CONFIG_BLK_CPQ_CISS_DA is not set -+# CONFIG_BLK_DEV_DAC960 is not set -+# CONFIG_BLK_DEV_UMEM is not set -+# CONFIG_BLK_DEV_COW_COMMON is not set -+# CONFIG_BLK_DEV_LOOP is not set -+# CONFIG_BLK_DEV_NBD is not set -+# CONFIG_BLK_DEV_SX8 is not set -+CONFIG_BLK_DEV_RAM=y -+CONFIG_BLK_DEV_RAM_COUNT=16 -+CONFIG_BLK_DEV_RAM_SIZE=4096 -+# CONFIG_BLK_DEV_INITRD is not set -+# CONFIG_CDROM_PKTCDVD is not set -+# CONFIG_ATA_OVER_ETH is not set -+ -+# -+# ATA/ATAPI/MFM/RLL support -+# -+CONFIG_IDE=m -+CONFIG_IDE_MAX_HWIFS=4 -+CONFIG_BLK_DEV_IDE=m -+ -+# -+# Please see Documentation/ide.txt for help/info on IDE drives -+# -+CONFIG_BLK_DEV_IDE_SATA=y -+CONFIG_BLK_DEV_IDEDISK=m -+CONFIG_IDEDISK_MULTI_MODE=y -+# CONFIG_BLK_DEV_IDECD is not set -+# CONFIG_BLK_DEV_IDETAPE is not set -+# CONFIG_BLK_DEV_IDEFLOPPY is not set -+CONFIG_BLK_DEV_IDESCSI=m -+# CONFIG_IDE_TASK_IOCTL is not set -+ -+# -+# IDE chipset support/bugfixes -+# -+CONFIG_IDE_GENERIC=m -+CONFIG_BLK_DEV_IDEPCI=y -+CONFIG_IDEPCI_SHARE_IRQ=y -+# CONFIG_BLK_DEV_OFFBOARD is not set -+CONFIG_BLK_DEV_GENERIC=m -+# CONFIG_BLK_DEV_OPTI621 is not set -+CONFIG_BLK_DEV_IDEDMA_PCI=y -+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set -+CONFIG_IDEDMA_PCI_AUTO=y -+# CONFIG_IDEDMA_ONLYDISK is not set -+CONFIG_BLK_DEV_AEC62XX=m -+# CONFIG_BLK_DEV_ALI15X3 is not set -+# CONFIG_BLK_DEV_AMD74XX is not set -+# CONFIG_BLK_DEV_CMD64X is not set -+# CONFIG_BLK_DEV_TRIFLEX is not set -+# CONFIG_BLK_DEV_CY82C693 is not set -+# CONFIG_BLK_DEV_CS5520 is not set -+# CONFIG_BLK_DEV_CS5530 is not set -+# CONFIG_BLK_DEV_HPT34X is not set -+# CONFIG_BLK_DEV_HPT366 is not set -+# CONFIG_BLK_DEV_SC1200 is not set -+# CONFIG_BLK_DEV_PIIX is not set -+# CONFIG_BLK_DEV_IT821X is not set -+# CONFIG_BLK_DEV_NS87415 is not set -+# CONFIG_BLK_DEV_PDC202XX_OLD is not set -+CONFIG_BLK_DEV_PDC202XX_NEW=m -+# CONFIG_BLK_DEV_SVWKS is not set -+CONFIG_BLK_DEV_SIIMAGE=m -+# CONFIG_BLK_DEV_SLC90E66 is not set -+# CONFIG_BLK_DEV_TRM290 is not set -+# CONFIG_BLK_DEV_VIA82CXXX is not set -+CONFIG_IDE_SH=y -+# CONFIG_IDE_ARM is not set -+CONFIG_BLK_DEV_IDEDMA=y -+# CONFIG_IDEDMA_IVB is not set -+CONFIG_IDEDMA_AUTO=y -+# CONFIG_BLK_DEV_HD is not set -+ -+# -+# SCSI device support -+# -+# CONFIG_RAID_ATTRS is not set -+CONFIG_SCSI=m -+CONFIG_SCSI_PROC_FS=y -+ -+# -+# SCSI support type (disk, tape, CD-ROM) -+# -+CONFIG_BLK_DEV_SD=m -+# CONFIG_CHR_DEV_ST is not set -+# CONFIG_CHR_DEV_OSST is not set -+# CONFIG_BLK_DEV_SR is not set -+CONFIG_CHR_DEV_SG=m -+# CONFIG_CHR_DEV_SCH is not set -+ -+# -+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -+# -+# CONFIG_SCSI_MULTI_LUN is not set -+# CONFIG_SCSI_CONSTANTS is not set -+# CONFIG_SCSI_LOGGING is not set -+ -+# -+# SCSI Transport Attributes -+# -+# CONFIG_SCSI_SPI_ATTRS is not set -+# CONFIG_SCSI_FC_ATTRS is not set -+# CONFIG_SCSI_ISCSI_ATTRS is not set -+# CONFIG_SCSI_SAS_ATTRS is not set -+ -+# -+# SCSI low-level drivers -+# -+# CONFIG_ISCSI_TCP is not set -+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -+# CONFIG_SCSI_3W_9XXX is not set -+# CONFIG_SCSI_ACARD is not set -+# CONFIG_SCSI_AACRAID is not set -+# CONFIG_SCSI_AIC7XXX is not set -+# CONFIG_SCSI_AIC7XXX_OLD is not set -+# CONFIG_SCSI_AIC79XX is not set -+# CONFIG_SCSI_DPT_I2O is not set -+# CONFIG_MEGARAID_NEWGEN is not set -+# CONFIG_MEGARAID_LEGACY is not set -+# CONFIG_MEGARAID_SAS is not set -+# CONFIG_SCSI_SATA is not set -+# CONFIG_SCSI_DMX3191D is not set -+# CONFIG_SCSI_FUTURE_DOMAIN is not set -+# CONFIG_SCSI_IPS is not set -+# CONFIG_SCSI_INITIO is not set -+# CONFIG_SCSI_INIA100 is not set -+# CONFIG_SCSI_SYM53C8XX_2 is not set -+# CONFIG_SCSI_IPR is not set -+# CONFIG_SCSI_QLOGIC_1280 is not set -+# CONFIG_SCSI_QLA_FC is not set -+# CONFIG_SCSI_LPFC is not set -+# CONFIG_SCSI_DC395x is not set -+# CONFIG_SCSI_DC390T is not set -+# CONFIG_SCSI_NSP32 is not set -+# CONFIG_SCSI_DEBUG is not set -+ -+# -+# Multi-device support (RAID and LVM) -+# -+# CONFIG_MD is not set -+ -+# -+# Fusion MPT device support -+# -+# CONFIG_FUSION is not set -+# CONFIG_FUSION_SPI is not set -+# CONFIG_FUSION_FC is not set -+# CONFIG_FUSION_SAS is not set -+ -+# -+# IEEE 1394 (FireWire) support -+# -+# CONFIG_IEEE1394 is not set -+ -+# -+# I2O device support -+# -+# CONFIG_I2O is not set -+ -+# -+# Network device support -+# -+CONFIG_NETDEVICES=y -+# CONFIG_DUMMY is not set -+# CONFIG_BONDING is not set -+# CONFIG_EQUALIZER is not set -+# CONFIG_TUN is not set -+ -+# -+# ARCnet devices -+# -+# CONFIG_ARCNET is not set -+ -+# -+# PHY device support -+# -+# CONFIG_PHYLIB is not set -+ -+# -+# Ethernet (10 or 100Mbit) -+# -+CONFIG_NET_ETHERNET=y -+CONFIG_MII=y -+# CONFIG_STNIC is not set -+# CONFIG_HAPPYMEAL is not set -+# CONFIG_SUNGEM is not set -+# CONFIG_CASSINI is not set -+# CONFIG_NET_VENDOR_3COM is not set -+# CONFIG_SMC91X is not set -+ -+# -+# Tulip family network device support -+# -+# CONFIG_NET_TULIP is not set -+# CONFIG_HP100 is not set -+CONFIG_NE2000=y -+CONFIG_NET_PCI=y -+CONFIG_PCNET32=m -+# CONFIG_AMD8111_ETH is not set -+# CONFIG_ADAPTEC_STARFIRE is not set -+# CONFIG_B44 is not set -+# CONFIG_FORCEDETH is not set -+# CONFIG_DGRS is not set -+# CONFIG_EEPRO100 is not set -+# CONFIG_E100 is not set -+# CONFIG_FEALNX is not set -+# CONFIG_NATSEMI is not set -+# CONFIG_NE2K_PCI is not set -+CONFIG_8139CP=m -+CONFIG_8139TOO=m -+# CONFIG_8139TOO_PIO is not set -+# CONFIG_8139TOO_TUNE_TWISTER is not set -+CONFIG_8139TOO_8129=y -+# CONFIG_8139_OLD_RX_RESET is not set -+# CONFIG_SIS900 is not set -+# CONFIG_EPIC100 is not set -+# CONFIG_SUNDANCE is not set -+# CONFIG_TLAN is not set -+CONFIG_VIA_RHINE=m -+CONFIG_VIA_RHINE_MMIO=y -+ -+# -+# Ethernet (1000 Mbit) -+# -+# CONFIG_ACENIC is not set -+# CONFIG_DL2K is not set -+CONFIG_E1000=m -+# CONFIG_E1000_NAPI is not set -+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set -+# CONFIG_NS83820 is not set -+# CONFIG_HAMACHI is not set -+# CONFIG_YELLOWFIN is not set -+CONFIG_R8169=y -+# CONFIG_R8169_NAPI is not set -+# CONFIG_SIS190 is not set -+# CONFIG_SKGE is not set -+# CONFIG_SKY2 is not set -+# CONFIG_SK98LIN is not set -+# CONFIG_VIA_VELOCITY is not set -+# CONFIG_TIGON3 is not set -+# CONFIG_BNX2 is not set -+ -+# -+# Ethernet (10000 Mbit) -+# -+# CONFIG_CHELSIO_T1 is not set -+# CONFIG_IXGB is not set -+# CONFIG_S2IO is not set -+ -+# -+# Token Ring devices -+# -+# CONFIG_TR is not set -+ -+# -+# Wireless LAN (non-hamradio) -+# -+CONFIG_NET_RADIO=y -+# CONFIG_NET_WIRELESS_RTNETLINK is not set -+ -+# -+# Obsolete Wireless cards support (pre-802.11) -+# -+# CONFIG_STRIP is not set -+ -+# -+# Wireless 802.11b ISA/PCI cards support -+# -+# CONFIG_IPW2100 is not set -+# CONFIG_IPW2200 is not set -+CONFIG_HERMES=m -+# CONFIG_PLX_HERMES is not set -+# CONFIG_TMD_HERMES is not set -+# CONFIG_NORTEL_HERMES is not set -+# CONFIG_PCI_HERMES is not set -+# CONFIG_ATMEL is not set -+ -+# -+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support -+# -+CONFIG_PRISM54=m -+# CONFIG_HOSTAP is not set -+CONFIG_NET_WIRELESS=y -+ -+# -+# Wan interfaces -+# -+# CONFIG_WAN is not set -+# CONFIG_FDDI is not set -+# CONFIG_HIPPI is not set -+# CONFIG_PPP is not set -+# CONFIG_SLIP is not set -+# CONFIG_NET_FC is not set -+# CONFIG_SHAPER is not set -+# CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set -+ -+# -+# ISDN subsystem -+# -+# CONFIG_ISDN is not set -+ -+# -+# Telephony Support -+# -+# CONFIG_PHONE is not set -+ -+# -+# Input device support -+# -+CONFIG_INPUT=y -+ -+# -+# Userland interfaces -+# -+CONFIG_INPUT_MOUSEDEV=y -+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -+# CONFIG_INPUT_JOYDEV is not set -+# CONFIG_INPUT_TSDEV is not set -+# CONFIG_INPUT_EVDEV is not set -+# CONFIG_INPUT_EVBUG is not set -+ -+# -+# Input Device Drivers -+# -+CONFIG_INPUT_KEYBOARD=y -+CONFIG_KEYBOARD_ATKBD=y -+# CONFIG_KEYBOARD_SUNKBD is not set -+# CONFIG_KEYBOARD_LKKBD is not set -+# CONFIG_KEYBOARD_XTKBD is not set -+# CONFIG_KEYBOARD_NEWTON is not set -+# CONFIG_INPUT_MOUSE is not set -+# CONFIG_INPUT_JOYSTICK is not set -+# CONFIG_INPUT_TOUCHSCREEN is not set -+# CONFIG_INPUT_MISC is not set -+ -+# -+# Hardware I/O ports -+# -+CONFIG_SERIO=y -+# CONFIG_SERIO_I8042 is not set -+# CONFIG_SERIO_SERPORT is not set -+# CONFIG_SERIO_PCIPS2 is not set -+CONFIG_SERIO_LIBPS2=y -+# CONFIG_SERIO_RAW is not set -+# CONFIG_GAMEPORT is not set -+ -+# -+# Character devices -+# -+# CONFIG_VT is not set -+# CONFIG_SERIAL_NONSTANDARD is not set -+ -+# -+# Serial drivers -+# -+# CONFIG_SERIAL_8250 is not set -+ -+# -+# Non-8250 serial port support -+# -+CONFIG_SERIAL_SH_SCI=y -+CONFIG_SERIAL_SH_SCI_CONSOLE=y -+CONFIG_SERIAL_CORE=y -+CONFIG_SERIAL_CORE_CONSOLE=y -+# CONFIG_SERIAL_JSM is not set -+CONFIG_UNIX98_PTYS=y -+CONFIG_LEGACY_PTYS=y -+CONFIG_LEGACY_PTY_COUNT=256 -+ -+# -+# IPMI -+# -+# CONFIG_IPMI_HANDLER is not set -+ -+# -+# Watchdog Cards -+# -+# CONFIG_WATCHDOG is not set -+# CONFIG_RTC is not set -+# CONFIG_GEN_RTC is not set -+# CONFIG_DTLK is not set -+# CONFIG_R3964 is not set -+# CONFIG_APPLICOM is not set -+ -+# -+# Ftape, the floppy tape device driver -+# -+# CONFIG_DRM is not set -+# CONFIG_RAW_DRIVER is not set -+ -+# -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# -+# I2C support -+# -+# CONFIG_I2C is not set -+ -+# -+# SPI support -+# -+# CONFIG_SPI is not set -+# CONFIG_SPI_MASTER is not set -+ -+# -+# Dallas's 1-wire bus -+# -+# CONFIG_W1 is not set -+ -+# -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_SENSORS_F71805F is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# -+# Misc devices -+# -+ -+# -+# Multimedia devices -+# -+# CONFIG_VIDEO_DEV is not set -+CONFIG_VIDEO_V4L2=y -+ -+# -+# Digital Video Broadcasting Devices -+# -+# CONFIG_DVB is not set -+ -+# -+# Graphics support -+# -+# CONFIG_FB is not set -+ -+# -+# Sound -+# -+CONFIG_SOUND=m -+ -+# -+# Advanced Linux Sound Architecture -+# -+# CONFIG_SND is not set -+ -+# -+# Open Sound System -+# -+CONFIG_SOUND_PRIME=m -+# CONFIG_SOUND_BT878 is not set -+# CONFIG_SOUND_EMU10K1 is not set -+# CONFIG_SOUND_FUSION is not set -+# CONFIG_SOUND_ES1371 is not set -+# CONFIG_SOUND_ICH is not set -+# CONFIG_SOUND_TRIDENT is not set -+# CONFIG_SOUND_MSNDCLAS is not set -+# CONFIG_SOUND_MSNDPIN is not set -+# CONFIG_SOUND_VIA82CXXX is not set -+ -+# -+# USB support -+# -+CONFIG_USB_ARCH_HAS_HCD=y -+CONFIG_USB_ARCH_HAS_OHCI=y -+CONFIG_USB_ARCH_HAS_EHCI=y -+# CONFIG_USB is not set -+ -+# -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -+# -+ -+# -+# USB Gadget Support -+# -+# CONFIG_USB_GADGET is not set -+ -+# -+# MMC/SD Card support -+# -+# CONFIG_MMC is not set -+ -+# -+# LED devices -+# -+# CONFIG_NEW_LEDS is not set -+ -+# -+# LED drivers -+# -+ -+# -+# LED Triggers -+# -+ -+# -+# InfiniBand support -+# -+# CONFIG_INFINIBAND is not set -+ -+# -+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) -+# -+ -+# -+# Real Time Clock -+# -+# CONFIG_RTC_CLASS is not set -+ -+# -+# File systems -+# -+CONFIG_EXT2_FS=y -+# CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set -+CONFIG_EXT3_FS=y -+CONFIG_EXT3_FS_XATTR=y -+# CONFIG_EXT3_FS_POSIX_ACL is not set -+# CONFIG_EXT3_FS_SECURITY is not set -+CONFIG_JBD=y -+# CONFIG_JBD_DEBUG is not set -+CONFIG_FS_MBCACHE=y -+# CONFIG_REISERFS_FS is not set -+# CONFIG_JFS_FS is not set -+CONFIG_FS_POSIX_ACL=y -+# CONFIG_XFS_FS is not set -+# CONFIG_OCFS2_FS is not set -+CONFIG_MINIX_FS=y -+# CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y -+# CONFIG_QUOTA is not set -+CONFIG_DNOTIFY=y -+# CONFIG_AUTOFS_FS is not set -+# CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set -+ -+# -+# CD-ROM/DVD Filesystems -+# -+# CONFIG_ISO9660_FS is not set -+# CONFIG_UDF_FS is not set -+ -+# -+# DOS/FAT/NT Filesystems -+# -+CONFIG_FAT_FS=y -+CONFIG_MSDOS_FS=y -+CONFIG_VFAT_FS=y -+CONFIG_FAT_DEFAULT_CODEPAGE=437 -+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -+CONFIG_NTFS_FS=y -+# CONFIG_NTFS_DEBUG is not set -+CONFIG_NTFS_RW=y -+ -+# -+# Pseudo filesystems -+# -+CONFIG_PROC_FS=y -+CONFIG_PROC_KCORE=y -+CONFIG_SYSFS=y -+# CONFIG_TMPFS is not set -+CONFIG_HUGETLBFS=y -+CONFIG_HUGETLB_PAGE=y -+CONFIG_RAMFS=y -+# CONFIG_CONFIGFS_FS is not set -+ -+# -+# Miscellaneous filesystems -+# -+# CONFIG_ADFS_FS is not set -+# CONFIG_AFFS_FS is not set -+# CONFIG_HFS_FS is not set -+# CONFIG_HFSPLUS_FS is not set -+# CONFIG_BEFS_FS is not set -+# CONFIG_BFS_FS is not set -+# CONFIG_EFS_FS is not set -+# CONFIG_CRAMFS is not set -+# CONFIG_VXFS_FS is not set -+# CONFIG_HPFS_FS is not set -+# CONFIG_QNX4FS_FS is not set -+# CONFIG_SYSV_FS is not set -+# CONFIG_UFS_FS is not set -+ -+# -+# Network File Systems -+# -+CONFIG_NFS_FS=y -+CONFIG_NFS_V3=y -+# CONFIG_NFS_V3_ACL is not set -+CONFIG_NFS_V4=y -+# CONFIG_NFS_DIRECTIO is not set -+CONFIG_NFSD=y -+CONFIG_NFSD_V3=y -+# CONFIG_NFSD_V3_ACL is not set -+CONFIG_NFSD_V4=y -+CONFIG_NFSD_TCP=y -+CONFIG_ROOT_NFS=y -+CONFIG_LOCKD=y -+CONFIG_LOCKD_V4=y -+CONFIG_EXPORTFS=y -+CONFIG_NFS_COMMON=y -+CONFIG_SUNRPC=y -+CONFIG_SUNRPC_GSS=y -+CONFIG_RPCSEC_GSS_KRB5=y -+# CONFIG_RPCSEC_GSS_SPKM3 is not set -+# CONFIG_SMB_FS is not set -+# CONFIG_CIFS is not set -+# CONFIG_NCP_FS is not set -+# CONFIG_CODA_FS is not set -+# CONFIG_AFS_FS is not set -+# CONFIG_9P_FS is not set -+ -+# -+# Partition Types -+# -+# CONFIG_PARTITION_ADVANCED is not set -+CONFIG_MSDOS_PARTITION=y -+ -+# -+# Native Language Support -+# -+CONFIG_NLS=y -+CONFIG_NLS_DEFAULT="iso8859-1" -+CONFIG_NLS_CODEPAGE_437=y -+# CONFIG_NLS_CODEPAGE_737 is not set -+# CONFIG_NLS_CODEPAGE_775 is not set -+# CONFIG_NLS_CODEPAGE_850 is not set -+# CONFIG_NLS_CODEPAGE_852 is not set -+# CONFIG_NLS_CODEPAGE_855 is not set -+# CONFIG_NLS_CODEPAGE_857 is not set -+# CONFIG_NLS_CODEPAGE_860 is not set -+# CONFIG_NLS_CODEPAGE_861 is not set -+# CONFIG_NLS_CODEPAGE_862 is not set -+# CONFIG_NLS_CODEPAGE_863 is not set -+# CONFIG_NLS_CODEPAGE_864 is not set -+# CONFIG_NLS_CODEPAGE_865 is not set -+# CONFIG_NLS_CODEPAGE_866 is not set -+# CONFIG_NLS_CODEPAGE_869 is not set -+# CONFIG_NLS_CODEPAGE_936 is not set -+# CONFIG_NLS_CODEPAGE_950 is not set -+CONFIG_NLS_CODEPAGE_932=y -+# CONFIG_NLS_CODEPAGE_949 is not set -+# CONFIG_NLS_CODEPAGE_874 is not set -+# CONFIG_NLS_ISO8859_8 is not set -+# CONFIG_NLS_CODEPAGE_1250 is not set -+# CONFIG_NLS_CODEPAGE_1251 is not set -+# CONFIG_NLS_ASCII is not set -+CONFIG_NLS_ISO8859_1=y -+# CONFIG_NLS_ISO8859_2 is not set -+# CONFIG_NLS_ISO8859_3 is not set -+# CONFIG_NLS_ISO8859_4 is not set -+# CONFIG_NLS_ISO8859_5 is not set -+# CONFIG_NLS_ISO8859_6 is not set -+# CONFIG_NLS_ISO8859_7 is not set -+# CONFIG_NLS_ISO8859_9 is not set -+# CONFIG_NLS_ISO8859_13 is not set -+# CONFIG_NLS_ISO8859_14 is not set -+# CONFIG_NLS_ISO8859_15 is not set -+# CONFIG_NLS_KOI8_R is not set -+# CONFIG_NLS_KOI8_U is not set -+# CONFIG_NLS_UTF8 is not set -+ -+# -+# Profiling support -+# -+# CONFIG_PROFILING is not set -+ -+# -+# Kernel hacking -+# -+# CONFIG_PRINTK_TIME is not set -+# CONFIG_MAGIC_SYSRQ is not set -+CONFIG_DEBUG_KERNEL=y -+CONFIG_LOG_BUF_SHIFT=14 -+CONFIG_DETECT_SOFTLOCKUP=y -+# CONFIG_SCHEDSTATS is not set -+# CONFIG_DEBUG_SLAB is not set -+CONFIG_DEBUG_PREEMPT=y -+# CONFIG_DEBUG_MUTEXES is not set -+CONFIG_DEBUG_SPINLOCK=y -+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -+# CONFIG_DEBUG_KOBJECT is not set -+# CONFIG_DEBUG_INFO is not set -+CONFIG_DEBUG_FS=y -+# CONFIG_DEBUG_VM is not set -+CONFIG_FRAME_POINTER=y -+CONFIG_FORCED_INLINING=y -+# CONFIG_RCU_TORTURE_TEST is not set -+# CONFIG_SH_STANDARD_BIOS is not set -+# CONFIG_EARLY_SCIF_CONSOLE is not set -+# CONFIG_KGDB is not set -+ -+# -+# Security options -+# -+# CONFIG_KEYS is not set -+# CONFIG_SECURITY is not set -+ -+# -+# Cryptographic options -+# -+CONFIG_CRYPTO=y -+CONFIG_CRYPTO_HMAC=y -+# CONFIG_CRYPTO_NULL is not set -+# CONFIG_CRYPTO_MD4 is not set -+CONFIG_CRYPTO_MD5=y -+# CONFIG_CRYPTO_SHA1 is not set -+# CONFIG_CRYPTO_SHA256 is not set -+# CONFIG_CRYPTO_SHA512 is not set -+# CONFIG_CRYPTO_WP512 is not set -+# CONFIG_CRYPTO_TGR192 is not set -+CONFIG_CRYPTO_DES=y -+# CONFIG_CRYPTO_BLOWFISH is not set -+# CONFIG_CRYPTO_TWOFISH is not set -+# CONFIG_CRYPTO_SERPENT is not set -+# CONFIG_CRYPTO_AES is not set -+# CONFIG_CRYPTO_CAST5 is not set -+# CONFIG_CRYPTO_CAST6 is not set -+# CONFIG_CRYPTO_TEA is not set -+# CONFIG_CRYPTO_ARC4 is not set -+# CONFIG_CRYPTO_KHAZAD is not set -+# CONFIG_CRYPTO_ANUBIS is not set -+# CONFIG_CRYPTO_DEFLATE is not set -+# CONFIG_CRYPTO_MICHAEL_MIC is not set -+# CONFIG_CRYPTO_CRC32C is not set -+# CONFIG_CRYPTO_TEST is not set -+ -+# -+# Hardware crypto devices -+# -+ -+# -+# Library routines -+# -+# CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set -+CONFIG_CRC32=y -+# CONFIG_LIBCRC32C is not set -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/rts7751r2d_defconfig linux-2.6.17/arch/sh/configs/rts7751r2d_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/rts7751r2d_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/rts7751r2d_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:42 2005 -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 19:00:01 2006 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -16,33 +16,39 @@ - CONFIG_EXPERIMENTAL=y - CONFIG_CLEAN_COMPILE=y - CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup - # - CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y - CONFIG_SWAP=y - CONFIG_SYSVIPC=y - # CONFIG_POSIX_MQUEUE is not set - # CONFIG_BSD_PROCESS_ACCT is not set - CONFIG_SYSCTL=y - # CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - CONFIG_HOTPLUG=y - CONFIG_KOBJECT_UEVENT=y - # CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_EMBEDDED=y - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -55,6 +61,24 @@ - # CONFIG_KMOD is not set - - # -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+CONFIG_IOSCHED_CFQ=y -+CONFIG_DEFAULT_AS=y -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+# CONFIG_DEFAULT_NOOP is not set -+CONFIG_DEFAULT_IOSCHED="anticipatory" -+ -+# - # System type - # - # CONFIG_SH_SOLUTION_ENGINE is not set -@@ -64,9 +88,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -83,44 +105,94 @@ - CONFIG_SH_RTS7751R2D=y - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set --# CONFIG_CPU_SH3 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - CONFIG_CPU_SUBTYPE_SH7751=y -+CONFIG_CPU_SUBTYPE_SH7751R=y - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --CONFIG_CMDLINE_BOOL=y --CONFIG_CMDLINE="mem=64M console=ttySC0,115200 root=/dev/hda1" -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x0c000000 - CONFIG_MEMORY_SIZE=0x04000000 --CONFIG_MEMORY_SET=y --# CONFIG_MEMORY_OVERRIDE is not set -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y - CONFIG_SH_RTC=y - CONFIG_SH_FPU=y --CONFIG_ZERO_PAGE_OFFSET=0x00010000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 --CONFIG_CPU_LITTLE_ENDIAN=y --# CONFIG_PREEMPT is not set --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set - # CONFIG_SH_STORE_QUEUES is not set --# CONFIG_SMP is not set -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+ -+# -+# RTS7751R2D options -+# - CONFIG_RTS7751R2D_REV11=y --CONFIG_SH_PCLK_CALC=y --CONFIG_SH_PCLK_FREQ=60000000 -+# CONFIG_SH_PCLK_FREQ_BOOL is not set - - # - # CPU Frequency scaling -@@ -140,17 +212,31 @@ - CONFIG_VOYAGERGX=y - # CONFIG_HD6446X_SERIES is not set - CONFIG_HEARTBEAT=y --CONFIG_RTC_9701JE=y - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features -+# -+# CONFIG_KEXEC is not set -+# CONFIG_PREEMPT is not set -+# CONFIG_SMP is not set -+ -+# -+# Boot options -+# -+CONFIG_ZERO_PAGE_OFFSET=0x00010000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+CONFIG_CMDLINE_BOOL=y -+CONFIG_CMDLINE="mem=64M console=ttySC0,115200 root=/dev/hda1" -+ -+# -+# Bus options - # - CONFIG_PCI=y - CONFIG_SH_PCIDMA_NONCOHERENT=y - CONFIG_PCI_AUTO=y - CONFIG_PCI_AUTO_UPDATE_RESOURCES=y - # CONFIG_PCI_LEGACY_PROC is not set --CONFIG_PCI_NAMES=y - - # - # PCCARD (PCMCIA/CardBus) support -@@ -158,10 +244,6 @@ - # CONFIG_PCCARD is not set - - # --# PC-card bridges --# -- --# - # PCI Hotplug Support - # - CONFIG_HOTPLUG_PCI=y -@@ -177,6 +259,74 @@ - # CONFIG_BINFMT_MISC is not set - - # -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+CONFIG_PACKET=y -+# CONFIG_PACKET_MMAP is not set -+CONFIG_UNIX=y -+# CONFIG_NET_KEY is not set -+CONFIG_INET=y -+# CONFIG_IP_MULTICAST is not set -+# CONFIG_IP_ADVANCED_ROUTER is not set -+CONFIG_IP_FIB_HASH=y -+# CONFIG_IP_PNP is not set -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE is not set -+# CONFIG_ARPD is not set -+# CONFIG_SYN_COOKIES is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+# CONFIG_INET_TUNNEL is not set -+CONFIG_INET_DIAG=y -+CONFIG_INET_TCP_DIAG=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+# CONFIG_IPV6 is not set -+# CONFIG_NETFILTER is not set -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+# CONFIG_ATM is not set -+# CONFIG_BRIDGE is not set -+# CONFIG_VLAN_8021Q is not set -+# CONFIG_DECNET is not set -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+ -+# -+# QoS and/or fair queueing -+# -+# CONFIG_NET_SCHED is not set -+ -+# -+# Network testing -+# -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+# CONFIG_IEEE80211 is not set -+ -+# - # Device Drivers - # - -@@ -188,6 +338,11 @@ - # CONFIG_FW_LOADER is not set - - # -+# Connector - unified userspace <-> kernelspace linker -+# -+# CONFIG_CONNECTOR is not set -+ -+# - # Memory Technology Devices (MTD) - # - # CONFIG_MTD is not set -@@ -204,7 +359,6 @@ - # - # Block devices - # --# CONFIG_BLK_DEV_FD is not set - # CONFIG_BLK_CPQ_DA is not set - # CONFIG_BLK_CPQ_CISS_DA is not set - # CONFIG_BLK_DEV_DAC960 is not set -@@ -217,17 +371,7 @@ - CONFIG_BLK_DEV_RAM_COUNT=16 - CONFIG_BLK_DEV_RAM_SIZE=4096 - # CONFIG_BLK_DEV_INITRD is not set --CONFIG_INITRAMFS_SOURCE="" --# CONFIG_LBD is not set - # CONFIG_CDROM_PKTCDVD is not set -- --# --# IO Schedulers --# --CONFIG_IOSCHED_NOOP=y --CONFIG_IOSCHED_AS=y --CONFIG_IOSCHED_DEADLINE=y --CONFIG_IOSCHED_CFQ=y - # CONFIG_ATA_OVER_ETH is not set - - # -@@ -262,6 +406,7 @@ - # - # SCSI device support - # -+# CONFIG_RAID_ATTRS is not set - # CONFIG_SCSI is not set - - # -@@ -272,6 +417,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -284,67 +430,8 @@ - # CONFIG_I2O is not set - - # --# Networking support --# --CONFIG_NET=y -- --# --# Networking options --# --CONFIG_PACKET=y --# CONFIG_PACKET_MMAP is not set --# CONFIG_NETLINK_DEV is not set --CONFIG_UNIX=y --# CONFIG_NET_KEY is not set --CONFIG_INET=y --# CONFIG_IP_MULTICAST is not set --# CONFIG_IP_ADVANCED_ROUTER is not set --# CONFIG_IP_PNP is not set --# CONFIG_NET_IPIP is not set --# CONFIG_NET_IPGRE is not set --# CONFIG_ARPD is not set --# CONFIG_SYN_COOKIES is not set --# CONFIG_INET_AH is not set --# CONFIG_INET_ESP is not set --# CONFIG_INET_IPCOMP is not set --# CONFIG_INET_TUNNEL is not set --CONFIG_IP_TCPDIAG=y --# CONFIG_IP_TCPDIAG_IPV6 is not set --# CONFIG_IPV6 is not set --# CONFIG_NETFILTER is not set -- --# --# SCTP Configuration (EXPERIMENTAL) --# --# CONFIG_IP_SCTP is not set --# CONFIG_ATM is not set --# CONFIG_BRIDGE is not set --# CONFIG_VLAN_8021Q is not set --# CONFIG_DECNET is not set --# CONFIG_LLC2 is not set --# CONFIG_IPX is not set --# CONFIG_ATALK is not set --# CONFIG_X25 is not set --# CONFIG_LAPB is not set --# CONFIG_NET_DIVERT is not set --# CONFIG_ECONET is not set --# CONFIG_WAN_ROUTER is not set -- --# --# QoS and/or fair queueing -+# Network device support - # --# CONFIG_NET_SCHED is not set --# CONFIG_NET_CLS_ROUTE is not set -- --# --# Network testing --# --# CONFIG_NET_PKTGEN is not set --# CONFIG_NETPOLL is not set --# CONFIG_NET_POLL_CONTROLLER is not set --# CONFIG_HAMRADIO is not set --# CONFIG_IRDA is not set --# CONFIG_BT is not set - CONFIG_NETDEVICES=y - # CONFIG_DUMMY is not set - # CONFIG_BONDING is not set -@@ -357,6 +444,11 @@ - # CONFIG_ARCNET is not set - - # -+# PHY device support -+# -+# CONFIG_PHYLIB is not set -+ -+# - # Ethernet (10 or 100Mbit) - # - CONFIG_NET_ETHERNET=y -@@ -364,6 +456,7 @@ - # CONFIG_STNIC is not set - # CONFIG_HAPPYMEAL is not set - # CONFIG_SUNGEM is not set -+# CONFIG_CASSINI is not set - # CONFIG_NET_VENDOR_3COM is not set - # CONFIG_SMC91X is not set - -@@ -372,6 +465,7 @@ - # - # CONFIG_NET_TULIP is not set - # CONFIG_HP100 is not set -+# CONFIG_NE2000 is not set - CONFIG_NET_PCI=y - # CONFIG_PCNET32 is not set - # CONFIG_AMD8111_ETH is not set -@@ -406,13 +500,17 @@ - # CONFIG_HAMACHI is not set - # CONFIG_YELLOWFIN is not set - # CONFIG_R8169 is not set -+# CONFIG_SIS190 is not set -+# CONFIG_SKGE is not set - # CONFIG_SK98LIN is not set - # CONFIG_VIA_VELOCITY is not set - # CONFIG_TIGON3 is not set -+# CONFIG_BNX2 is not set - - # - # Ethernet (10000 Mbit) - # -+# CONFIG_CHELSIO_T1 is not set - # CONFIG_IXGB is not set - # CONFIG_S2IO is not set - -@@ -437,6 +535,7 @@ - CONFIG_HERMES=m - # CONFIG_PLX_HERMES is not set - # CONFIG_TMD_HERMES is not set -+# CONFIG_NORTEL_HERMES is not set - # CONFIG_PCI_HERMES is not set - # CONFIG_ATMEL is not set - -@@ -444,6 +543,7 @@ - # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support - # - # CONFIG_PRISM54 is not set -+# CONFIG_HOSTAP is not set - CONFIG_NET_WIRELESS=y - - # -@@ -456,6 +556,8 @@ - # CONFIG_SLIP is not set - # CONFIG_SHAPER is not set - # CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set - - # - # ISDN subsystem -@@ -473,20 +575,10 @@ - # CONFIG_INPUT is not set - - # --# Userland interfaces --# -- --# --# Input I/O drivers -+# Hardware I/O ports - # --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y - # CONFIG_SERIO is not set --# CONFIG_SERIO_I8042 is not set -- --# --# Input Device Drivers --# -+# CONFIG_GAMEPORT is not set - - # - # Character devices -@@ -503,6 +595,7 @@ - # Non-8250 serial port support - # - # CONFIG_SERIAL_SH_SCI is not set -+# CONFIG_SERIAL_JSM is not set - # CONFIG_UNIX98_PTYS is not set - CONFIG_LEGACY_PTYS=y - CONFIG_LEGACY_PTY_COUNT=256 -@@ -517,6 +610,7 @@ - # - # CONFIG_WATCHDOG is not set - # CONFIG_RTC is not set -+CONFIG_RTC_9701JE=y - # CONFIG_GEN_RTC is not set - # CONFIG_DTLK is not set - # CONFIG_R3964 is not set -@@ -529,6 +623,12 @@ - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# - # I2C support - # - # CONFIG_I2C is not set -@@ -539,10 +639,21 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - - # -+# Multimedia Capabilities Port drivers -+# -+ -+# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -@@ -566,6 +677,8 @@ - # Advanced Linux Sound Architecture - # - CONFIG_SND=m -+CONFIG_SND_AC97_CODEC=m -+CONFIG_SND_AC97_BUS=m - CONFIG_SND_TIMER=m - CONFIG_SND_PCM=m - CONFIG_SND_HWDEP=m -@@ -589,7 +702,6 @@ - # - # PCI devices - # --CONFIG_SND_AC97_CODEC=m - # CONFIG_SND_ALI5451 is not set - # CONFIG_SND_ATIIXP is not set - # CONFIG_SND_ATIIXP_MODEM is not set -@@ -610,9 +722,10 @@ - # CONFIG_SND_RME96 is not set - # CONFIG_SND_RME9652 is not set - # CONFIG_SND_HDSP is not set -+# CONFIG_SND_HDSPM is not set - # CONFIG_SND_TRIDENT is not set - CONFIG_SND_YMFPCI=m --# CONFIG_SND_ALS4000 is not set -+# CONFIG_SND_AD1889 is not set - # CONFIG_SND_CMIPCI is not set - # CONFIG_SND_ENS1370 is not set - # CONFIG_SND_ENS1371 is not set -@@ -628,43 +741,29 @@ - # CONFIG_SND_VIA82XX is not set - # CONFIG_SND_VIA82XX_MODEM is not set - # CONFIG_SND_VX222 is not set -+# CONFIG_SND_HDA_INTEL is not set - - # - # Open Sound System - # - CONFIG_SOUND_PRIME=m --# CONFIG_SOUND_BT878 is not set --CONFIG_SOUND_CMPCI=m --# CONFIG_SOUND_EMU10K1 is not set -+# CONFIG_OBSOLETE_OSS_DRIVER is not set - # CONFIG_SOUND_FUSION is not set --# CONFIG_SOUND_CS4281 is not set --# CONFIG_SOUND_ES1370 is not set --# CONFIG_SOUND_ES1371 is not set --# CONFIG_SOUND_ESSSOLO1 is not set --# CONFIG_SOUND_MAESTRO is not set --# CONFIG_SOUND_MAESTRO3 is not set - # CONFIG_SOUND_ICH is not set --# CONFIG_SOUND_SONICVIBES is not set - # CONFIG_SOUND_TRIDENT is not set - # CONFIG_SOUND_MSNDCLAS is not set - # CONFIG_SOUND_MSNDPIN is not set --# CONFIG_SOUND_VIA82CXXX is not set --# CONFIG_SOUND_OSS is not set --# CONFIG_SOUND_ALI5455 is not set --# CONFIG_SOUND_FORTE is not set --# CONFIG_SOUND_RME96XX is not set --# CONFIG_SOUND_AD1980 is not set - CONFIG_SOUND_VOYAGERGX=m - - # - # USB support - # --# CONFIG_USB is not set - CONFIG_USB_ARCH_HAS_HCD=y - CONFIG_USB_ARCH_HAS_OHCI=y -+# CONFIG_USB is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' - # - - # -@@ -683,25 +782,29 @@ - # CONFIG_INFINIBAND is not set - - # -+# SN Devices -+# -+ -+# - # File systems - # - CONFIG_EXT2_FS=y - # CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set - # CONFIG_EXT3_FS is not set - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -- --# --# XFS support --# -+# CONFIG_FS_POSIX_ACL is not set - # CONFIG_XFS_FS is not set - CONFIG_MINIX_FS=y - # CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - # CONFIG_AUTOFS_FS is not set - # CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set - - # - # CD-ROM/DVD Filesystems -@@ -725,11 +828,11 @@ - CONFIG_PROC_FS=y - CONFIG_PROC_KCORE=y - CONFIG_SYSFS=y --# CONFIG_DEVFS_FS is not set - # CONFIG_TMPFS is not set - # CONFIG_HUGETLBFS is not set - # CONFIG_HUGETLB_PAGE is not set - CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set - - # - # Miscellaneous filesystems -@@ -758,6 +861,7 @@ - # CONFIG_NCP_FS is not set - # CONFIG_CODA_FS is not set - # CONFIG_AFS_FS is not set -+# CONFIG_9P_FS is not set - - # - # Partition Types -@@ -818,7 +922,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - # CONFIG_SH_STANDARD_BIOS is not set - # CONFIG_EARLY_SCIF_CONSOLE is not set -@@ -843,5 +949,6 @@ - # Library routines - # - # CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set - CONFIG_CRC32=y - # CONFIG_LIBCRC32C is not set -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/se7300_defconfig linux-2.6.17/arch/sh/configs/se7300_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/se7300_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/se7300_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:43 2005 -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 19:07:24 2006 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -16,30 +16,35 @@ - CONFIG_EXPERIMENTAL=y - CONFIG_CLEAN_COMPILE=y - CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup - # - CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y - # CONFIG_SWAP is not set - # CONFIG_SYSVIPC is not set - # CONFIG_BSD_PROCESS_ACCT is not set - CONFIG_SYSCTL=y --# CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_HOTPLUG is not set - # CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_EMBEDDED=y - # CONFIG_KALLSYMS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - # CONFIG_FUTEX is not set - # CONFIG_EPOLL is not set --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -47,6 +52,24 @@ - # CONFIG_MODULES is not set - - # -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+# CONFIG_IOSCHED_AS is not set -+# CONFIG_IOSCHED_DEADLINE is not set -+# CONFIG_IOSCHED_CFQ is not set -+# CONFIG_DEFAULT_AS is not set -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+CONFIG_DEFAULT_NOOP=y -+CONFIG_DEFAULT_IOSCHED="noop" -+ -+# - # System type - # - # CONFIG_SH_SOLUTION_ENGINE is not set -@@ -56,9 +79,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -75,40 +96,88 @@ - # CONFIG_SH_RTS7751R2D is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH3=y --# CONFIG_CPU_SH4 is not set -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - CONFIG_CPU_SUBTYPE_SH7300=y - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - # CONFIG_CPU_SUBTYPE_SH7751 is not set -+# CONFIG_CPU_SUBTYPE_SH7751R is not set - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --CONFIG_CMDLINE_BOOL=y --CONFIG_CMDLINE="console=ttySC0,38400 root=/dev/ram0" -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x0c000000 - CONFIG_MEMORY_SIZE=0x04000000 --# CONFIG_MEMORY_OVERRIDE is not set -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y - CONFIG_SH_DSP=y - # CONFIG_SH_ADC is not set --CONFIG_ZERO_PAGE_OFFSET=0x00001000 --CONFIG_BOOT_LINK_OFFSET=0x00210000 --CONFIG_CPU_LITTLE_ENDIAN=y --# CONFIG_PREEMPT is not set --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set --# CONFIG_SMP is not set --# CONFIG_SH_PCLK_CALC is not set -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+CONFIG_SH_PCLK_FREQ_BOOL=y - CONFIG_SH_PCLK_FREQ=33333333 - - # -@@ -128,18 +197,30 @@ - CONFIG_HEARTBEAT=y - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features - # --# CONFIG_PCI is not set -+# CONFIG_KEXEC is not set -+# CONFIG_PREEMPT is not set -+# CONFIG_SMP is not set - - # --# PCCARD (PCMCIA/CardBus) support -+# Boot options - # --# CONFIG_PCCARD is not set -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00210000 -+# CONFIG_UBC_WAKEUP is not set -+CONFIG_CMDLINE_BOOL=y -+CONFIG_CMDLINE="console=ttySC0,38400 root=/dev/ram0" -+ -+# -+# Bus options -+# -+# CONFIG_PCI is not set - - # --# PC-card bridges -+# PCCARD (PCMCIA/CardBus) support - # -+# CONFIG_PCCARD is not set - - # - # PCI Hotplug Support -@@ -153,10 +234,9 @@ - # CONFIG_BINFMT_MISC is not set - - # --# SH initrd options -+# Networking - # --CONFIG_EMBEDDED_RAMDISK=y --CONFIG_EMBEDDED_RAMDISK_IMAGE="ramdisk.gz" -+# CONFIG_NET is not set - - # - # Device Drivers -@@ -170,6 +250,10 @@ - # CONFIG_FW_LOADER is not set - - # -+# Connector - unified userspace <-> kernelspace linker -+# -+ -+# - # Memory Technology Devices (MTD) - # - # CONFIG_MTD is not set -@@ -186,26 +270,15 @@ - # - # Block devices - # --# CONFIG_BLK_DEV_FD is not set - # CONFIG_BLK_DEV_COW_COMMON is not set - # CONFIG_BLK_DEV_LOOP is not set - CONFIG_BLK_DEV_RAM=y - CONFIG_BLK_DEV_RAM_COUNT=16 - CONFIG_BLK_DEV_RAM_SIZE=4096 - CONFIG_BLK_DEV_INITRD=y --CONFIG_INITRAMFS_SOURCE="" --# CONFIG_LBD is not set - # CONFIG_CDROM_PKTCDVD is not set - - # --# IO Schedulers --# --CONFIG_IOSCHED_NOOP=y --# CONFIG_IOSCHED_AS is not set --# CONFIG_IOSCHED_DEADLINE is not set --# CONFIG_IOSCHED_CFQ is not set -- --# - # ATA/ATAPI/MFM/RLL support - # - # CONFIG_IDE is not set -@@ -213,6 +286,7 @@ - # - # SCSI device support - # -+# CONFIG_RAID_ATTRS is not set - # CONFIG_SCSI is not set - - # -@@ -223,6 +297,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -233,9 +308,8 @@ - # - - # --# Networking support -+# Network device support - # --# CONFIG_NET is not set - # CONFIG_NETPOLL is not set - # CONFIG_NET_POLL_CONTROLLER is not set - -@@ -266,18 +340,6 @@ - # CONFIG_INPUT_EVBUG is not set - - # --# Input I/O drivers --# --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y --CONFIG_SERIO=y --# CONFIG_SERIO_I8042 is not set --# CONFIG_SERIO_SERPORT is not set --# CONFIG_SERIO_CT82C710 is not set --# CONFIG_SERIO_LIBPS2 is not set --# CONFIG_SERIO_RAW is not set -- --# - # Input Device Drivers - # - # CONFIG_INPUT_KEYBOARD is not set -@@ -287,6 +349,16 @@ - # CONFIG_INPUT_MISC is not set - - # -+# Hardware I/O ports -+# -+CONFIG_SERIO=y -+# CONFIG_SERIO_I8042 is not set -+# CONFIG_SERIO_SERPORT is not set -+# CONFIG_SERIO_LIBPS2 is not set -+# CONFIG_SERIO_RAW is not set -+# CONFIG_GAMEPORT is not set -+ -+# - # Character devices - # - # CONFIG_VT is not set -@@ -336,10 +408,15 @@ - # - # Ftape, the floppy tape device driver - # --# CONFIG_DRM is not set - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# - # I2C support - # - # CONFIG_I2C is not set -@@ -350,10 +427,21 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - - # -+# Multimedia Capabilities Port drivers -+# -+ -+# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -@@ -379,7 +467,7 @@ - # CONFIG_USB_ARCH_HAS_OHCI is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' - # - - # -@@ -395,28 +483,31 @@ - # - # InfiniBand support - # --# CONFIG_INFINIBAND is not set -+ -+# -+# SN Devices -+# - - # - # File systems - # - CONFIG_EXT2_FS=y - # CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set - # CONFIG_EXT3_FS is not set - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -- --# --# XFS support --# -+# CONFIG_FS_POSIX_ACL is not set - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set - # CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - # CONFIG_AUTOFS_FS is not set - # CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set - - # - # CD-ROM/DVD Filesystems -@@ -437,13 +528,11 @@ - CONFIG_PROC_FS=y - CONFIG_PROC_KCORE=y - CONFIG_SYSFS=y --CONFIG_DEVFS_FS=y --CONFIG_DEVFS_MOUNT=y --# CONFIG_DEVFS_DEBUG is not set - # CONFIG_TMPFS is not set - # CONFIG_HUGETLBFS is not set - # CONFIG_HUGETLB_PAGE is not set - CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set - - # - # Miscellaneous filesystems -@@ -481,7 +570,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - CONFIG_SH_STANDARD_BIOS=y - CONFIG_EARLY_PRINTK=y -@@ -527,5 +618,6 @@ - # Library routines - # - # CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set - CONFIG_CRC32=y - # CONFIG_LIBCRC32C is not set -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/se73180_defconfig linux-2.6.17/arch/sh/configs/se73180_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/se73180_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/se73180_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:44 2005 -+# Linux kernel version: 2.6.15-sh -+# Sun Jan 8 13:54:18 2006 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -16,30 +16,35 @@ - CONFIG_EXPERIMENTAL=y - CONFIG_CLEAN_COMPILE=y - CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup - # - CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y - CONFIG_SWAP=y - # CONFIG_SYSVIPC is not set - # CONFIG_BSD_PROCESS_ACCT is not set - # CONFIG_SYSCTL is not set --# CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_HOTPLUG is not set - # CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_EMBEDDED=y - # CONFIG_KALLSYMS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - # CONFIG_FUTEX is not set - # CONFIG_EPOLL is not set --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -52,6 +57,24 @@ - # CONFIG_KMOD is not set - - # -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+# CONFIG_IOSCHED_AS is not set -+# CONFIG_IOSCHED_DEADLINE is not set -+# CONFIG_IOSCHED_CFQ is not set -+# CONFIG_DEFAULT_AS is not set -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+CONFIG_DEFAULT_NOOP=y -+CONFIG_DEFAULT_IOSCHED="noop" -+ -+# - # System type - # - # CONFIG_SH_SOLUTION_ENGINE is not set -@@ -61,9 +84,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -78,42 +99,95 @@ - # CONFIG_SH_SECUREEDGE5410 is not set - # CONFIG_SH_HS7751RVOIP is not set - # CONFIG_SH_RTS7751R2D is not set -+# CONFIG_SH_R7780RP is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set --# CONFIG_CPU_SH3 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH4=y -+CONFIG_CPU_SH4A=y -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - # CONFIG_CPU_SUBTYPE_SH7751 is not set -+# CONFIG_CPU_SUBTYPE_SH7751R is not set - # CONFIG_CPU_SUBTYPE_SH7760 is not set --CONFIG_CPU_SUBTYPE_SH73180=y -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+CONFIG_CPU_SUBTYPE_SH73180=y -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --CONFIG_CMDLINE_BOOL=y --CONFIG_CMDLINE="console=ttySC0,38400 root=/dev/ram" -+CONFIG_32BIT=y -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x0c000000 - CONFIG_MEMORY_SIZE=0x02000000 --# CONFIG_MEMORY_OVERRIDE is not set --# CONFIG_SH_FPU is not set --CONFIG_ZERO_PAGE_OFFSET=0x00010000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 -+ -+# -+# Processor features -+# - CONFIG_CPU_LITTLE_ENDIAN=y --# CONFIG_PREEMPT is not set --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set -+# CONFIG_SH_FPU is not set - # CONFIG_SH_STORE_QUEUES is not set --# CONFIG_SMP is not set --# CONFIG_SH_PCLK_CALC is not set -+CONFIG_CPU_HAS_INTEVT=y -+CONFIG_CPU_HAS_SR_RB=y -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+CONFIG_SH_PCLK_FREQ_BOOL=y - CONFIG_SH_PCLK_FREQ=27000000 - - # -@@ -133,18 +207,30 @@ - CONFIG_HEARTBEAT=y - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features - # --# CONFIG_PCI is not set -+# CONFIG_KEXEC is not set -+# CONFIG_PREEMPT is not set -+# CONFIG_SMP is not set - - # --# PCCARD (PCMCIA/CardBus) support -+# Boot options - # --# CONFIG_PCCARD is not set -+CONFIG_ZERO_PAGE_OFFSET=0x00010000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+CONFIG_CMDLINE_BOOL=y -+CONFIG_CMDLINE="console=ttySC0,38400 root=/dev/ram" -+ -+# -+# Bus options -+# -+# CONFIG_PCI is not set - - # --# PC-card bridges -+# PCCARD (PCMCIA/CardBus) support - # -+# CONFIG_PCCARD is not set - - # - # PCI Hotplug Support -@@ -158,10 +244,9 @@ - # CONFIG_BINFMT_MISC is not set - - # --# SH initrd options -+# Networking - # --CONFIG_EMBEDDED_RAMDISK=y --CONFIG_EMBEDDED_RAMDISK_IMAGE="ramdisk.gz" -+# CONFIG_NET is not set - - # - # Device Drivers -@@ -175,6 +260,10 @@ - # CONFIG_FW_LOADER is not set - - # -+# Connector - unified userspace <-> kernelspace linker -+# -+ -+# - # Memory Technology Devices (MTD) - # - # CONFIG_MTD is not set -@@ -191,7 +280,6 @@ - # - # Block devices - # --# CONFIG_BLK_DEV_FD is not set - # CONFIG_BLK_DEV_COW_COMMON is not set - CONFIG_BLK_DEV_LOOP=y - # CONFIG_BLK_DEV_CRYPTOLOOP is not set -@@ -199,19 +287,9 @@ - CONFIG_BLK_DEV_RAM_COUNT=16 - CONFIG_BLK_DEV_RAM_SIZE=4096 - CONFIG_BLK_DEV_INITRD=y --CONFIG_INITRAMFS_SOURCE="" --# CONFIG_LBD is not set - # CONFIG_CDROM_PKTCDVD is not set - - # --# IO Schedulers --# --CONFIG_IOSCHED_NOOP=y --# CONFIG_IOSCHED_AS is not set --# CONFIG_IOSCHED_DEADLINE is not set --# CONFIG_IOSCHED_CFQ is not set -- --# - # ATA/ATAPI/MFM/RLL support - # - # CONFIG_IDE is not set -@@ -219,6 +297,7 @@ - # - # SCSI device support - # -+# CONFIG_RAID_ATTRS is not set - # CONFIG_SCSI is not set - - # -@@ -229,6 +308,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -239,9 +319,8 @@ - # - - # --# Networking support -+# Network device support - # --# CONFIG_NET is not set - # CONFIG_NETPOLL is not set - # CONFIG_NET_POLL_CONTROLLER is not set - -@@ -260,20 +339,10 @@ - # CONFIG_INPUT is not set - - # --# Userland interfaces --# -- --# --# Input I/O drivers -+# Hardware I/O ports - # --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y - # CONFIG_SERIO is not set --# CONFIG_SERIO_I8042 is not set -- --# --# Input Device Drivers --# -+# CONFIG_GAMEPORT is not set - - # - # Character devices -@@ -320,10 +389,15 @@ - # - # Ftape, the floppy tape device driver - # --# CONFIG_DRM is not set - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# - # I2C support - # - # CONFIG_I2C is not set -@@ -334,10 +408,21 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - - # -+# Multimedia Capabilities Port drivers -+# -+ -+# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -@@ -363,7 +448,7 @@ - # CONFIG_USB_ARCH_HAS_OHCI is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' - # - - # -@@ -379,28 +464,31 @@ - # - # InfiniBand support - # --# CONFIG_INFINIBAND is not set -+ -+# -+# SN Devices -+# - - # - # File systems - # - CONFIG_EXT2_FS=y - # CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set - # CONFIG_EXT3_FS is not set - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -- --# --# XFS support --# -+# CONFIG_FS_POSIX_ACL is not set - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set - # CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - # CONFIG_AUTOFS_FS is not set - # CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set - - # - # CD-ROM/DVD Filesystems -@@ -421,14 +509,11 @@ - CONFIG_PROC_FS=y - CONFIG_PROC_KCORE=y - # CONFIG_SYSFS is not set --CONFIG_DEVFS_FS=y --CONFIG_DEVFS_MOUNT=y --# CONFIG_DEVFS_DEBUG is not set - CONFIG_TMPFS=y --# CONFIG_TMPFS_XATTR is not set - # CONFIG_HUGETLBFS is not set - # CONFIG_HUGETLB_PAGE is not set - CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set - - # - # Miscellaneous filesystems -@@ -466,7 +551,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - CONFIG_SH_STANDARD_BIOS=y - # CONFIG_EARLY_SCIF_CONSOLE is not set -@@ -477,7 +564,6 @@ - # Security options - # - # CONFIG_KEYS is not set --# CONFIG_SECURITY is not set - - # - # Cryptographic options -@@ -492,5 +578,6 @@ - # Library routines - # - # CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set - CONFIG_CRC32=y - # CONFIG_LIBCRC32C is not set -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/se7705_defconfig linux-2.6.17/arch/sh/configs/se7705_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/se7705_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/se7705_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:45 2005 -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 19:35:13 2006 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -17,32 +17,38 @@ - CONFIG_CLEAN_COMPILE=y - CONFIG_BROKEN_ON_SMP=y - CONFIG_LOCK_KERNEL=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup - # - CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y - # CONFIG_SWAP is not set - # CONFIG_SYSVIPC is not set - # CONFIG_POSIX_MQUEUE is not set - # CONFIG_BSD_PROCESS_ACCT is not set - # CONFIG_SYSCTL is not set - # CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_HOTPLUG is not set - CONFIG_KOBJECT_UEVENT=y - # CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_EMBEDDED=y - # CONFIG_KALLSYMS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -55,6 +61,24 @@ - CONFIG_KMOD=y - - # -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+# CONFIG_IOSCHED_DEADLINE is not set -+# CONFIG_IOSCHED_CFQ is not set -+CONFIG_DEFAULT_AS=y -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+# CONFIG_DEFAULT_NOOP is not set -+CONFIG_DEFAULT_IOSCHED="anticipatory" -+ -+# - # System type - # - CONFIG_SH_SOLUTION_ENGINE=y -@@ -64,9 +88,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -83,44 +105,91 @@ - # CONFIG_SH_RTS7751R2D is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH3=y --# CONFIG_CPU_SH4 is not set -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - CONFIG_CPU_SUBTYPE_SH7705=y - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - # CONFIG_CPU_SUBTYPE_SH7751 is not set -+# CONFIG_CPU_SUBTYPE_SH7751R is not set - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set --CONFIG_SH7705_CACHE_32KB=y -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --# CONFIG_CMDLINE_BOOL is not set -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+CONFIG_SH7705_CACHE_32KB=y -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x0c000000 - CONFIG_MEMORY_SIZE=0x02000000 --CONFIG_MEMORY_SET=y --# CONFIG_MEMORY_OVERRIDE is not set - # CONFIG_CF_ENABLER is not set -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y - CONFIG_SH_RTC=y - # CONFIG_SH_DSP is not set - # CONFIG_SH_ADC is not set --CONFIG_ZERO_PAGE_OFFSET=0x00001000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 --CONFIG_CPU_LITTLE_ENDIAN=y --CONFIG_PREEMPT=y --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set --# CONFIG_SMP is not set --CONFIG_SH_PCLK_CALC=y --CONFIG_SH_PCLK_FREQ=33333333 -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+# CONFIG_SH_PCLK_FREQ_BOOL is not set - - # - # CPU Frequency scaling -@@ -139,18 +208,29 @@ - CONFIG_HEARTBEAT=y - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features - # --# CONFIG_PCI is not set -+# CONFIG_KEXEC is not set -+CONFIG_PREEMPT=y -+# CONFIG_SMP is not set - - # --# PCCARD (PCMCIA/CardBus) support -+# Boot options - # --# CONFIG_PCCARD is not set -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+# CONFIG_CMDLINE_BOOL is not set -+ -+# -+# Bus options -+# -+# CONFIG_PCI is not set - - # --# PC-card bridges -+# PCCARD (PCMCIA/CardBus) support - # -+# CONFIG_PCCARD is not set - - # - # PCI Hotplug Support -@@ -164,9 +244,75 @@ - # CONFIG_BINFMT_MISC is not set - - # --# SH initrd options -+# Networking - # --# CONFIG_EMBEDDED_RAMDISK is not set -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+CONFIG_PACKET=y -+# CONFIG_PACKET_MMAP is not set -+CONFIG_UNIX=y -+# CONFIG_NET_KEY is not set -+CONFIG_INET=y -+# CONFIG_IP_MULTICAST is not set -+# CONFIG_IP_ADVANCED_ROUTER is not set -+CONFIG_IP_FIB_HASH=y -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+CONFIG_IP_PNP_BOOTP=y -+CONFIG_IP_PNP_RARP=y -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE is not set -+# CONFIG_ARPD is not set -+# CONFIG_SYN_COOKIES is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+# CONFIG_INET_TUNNEL is not set -+CONFIG_INET_DIAG=y -+CONFIG_INET_TCP_DIAG=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+# CONFIG_IPV6 is not set -+# CONFIG_NETFILTER is not set -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+# CONFIG_ATM is not set -+# CONFIG_BRIDGE is not set -+# CONFIG_VLAN_8021Q is not set -+# CONFIG_DECNET is not set -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+ -+# -+# QoS and/or fair queueing -+# -+# CONFIG_NET_SCHED is not set -+ -+# -+# Network testing -+# -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+# CONFIG_IEEE80211 is not set - - # - # Device Drivers -@@ -180,12 +326,17 @@ - # CONFIG_FW_LOADER is not set - - # -+# Connector - unified userspace <-> kernelspace linker -+# -+# CONFIG_CONNECTOR is not set -+ -+# - # Memory Technology Devices (MTD) - # - CONFIG_MTD=y - # CONFIG_MTD_DEBUG is not set --CONFIG_MTD_PARTITIONS=y - # CONFIG_MTD_CONCAT is not set -+CONFIG_MTD_PARTITIONS=y - # CONFIG_MTD_REDBOOT_PARTS is not set - # CONFIG_MTD_CMDLINE_PARTS is not set - -@@ -197,6 +348,7 @@ - # CONFIG_FTL is not set - # CONFIG_NFTL is not set - # CONFIG_INFTL is not set -+# CONFIG_RFD_FTL is not set - - # - # RAM/ROM/Flash chip drivers -@@ -231,8 +383,7 @@ - # CONFIG_MTD_PHYSMAP is not set - CONFIG_MTD_SOLUTIONENGINE=y - CONFIG_MTD_SUPERH_RESERVE=0x300000 --# CONFIG_MTD_MPC1211 is not set --# CONFIG_MTD_RTS7751R2D is not set -+# CONFIG_MTD_PLATRAM is not set - - # - # Self-contained MTD device drivers -@@ -256,6 +407,11 @@ - # CONFIG_MTD_NAND is not set - - # -+# OneNAND Flash Device Drivers -+# -+# CONFIG_MTD_ONENAND is not set -+ -+# - # Parallel port support - # - # CONFIG_PARPORT is not set -@@ -267,7 +423,6 @@ - # - # Block devices - # --# CONFIG_BLK_DEV_FD is not set - # CONFIG_BLK_DEV_COW_COMMON is not set - # CONFIG_BLK_DEV_LOOP is not set - # CONFIG_BLK_DEV_NBD is not set -@@ -275,17 +430,7 @@ - CONFIG_BLK_DEV_RAM_COUNT=16 - CONFIG_BLK_DEV_RAM_SIZE=8192 - CONFIG_BLK_DEV_INITRD=y --CONFIG_INITRAMFS_SOURCE="" --# CONFIG_LBD is not set - # CONFIG_CDROM_PKTCDVD is not set -- --# --# IO Schedulers --# --CONFIG_IOSCHED_NOOP=y --CONFIG_IOSCHED_AS=y --# CONFIG_IOSCHED_DEADLINE is not set --# CONFIG_IOSCHED_CFQ is not set - # CONFIG_ATA_OVER_ETH is not set - - # -@@ -296,6 +441,7 @@ - # - # SCSI device support - # -+# CONFIG_RAID_ATTRS is not set - # CONFIG_SCSI is not set - - # -@@ -306,6 +452,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -316,70 +463,8 @@ - # - - # --# Networking support --# --CONFIG_NET=y -- --# --# Networking options --# --CONFIG_PACKET=y --# CONFIG_PACKET_MMAP is not set --# CONFIG_NETLINK_DEV is not set --CONFIG_UNIX=y --# CONFIG_NET_KEY is not set --CONFIG_INET=y --# CONFIG_IP_MULTICAST is not set --# CONFIG_IP_ADVANCED_ROUTER is not set --CONFIG_IP_PNP=y --CONFIG_IP_PNP_DHCP=y --CONFIG_IP_PNP_BOOTP=y --CONFIG_IP_PNP_RARP=y --# CONFIG_NET_IPIP is not set --# CONFIG_NET_IPGRE is not set --# CONFIG_ARPD is not set --# CONFIG_SYN_COOKIES is not set --# CONFIG_INET_AH is not set --# CONFIG_INET_ESP is not set --# CONFIG_INET_IPCOMP is not set --# CONFIG_INET_TUNNEL is not set --CONFIG_IP_TCPDIAG=y --# CONFIG_IP_TCPDIAG_IPV6 is not set --# CONFIG_IPV6 is not set --# CONFIG_NETFILTER is not set -- --# --# SCTP Configuration (EXPERIMENTAL) --# --# CONFIG_IP_SCTP is not set --# CONFIG_ATM is not set --# CONFIG_BRIDGE is not set --# CONFIG_VLAN_8021Q is not set --# CONFIG_DECNET is not set --# CONFIG_LLC2 is not set --# CONFIG_IPX is not set --# CONFIG_ATALK is not set --# CONFIG_X25 is not set --# CONFIG_LAPB is not set --# CONFIG_NET_DIVERT is not set --# CONFIG_ECONET is not set --# CONFIG_WAN_ROUTER is not set -- --# --# QoS and/or fair queueing --# --# CONFIG_NET_SCHED is not set --# CONFIG_NET_CLS_ROUTE is not set -- --# --# Network testing -+# Network device support - # --# CONFIG_NET_PKTGEN is not set --# CONFIG_NETPOLL is not set --# CONFIG_NET_POLL_CONTROLLER is not set --# CONFIG_HAMRADIO is not set --# CONFIG_IRDA is not set --# CONFIG_BT is not set - CONFIG_NETDEVICES=y - # CONFIG_DUMMY is not set - # CONFIG_BONDING is not set -@@ -387,12 +472,18 @@ - # CONFIG_TUN is not set - - # -+# PHY device support -+# -+# CONFIG_PHYLIB is not set -+ -+# - # Ethernet (10 or 100Mbit) - # - CONFIG_NET_ETHERNET=y - # CONFIG_MII is not set - CONFIG_STNIC=y - # CONFIG_SMC91X is not set -+# CONFIG_NE2000 is not set - - # - # Ethernet (1000 Mbit) -@@ -422,10 +513,13 @@ - # CONFIG_PPP_SYNC_TTY is not set - CONFIG_PPP_DEFLATE=y - # CONFIG_PPP_BSDCOMP is not set -+# CONFIG_PPP_MPPE is not set - # CONFIG_PPPOE is not set - # CONFIG_SLIP is not set - # CONFIG_SHAPER is not set - # CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set - - # - # ISDN subsystem -@@ -452,18 +546,6 @@ - # CONFIG_INPUT_EVBUG is not set - - # --# Input I/O drivers --# --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y --CONFIG_SERIO=y --# CONFIG_SERIO_I8042 is not set --# CONFIG_SERIO_SERPORT is not set --# CONFIG_SERIO_CT82C710 is not set --# CONFIG_SERIO_LIBPS2 is not set --# CONFIG_SERIO_RAW is not set -- --# - # Input Device Drivers - # - # CONFIG_INPUT_KEYBOARD is not set -@@ -473,6 +555,16 @@ - # CONFIG_INPUT_MISC is not set - - # -+# Hardware I/O ports -+# -+CONFIG_SERIO=y -+# CONFIG_SERIO_I8042 is not set -+# CONFIG_SERIO_SERPORT is not set -+# CONFIG_SERIO_LIBPS2 is not set -+# CONFIG_SERIO_RAW is not set -+# CONFIG_GAMEPORT is not set -+ -+# - # Character devices - # - # CONFIG_VT is not set -@@ -510,10 +602,15 @@ - # - # Ftape, the floppy tape device driver - # --# CONFIG_DRM is not set - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# - # I2C support - # - # CONFIG_I2C is not set -@@ -524,10 +621,21 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - - # -+# Multimedia Capabilities Port drivers -+# -+ -+# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -@@ -554,7 +662,7 @@ - # CONFIG_USB_ARCH_HAS_OHCI is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' - # - - # -@@ -570,28 +678,31 @@ - # - # InfiniBand support - # --# CONFIG_INFINIBAND is not set -+ -+# -+# SN Devices -+# - - # - # File systems - # - CONFIG_EXT2_FS=y - # CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set - # CONFIG_EXT3_FS is not set - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -- --# --# XFS support --# -+# CONFIG_FS_POSIX_ACL is not set - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set - # CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - # CONFIG_AUTOFS_FS is not set - # CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set - - # - # CD-ROM/DVD Filesystems -@@ -612,12 +723,11 @@ - CONFIG_PROC_FS=y - CONFIG_PROC_KCORE=y - # CONFIG_SYSFS is not set --# CONFIG_DEVFS_FS is not set --# CONFIG_DEVPTS_FS_XATTR is not set - # CONFIG_TMPFS is not set - # CONFIG_HUGETLBFS is not set - # CONFIG_HUGETLB_PAGE is not set - CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set - - # - # Miscellaneous filesystems -@@ -632,8 +742,8 @@ - # CONFIG_JFFS_FS is not set - CONFIG_JFFS2_FS=y - CONFIG_JFFS2_FS_DEBUG=0 --# CONFIG_JFFS2_FS_NAND is not set --# CONFIG_JFFS2_FS_NOR_ECC is not set -+CONFIG_JFFS2_FS_WRITEBUFFER=y -+# CONFIG_JFFS2_SUMMARY is not set - # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set - CONFIG_JFFS2_ZLIB=y - CONFIG_JFFS2_RTIME=y -@@ -655,6 +765,7 @@ - # CONFIG_NFSD is not set - CONFIG_ROOT_NFS=y - CONFIG_LOCKD=y -+CONFIG_NFS_COMMON=y - CONFIG_SUNRPC=y - # CONFIG_RPCSEC_GSS_KRB5 is not set - # CONFIG_RPCSEC_GSS_SPKM3 is not set -@@ -663,6 +774,7 @@ - # CONFIG_NCP_FS is not set - # CONFIG_CODA_FS is not set - # CONFIG_AFS_FS is not set -+# CONFIG_9P_FS is not set - - # - # Partition Types -@@ -683,8 +795,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set --CONFIG_DEBUG_PREEMPT=y -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - # CONFIG_SH_STANDARD_BIOS is not set - # CONFIG_KGDB is not set -@@ -693,7 +806,6 @@ - # Security options - # - # CONFIG_KEYS is not set --# CONFIG_SECURITY is not set - - # - # Cryptographic options -@@ -708,6 +820,7 @@ - # Library routines - # - CONFIG_CRC_CCITT=y -+# CONFIG_CRC16 is not set - CONFIG_CRC32=y - # CONFIG_LIBCRC32C is not set - CONFIG_ZLIB_INFLATE=y -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/se7750_defconfig linux-2.6.17/arch/sh/configs/se7750_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/se7750_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/se7750_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:46 2005 -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 19:57:15 2006 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -16,11 +16,13 @@ - CONFIG_EXPERIMENTAL=y - CONFIG_CLEAN_COMPILE=y - CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup - # - CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y - # CONFIG_SWAP is not set - CONFIG_SYSVIPC=y - # CONFIG_POSIX_MQUEUE is not set -@@ -28,23 +30,27 @@ - # CONFIG_BSD_PROCESS_ACCT_V3 is not set - CONFIG_SYSCTL=y - # CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_HOTPLUG is not set - CONFIG_KOBJECT_UEVENT=y - CONFIG_IKCONFIG=y - CONFIG_IKCONFIG_PROC=y -+CONFIG_INITRAMFS_SOURCE="" -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_EMBEDDED=y - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -57,6 +63,24 @@ - CONFIG_KMOD=y - - # -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+CONFIG_IOSCHED_CFQ=y -+CONFIG_DEFAULT_AS=y -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+# CONFIG_DEFAULT_NOOP is not set -+CONFIG_DEFAULT_IOSCHED="anticipatory" -+ -+# - # System type - # - CONFIG_SH_SOLUTION_ENGINE=y -@@ -66,9 +90,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -85,47 +107,93 @@ - # CONFIG_SH_RTS7751R2D is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set --# CONFIG_CPU_SH3 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - CONFIG_CPU_SUBTYPE_SH7750=y -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - # CONFIG_CPU_SUBTYPE_SH7751 is not set -+# CONFIG_CPU_SUBTYPE_SH7751R is not set - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --CONFIG_CMDLINE_BOOL=y --CONFIG_CMDLINE="console=ttySC1,38400 root=/dev/nfs ip=bootp" -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x0c000000 - CONFIG_MEMORY_SIZE=0x02000000 --CONFIG_MEMORY_SET=y --# CONFIG_MEMORY_OVERRIDE is not set - CONFIG_CF_ENABLER=y - # CONFIG_CF_AREA5 is not set - CONFIG_CF_AREA6=y - CONFIG_CF_BASE_ADDR=0xb8000000 -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y - CONFIG_SH_RTC=y - CONFIG_SH_FPU=y --CONFIG_ZERO_PAGE_OFFSET=0x00001000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 --CONFIG_CPU_LITTLE_ENDIAN=y --# CONFIG_PREEMPT is not set --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set - # CONFIG_SH_STORE_QUEUES is not set --# CONFIG_SMP is not set --CONFIG_SH_PCLK_CALC=y --CONFIG_SH_PCLK_FREQ=49876504 -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+# CONFIG_SH_PCLK_FREQ_BOOL is not set - - # - # CPU Frequency scaling -@@ -144,18 +212,30 @@ - CONFIG_HEARTBEAT=y - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features - # --# CONFIG_PCI is not set -+# CONFIG_KEXEC is not set -+# CONFIG_PREEMPT is not set -+# CONFIG_SMP is not set - - # --# PCCARD (PCMCIA/CardBus) support -+# Boot options - # --# CONFIG_PCCARD is not set -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+CONFIG_CMDLINE_BOOL=y -+CONFIG_CMDLINE="console=ttySC1,38400 root=/dev/nfs ip=bootp" - - # --# PC-card bridges -+# Bus options - # -+# CONFIG_PCI is not set -+ -+# -+# PCCARD (PCMCIA/CardBus) support -+# -+# CONFIG_PCCARD is not set - - # - # PCI Hotplug Support -@@ -169,6 +249,78 @@ - # CONFIG_BINFMT_MISC is not set - - # -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+CONFIG_PACKET=y -+# CONFIG_PACKET_MMAP is not set -+CONFIG_UNIX=y -+# CONFIG_NET_KEY is not set -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+# CONFIG_IP_ADVANCED_ROUTER is not set -+CONFIG_IP_FIB_HASH=y -+CONFIG_IP_PNP=y -+# CONFIG_IP_PNP_DHCP is not set -+CONFIG_IP_PNP_BOOTP=y -+# CONFIG_IP_PNP_RARP is not set -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE is not set -+# CONFIG_IP_MROUTE is not set -+# CONFIG_ARPD is not set -+# CONFIG_SYN_COOKIES is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+# CONFIG_INET_TUNNEL is not set -+CONFIG_INET_DIAG=y -+CONFIG_INET_TCP_DIAG=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+# CONFIG_IPV6 is not set -+# CONFIG_NETFILTER is not set -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+# CONFIG_ATM is not set -+# CONFIG_BRIDGE is not set -+# CONFIG_VLAN_8021Q is not set -+# CONFIG_DECNET is not set -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+ -+# -+# QoS and/or fair queueing -+# -+# CONFIG_NET_SCHED is not set -+ -+# -+# Network testing -+# -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+# CONFIG_IEEE80211 is not set -+ -+# - # Device Drivers - # - -@@ -180,12 +332,17 @@ - # CONFIG_FW_LOADER is not set - - # -+# Connector - unified userspace <-> kernelspace linker -+# -+# CONFIG_CONNECTOR is not set -+ -+# - # Memory Technology Devices (MTD) - # - CONFIG_MTD=y - # CONFIG_MTD_DEBUG is not set --CONFIG_MTD_PARTITIONS=y - # CONFIG_MTD_CONCAT is not set -+CONFIG_MTD_PARTITIONS=y - # CONFIG_MTD_REDBOOT_PARTS is not set - # CONFIG_MTD_CMDLINE_PARTS is not set - -@@ -197,6 +354,7 @@ - # CONFIG_FTL is not set - # CONFIG_NFTL is not set - # CONFIG_INFTL is not set -+# CONFIG_RFD_FTL is not set - - # - # RAM/ROM/Flash chip drivers -@@ -231,8 +389,7 @@ - # CONFIG_MTD_PHYSMAP is not set - CONFIG_MTD_SOLUTIONENGINE=y - CONFIG_MTD_SUPERH_RESERVE=0x00010000 --# CONFIG_MTD_MPC1211 is not set --# CONFIG_MTD_RTS7751R2D is not set -+# CONFIG_MTD_PLATRAM is not set - - # - # Self-contained MTD device drivers -@@ -256,6 +413,11 @@ - # CONFIG_MTD_NAND is not set - - # -+# OneNAND Flash Device Drivers -+# -+# CONFIG_MTD_ONENAND is not set -+ -+# - # Parallel port support - # - # CONFIG_PARPORT is not set -@@ -267,23 +429,12 @@ - # - # Block devices - # --# CONFIG_BLK_DEV_FD is not set - # CONFIG_BLK_DEV_COW_COMMON is not set - # CONFIG_BLK_DEV_LOOP is not set - # CONFIG_BLK_DEV_NBD is not set - # CONFIG_BLK_DEV_RAM is not set - CONFIG_BLK_DEV_RAM_COUNT=16 --CONFIG_INITRAMFS_SOURCE="" --# CONFIG_LBD is not set - # CONFIG_CDROM_PKTCDVD is not set -- --# --# IO Schedulers --# --CONFIG_IOSCHED_NOOP=y --CONFIG_IOSCHED_AS=y --CONFIG_IOSCHED_DEADLINE=y --CONFIG_IOSCHED_CFQ=y - # CONFIG_ATA_OVER_ETH is not set - - # -@@ -294,6 +445,7 @@ - # - # SCSI device support - # -+# CONFIG_RAID_ATTRS is not set - # CONFIG_SCSI is not set - - # -@@ -304,6 +456,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -314,71 +467,8 @@ - # - - # --# Networking support --# --CONFIG_NET=y -- --# --# Networking options --# --CONFIG_PACKET=y --# CONFIG_PACKET_MMAP is not set --# CONFIG_NETLINK_DEV is not set --CONFIG_UNIX=y --# CONFIG_NET_KEY is not set --CONFIG_INET=y --CONFIG_IP_MULTICAST=y --# CONFIG_IP_ADVANCED_ROUTER is not set --CONFIG_IP_PNP=y --# CONFIG_IP_PNP_DHCP is not set --CONFIG_IP_PNP_BOOTP=y --# CONFIG_IP_PNP_RARP is not set --# CONFIG_NET_IPIP is not set --# CONFIG_NET_IPGRE is not set --# CONFIG_IP_MROUTE is not set --# CONFIG_ARPD is not set --# CONFIG_SYN_COOKIES is not set --# CONFIG_INET_AH is not set --# CONFIG_INET_ESP is not set --# CONFIG_INET_IPCOMP is not set --# CONFIG_INET_TUNNEL is not set --CONFIG_IP_TCPDIAG=y --# CONFIG_IP_TCPDIAG_IPV6 is not set --# CONFIG_IPV6 is not set --# CONFIG_NETFILTER is not set -- --# --# SCTP Configuration (EXPERIMENTAL) --# --# CONFIG_IP_SCTP is not set --# CONFIG_ATM is not set --# CONFIG_BRIDGE is not set --# CONFIG_VLAN_8021Q is not set --# CONFIG_DECNET is not set --# CONFIG_LLC2 is not set --# CONFIG_IPX is not set --# CONFIG_ATALK is not set --# CONFIG_X25 is not set --# CONFIG_LAPB is not set --# CONFIG_NET_DIVERT is not set --# CONFIG_ECONET is not set --# CONFIG_WAN_ROUTER is not set -- --# --# QoS and/or fair queueing -+# Network device support - # --# CONFIG_NET_SCHED is not set --# CONFIG_NET_CLS_ROUTE is not set -- --# --# Network testing --# --# CONFIG_NET_PKTGEN is not set --# CONFIG_NETPOLL is not set --# CONFIG_NET_POLL_CONTROLLER is not set --# CONFIG_HAMRADIO is not set --# CONFIG_IRDA is not set --# CONFIG_BT is not set - CONFIG_NETDEVICES=y - # CONFIG_DUMMY is not set - # CONFIG_BONDING is not set -@@ -386,12 +476,18 @@ - # CONFIG_TUN is not set - - # -+# PHY device support -+# -+# CONFIG_PHYLIB is not set -+ -+# - # Ethernet (10 or 100Mbit) - # - CONFIG_NET_ETHERNET=y - # CONFIG_MII is not set - CONFIG_STNIC=y - # CONFIG_SMC91X is not set -+# CONFIG_NE2000 is not set - - # - # Ethernet (1000 Mbit) -@@ -418,6 +514,8 @@ - # CONFIG_SLIP is not set - # CONFIG_SHAPER is not set - # CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set - - # - # ISDN subsystem -@@ -435,20 +533,10 @@ - # CONFIG_INPUT is not set - - # --# Userland interfaces --# -- --# --# Input I/O drivers -+# Hardware I/O ports - # --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y - # CONFIG_SERIO is not set --# CONFIG_SERIO_I8042 is not set -- --# --# Input Device Drivers --# -+# CONFIG_GAMEPORT is not set - - # - # Character devices -@@ -499,10 +587,15 @@ - # - # Ftape, the floppy tape device driver - # --# CONFIG_DRM is not set - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# - # I2C support - # - # CONFIG_I2C is not set -@@ -513,10 +606,21 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - - # -+# Multimedia Capabilities Port drivers -+# -+ -+# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -@@ -543,7 +647,7 @@ - # CONFIG_USB_ARCH_HAS_OHCI is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' - # - - # -@@ -559,7 +663,10 @@ - # - # InfiniBand support - # --# CONFIG_INFINIBAND is not set -+ -+# -+# SN Devices -+# - - # - # File systems -@@ -569,17 +676,16 @@ - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -- --# --# XFS support --# -+# CONFIG_FS_POSIX_ACL is not set - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set - # CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - # CONFIG_AUTOFS_FS is not set - # CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set - - # - # CD-ROM/DVD Filesystems -@@ -600,13 +706,11 @@ - CONFIG_PROC_FS=y - CONFIG_PROC_KCORE=y - CONFIG_SYSFS=y --# CONFIG_DEVFS_FS is not set --# CONFIG_DEVPTS_FS_XATTR is not set - CONFIG_TMPFS=y --# CONFIG_TMPFS_XATTR is not set - # CONFIG_HUGETLBFS is not set - # CONFIG_HUGETLB_PAGE is not set - CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set - - # - # Miscellaneous filesystems -@@ -621,8 +725,8 @@ - # CONFIG_JFFS_FS is not set - CONFIG_JFFS2_FS=y - CONFIG_JFFS2_FS_DEBUG=0 --# CONFIG_JFFS2_FS_NAND is not set --# CONFIG_JFFS2_FS_NOR_ECC is not set -+CONFIG_JFFS2_FS_WRITEBUFFER=y -+# CONFIG_JFFS2_SUMMARY is not set - # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set - CONFIG_JFFS2_ZLIB=y - CONFIG_JFFS2_RTIME=y -@@ -644,6 +748,7 @@ - # CONFIG_NFSD is not set - CONFIG_ROOT_NFS=y - CONFIG_LOCKD=y -+CONFIG_NFS_COMMON=y - CONFIG_SUNRPC=y - # CONFIG_RPCSEC_GSS_KRB5 is not set - # CONFIG_RPCSEC_GSS_SPKM3 is not set -@@ -652,6 +757,7 @@ - # CONFIG_NCP_FS is not set - # CONFIG_CODA_FS is not set - # CONFIG_AFS_FS is not set -+# CONFIG_9P_FS is not set - - # - # Partition Types -@@ -682,7 +788,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - # CONFIG_SH_STANDARD_BIOS is not set - # CONFIG_EARLY_SCIF_CONSOLE is not set -@@ -707,6 +815,7 @@ - # Library routines - # - # CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set - CONFIG_CRC32=y - # CONFIG_LIBCRC32C is not set - CONFIG_ZLIB_INFLATE=y -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/se7751_defconfig linux-2.6.17/arch/sh/configs/se7751_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/se7751_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/se7751_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:48 2005 -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 20:02:38 2006 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -16,11 +16,13 @@ - CONFIG_EXPERIMENTAL=y - CONFIG_CLEAN_COMPILE=y - CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup - # - CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y - CONFIG_SWAP=y - CONFIG_SYSVIPC=y - # CONFIG_POSIX_MQUEUE is not set -@@ -28,22 +30,26 @@ - # CONFIG_BSD_PROCESS_ACCT_V3 is not set - CONFIG_SYSCTL=y - # CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_HOTPLUG is not set - CONFIG_KOBJECT_UEVENT=y - # CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_EMBEDDED=y - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -56,6 +62,24 @@ - # CONFIG_KMOD is not set - - # -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+CONFIG_IOSCHED_CFQ=y -+CONFIG_DEFAULT_AS=y -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+# CONFIG_DEFAULT_NOOP is not set -+CONFIG_DEFAULT_IOSCHED="anticipatory" -+ -+# - # System type - # - # CONFIG_SH_SOLUTION_ENGINE is not set -@@ -65,9 +89,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -84,43 +106,89 @@ - # CONFIG_SH_RTS7751R2D is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set --# CONFIG_CPU_SH3 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - CONFIG_CPU_SUBTYPE_SH7751=y -+# CONFIG_CPU_SUBTYPE_SH7751R is not set - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --CONFIG_CMDLINE_BOOL=y --CONFIG_CMDLINE="console=ttySC1,38400" -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x0c000000 - CONFIG_MEMORY_SIZE=0x04000000 --CONFIG_MEMORY_SET=y --# CONFIG_MEMORY_OVERRIDE is not set -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y - CONFIG_SH_RTC=y - CONFIG_SH_FPU=y --CONFIG_ZERO_PAGE_OFFSET=0x00010000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 --CONFIG_CPU_LITTLE_ENDIAN=y --# CONFIG_PREEMPT is not set --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set - # CONFIG_SH_STORE_QUEUES is not set --# CONFIG_SMP is not set --CONFIG_SH_PCLK_CALC=y --CONFIG_SH_PCLK_FREQ=60013568 -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+# CONFIG_SH_PCLK_FREQ_BOOL is not set - - # - # CPU Frequency scaling -@@ -139,14 +207,29 @@ - CONFIG_HEARTBEAT=y - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features -+# -+# CONFIG_KEXEC is not set -+# CONFIG_PREEMPT is not set -+# CONFIG_SMP is not set -+ -+# -+# Boot options -+# -+CONFIG_ZERO_PAGE_OFFSET=0x00010000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+CONFIG_CMDLINE_BOOL=y -+CONFIG_CMDLINE="console=ttySC1,38400" -+ -+# -+# Bus options - # - CONFIG_PCI=y - # CONFIG_SH_PCIDMA_NONCOHERENT is not set - CONFIG_PCI_AUTO=y - CONFIG_PCI_AUTO_UPDATE_RESOURCES=y - # CONFIG_PCI_LEGACY_PROC is not set --# CONFIG_PCI_NAMES is not set - - # - # PCCARD (PCMCIA/CardBus) support -@@ -154,10 +237,6 @@ - # CONFIG_PCCARD is not set - - # --# PC-card bridges --# -- --# - # PCI Hotplug Support - # - # CONFIG_HOTPLUG_PCI is not set -@@ -170,9 +249,96 @@ - # CONFIG_BINFMT_MISC is not set - - # --# SH initrd options -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+CONFIG_PACKET=y -+# CONFIG_PACKET_MMAP is not set -+CONFIG_UNIX=y -+# CONFIG_NET_KEY is not set -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+# CONFIG_IP_ADVANCED_ROUTER is not set -+CONFIG_IP_FIB_HASH=y -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+CONFIG_IP_PNP_BOOTP=y -+CONFIG_IP_PNP_RARP=y -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE is not set -+# CONFIG_IP_MROUTE is not set -+# CONFIG_ARPD is not set -+# CONFIG_SYN_COOKIES is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+# CONFIG_INET_TUNNEL is not set -+CONFIG_INET_DIAG=y -+CONFIG_INET_TCP_DIAG=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+ -+# -+# IP: Virtual Server Configuration -+# -+# CONFIG_IP_VS is not set -+# CONFIG_IPV6 is not set -+CONFIG_NETFILTER=y -+CONFIG_NETFILTER_DEBUG=y -+ -+# -+# Core Netfilter Configuration -+# -+# CONFIG_NETFILTER_NETLINK is not set -+# CONFIG_NF_CONNTRACK is not set -+ -+# -+# IP: Netfilter Configuration -+# -+# CONFIG_IP_NF_CONNTRACK is not set -+CONFIG_IP_NF_QUEUE=y -+# CONFIG_IP_NF_IPTABLES is not set -+# CONFIG_IP_NF_ARPTABLES is not set -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+# CONFIG_ATM is not set -+# CONFIG_BRIDGE is not set -+# CONFIG_VLAN_8021Q is not set -+# CONFIG_DECNET is not set -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+ -+# -+# QoS and/or fair queueing -+# -+# CONFIG_NET_SCHED is not set -+ -+# -+# Network testing - # --# CONFIG_EMBEDDED_RAMDISK is not set -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+# CONFIG_IEEE80211 is not set - - # - # Device Drivers -@@ -186,12 +352,17 @@ - # CONFIG_FW_LOADER is not set - - # -+# Connector - unified userspace <-> kernelspace linker -+# -+# CONFIG_CONNECTOR is not set -+ -+# - # Memory Technology Devices (MTD) - # - CONFIG_MTD=y - # CONFIG_MTD_DEBUG is not set --CONFIG_MTD_PARTITIONS=y - # CONFIG_MTD_CONCAT is not set -+CONFIG_MTD_PARTITIONS=y - # CONFIG_MTD_REDBOOT_PARTS is not set - # CONFIG_MTD_CMDLINE_PARTS is not set - -@@ -203,6 +374,7 @@ - # CONFIG_FTL is not set - # CONFIG_NFTL is not set - # CONFIG_INFTL is not set -+# CONFIG_RFD_FTL is not set - - # - # RAM/ROM/Flash chip drivers -@@ -236,8 +408,7 @@ - # CONFIG_MTD_COMPLEX_MAPPINGS is not set - # CONFIG_MTD_PHYSMAP is not set - # CONFIG_MTD_SOLUTIONENGINE is not set --# CONFIG_MTD_MPC1211 is not set --# CONFIG_MTD_RTS7751R2D is not set -+# CONFIG_MTD_PLATRAM is not set - - # - # Self-contained MTD device drivers -@@ -262,6 +433,11 @@ - # CONFIG_MTD_NAND is not set - - # -+# OneNAND Flash Device Drivers -+# -+# CONFIG_MTD_ONENAND is not set -+ -+# - # Parallel port support - # - # CONFIG_PARPORT is not set -@@ -273,7 +449,6 @@ - # - # Block devices - # --# CONFIG_BLK_DEV_FD is not set - # CONFIG_BLK_CPQ_DA is not set - # CONFIG_BLK_CPQ_CISS_DA is not set - # CONFIG_BLK_DEV_DAC960 is not set -@@ -286,17 +461,7 @@ - CONFIG_BLK_DEV_RAM_COUNT=16 - CONFIG_BLK_DEV_RAM_SIZE=4096 - CONFIG_BLK_DEV_INITRD=y --CONFIG_INITRAMFS_SOURCE="" --# CONFIG_LBD is not set - # CONFIG_CDROM_PKTCDVD is not set -- --# --# IO Schedulers --# --CONFIG_IOSCHED_NOOP=y --CONFIG_IOSCHED_AS=y --CONFIG_IOSCHED_DEADLINE=y --CONFIG_IOSCHED_CFQ=y - # CONFIG_ATA_OVER_ETH is not set - - # -@@ -307,6 +472,7 @@ - # - # SCSI device support - # -+# CONFIG_RAID_ATTRS is not set - # CONFIG_SCSI is not set - - # -@@ -317,6 +483,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -329,92 +496,13 @@ - # CONFIG_I2O is not set - - # --# Networking support --# --CONFIG_NET=y -- --# --# Networking options --# --CONFIG_PACKET=y --# CONFIG_PACKET_MMAP is not set --CONFIG_NETLINK_DEV=y --CONFIG_UNIX=y --# CONFIG_NET_KEY is not set --CONFIG_INET=y --CONFIG_IP_MULTICAST=y --# CONFIG_IP_ADVANCED_ROUTER is not set --CONFIG_IP_PNP=y --CONFIG_IP_PNP_DHCP=y --CONFIG_IP_PNP_BOOTP=y --CONFIG_IP_PNP_RARP=y --# CONFIG_NET_IPIP is not set --# CONFIG_NET_IPGRE is not set --# CONFIG_IP_MROUTE is not set --# CONFIG_ARPD is not set --# CONFIG_SYN_COOKIES is not set --# CONFIG_INET_AH is not set --# CONFIG_INET_ESP is not set --# CONFIG_INET_IPCOMP is not set --# CONFIG_INET_TUNNEL is not set --CONFIG_IP_TCPDIAG=y --# CONFIG_IP_TCPDIAG_IPV6 is not set -- --# --# IP: Virtual Server Configuration --# --# CONFIG_IP_VS is not set --# CONFIG_IPV6 is not set --CONFIG_NETFILTER=y --CONFIG_NETFILTER_DEBUG=y -- -+# Network device support - # --# IP: Netfilter Configuration --# --# CONFIG_IP_NF_CONNTRACK is not set --# CONFIG_IP_NF_CONNTRACK_MARK is not set --CONFIG_IP_NF_QUEUE=y --# CONFIG_IP_NF_IPTABLES is not set --# CONFIG_IP_NF_ARPTABLES is not set -- --# --# SCTP Configuration (EXPERIMENTAL) --# --# CONFIG_IP_SCTP is not set --# CONFIG_ATM is not set --# CONFIG_BRIDGE is not set --# CONFIG_VLAN_8021Q is not set --# CONFIG_DECNET is not set --# CONFIG_LLC2 is not set --# CONFIG_IPX is not set --# CONFIG_ATALK is not set --# CONFIG_X25 is not set --# CONFIG_LAPB is not set --# CONFIG_NET_DIVERT is not set --# CONFIG_ECONET is not set --# CONFIG_WAN_ROUTER is not set -- --# --# QoS and/or fair queueing --# --# CONFIG_NET_SCHED is not set --# CONFIG_NET_CLS_ROUTE is not set -- --# --# Network testing --# --# CONFIG_NET_PKTGEN is not set --# CONFIG_NETPOLL is not set --# CONFIG_NET_POLL_CONTROLLER is not set --# CONFIG_HAMRADIO is not set --# CONFIG_IRDA is not set --# CONFIG_BT is not set - CONFIG_NETDEVICES=y - # CONFIG_DUMMY is not set - # CONFIG_BONDING is not set - # CONFIG_EQUALIZER is not set - # CONFIG_TUN is not set --# CONFIG_ETHERTAP is not set - - # - # ARCnet devices -@@ -422,6 +510,11 @@ - # CONFIG_ARCNET is not set - - # -+# PHY device support -+# -+# CONFIG_PHYLIB is not set -+ -+# - # Ethernet (10 or 100Mbit) - # - CONFIG_NET_ETHERNET=y -@@ -429,6 +522,7 @@ - # CONFIG_STNIC is not set - # CONFIG_HAPPYMEAL is not set - # CONFIG_SUNGEM is not set -+# CONFIG_CASSINI is not set - # CONFIG_NET_VENDOR_3COM is not set - # CONFIG_SMC91X is not set - -@@ -437,6 +531,7 @@ - # - # CONFIG_NET_TULIP is not set - # CONFIG_HP100 is not set -+# CONFIG_NE2000 is not set - CONFIG_NET_PCI=y - CONFIG_PCNET32=y - # CONFIG_AMD8111_ETH is not set -@@ -467,13 +562,17 @@ - # CONFIG_HAMACHI is not set - # CONFIG_YELLOWFIN is not set - # CONFIG_R8169 is not set -+# CONFIG_SIS190 is not set -+# CONFIG_SKGE is not set - # CONFIG_SK98LIN is not set - # CONFIG_VIA_VELOCITY is not set - # CONFIG_TIGON3 is not set -+# CONFIG_BNX2 is not set - - # - # Ethernet (10000 Mbit) - # -+# CONFIG_CHELSIO_T1 is not set - # CONFIG_IXGB is not set - # CONFIG_S2IO is not set - -@@ -497,6 +596,8 @@ - # CONFIG_SLIP is not set - # CONFIG_SHAPER is not set - # CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set - - # - # ISDN subsystem -@@ -514,20 +615,10 @@ - # CONFIG_INPUT is not set - - # --# Userland interfaces -+# Hardware I/O ports - # -- --# --# Input I/O drivers --# --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y - # CONFIG_SERIO is not set --# CONFIG_SERIO_I8042 is not set -- --# --# Input Device Drivers --# -+# CONFIG_GAMEPORT is not set - - # - # Character devices -@@ -544,6 +635,7 @@ - # Non-8250 serial port support - # - # CONFIG_SERIAL_SH_SCI is not set -+# CONFIG_SERIAL_JSM is not set - CONFIG_UNIX98_PTYS=y - CONFIG_LEGACY_PTYS=y - CONFIG_LEGACY_PTY_COUNT=256 -@@ -583,6 +675,12 @@ - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# - # I2C support - # - # CONFIG_I2C is not set -@@ -593,10 +691,21 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - - # -+# Multimedia Capabilities Port drivers -+# -+ -+# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -@@ -619,12 +728,12 @@ - # - # USB support - # --# CONFIG_USB is not set - CONFIG_USB_ARCH_HAS_HCD=y - CONFIG_USB_ARCH_HAS_OHCI=y -+# CONFIG_USB is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' - # - - # -@@ -643,25 +752,29 @@ - # CONFIG_INFINIBAND is not set - - # -+# SN Devices -+# -+ -+# - # File systems - # - CONFIG_EXT2_FS=y - # CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set - # CONFIG_EXT3_FS is not set - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -- --# --# XFS support --# -+# CONFIG_FS_POSIX_ACL is not set - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set - # CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - # CONFIG_AUTOFS_FS is not set - # CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set - - # - # CD-ROM/DVD Filesystems -@@ -682,13 +795,11 @@ - CONFIG_PROC_FS=y - CONFIG_PROC_KCORE=y - CONFIG_SYSFS=y --# CONFIG_DEVFS_FS is not set --# CONFIG_DEVPTS_FS_XATTR is not set - CONFIG_TMPFS=y --# CONFIG_TMPFS_XATTR is not set - # CONFIG_HUGETLBFS is not set - # CONFIG_HUGETLB_PAGE is not set - CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set - - # - # Miscellaneous filesystems -@@ -703,8 +814,8 @@ - # CONFIG_JFFS_FS is not set - CONFIG_JFFS2_FS=y - CONFIG_JFFS2_FS_DEBUG=0 --# CONFIG_JFFS2_FS_NAND is not set --# CONFIG_JFFS2_FS_NOR_ECC is not set -+CONFIG_JFFS2_FS_WRITEBUFFER=y -+# CONFIG_JFFS2_SUMMARY is not set - # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set - CONFIG_JFFS2_ZLIB=y - CONFIG_JFFS2_RTIME=y -@@ -726,6 +837,7 @@ - # CONFIG_NCP_FS is not set - # CONFIG_CODA_FS is not set - # CONFIG_AFS_FS is not set -+# CONFIG_9P_FS is not set - - # - # Partition Types -@@ -746,7 +858,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - # CONFIG_SH_STANDARD_BIOS is not set - # CONFIG_EARLY_SCIF_CONSOLE is not set -@@ -771,6 +885,7 @@ - # Library routines - # - # CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set - CONFIG_CRC32=y - # CONFIG_LIBCRC32C is not set - CONFIG_ZLIB_INFLATE=y -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/sh03_defconfig linux-2.6.17/arch/sh/configs/sh03_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/sh03_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/sh03_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:49 2005 -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 20:14:31 2006 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -18,11 +18,13 @@ - CONFIG_BROKEN=y - CONFIG_BROKEN_ON_SMP=y - CONFIG_LOCK_KERNEL=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup - # - CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y - CONFIG_SWAP=y - CONFIG_SYSVIPC=y - CONFIG_POSIX_MQUEUE=y -@@ -30,22 +32,26 @@ - # CONFIG_BSD_PROCESS_ACCT_V3 is not set - CONFIG_SYSCTL=y - # CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - CONFIG_HOTPLUG=y - CONFIG_KOBJECT_UEVENT=y - # CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+CONFIG_CC_OPTIMIZE_FOR_SIZE=y - # CONFIG_EMBEDDED is not set - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -59,6 +65,24 @@ - CONFIG_KMOD=y - - # -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+CONFIG_IOSCHED_CFQ=y -+CONFIG_DEFAULT_AS=y -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+# CONFIG_DEFAULT_NOOP is not set -+CONFIG_DEFAULT_IOSCHED="anticipatory" -+ -+# - # System type - # - # CONFIG_SH_SOLUTION_ENGINE is not set -@@ -68,9 +92,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -87,47 +109,93 @@ - # CONFIG_SH_RTS7751R2D is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set --# CONFIG_CPU_SH3 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - CONFIG_CPU_SUBTYPE_SH7751=y -+# CONFIG_CPU_SUBTYPE_SH7751R is not set - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --CONFIG_CMDLINE_BOOL=y --CONFIG_CMDLINE="console=ttySC1,115200 mem=64M root=/dev/nfs" -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x08000000 - CONFIG_MEMORY_SIZE=0x08000000 --CONFIG_MEMORY_SET=y --# CONFIG_MEMORY_OVERRIDE is not set - CONFIG_CF_ENABLER=y - CONFIG_CF_AREA5=y - # CONFIG_CF_AREA6 is not set - CONFIG_CF_BASE_ADDR=0xb4000000 -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y - CONFIG_SH_RTC=y - CONFIG_SH_FPU=y --CONFIG_ZERO_PAGE_OFFSET=0x00004000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 --CONFIG_CPU_LITTLE_ENDIAN=y --CONFIG_PREEMPT=y --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set - # CONFIG_SH_STORE_QUEUES is not set --# CONFIG_SMP is not set --CONFIG_SH_PCLK_CALC=y --CONFIG_SH_PCLK_FREQ=49876504 -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+# CONFIG_SH_PCLK_FREQ_BOOL is not set - - # - # CPU Frequency scaling -@@ -146,14 +214,29 @@ - CONFIG_HEARTBEAT=y - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features -+# -+# CONFIG_KEXEC is not set -+CONFIG_PREEMPT=y -+# CONFIG_SMP is not set -+ -+# -+# Boot options -+# -+CONFIG_ZERO_PAGE_OFFSET=0x00004000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+CONFIG_CMDLINE_BOOL=y -+CONFIG_CMDLINE="console=ttySC1,115200 mem=64M root=/dev/nfs" -+ -+# -+# Bus options - # - CONFIG_PCI=y - CONFIG_SH_PCIDMA_NONCOHERENT=y - CONFIG_PCI_AUTO=y - CONFIG_PCI_AUTO_UPDATE_RESOURCES=y - CONFIG_PCI_LEGACY_PROC=y --CONFIG_PCI_NAMES=y - - # - # PCCARD (PCMCIA/CardBus) support -@@ -161,10 +244,6 @@ - # CONFIG_PCCARD is not set - - # --# PC-card bridges --# -- --# - # PCI Hotplug Support - # - CONFIG_HOTPLUG_PCI=m -@@ -180,9 +259,78 @@ - CONFIG_BINFMT_MISC=y - - # --# SH initrd options -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+CONFIG_PACKET=y -+# CONFIG_PACKET_MMAP is not set -+CONFIG_UNIX=y -+CONFIG_XFRM=y -+# CONFIG_XFRM_USER is not set -+CONFIG_NET_KEY=y -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+# CONFIG_IP_ADVANCED_ROUTER is not set -+CONFIG_IP_FIB_HASH=y -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+CONFIG_IP_PNP_BOOTP=y -+CONFIG_IP_PNP_RARP=y -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE is not set -+# CONFIG_IP_MROUTE is not set -+# CONFIG_ARPD is not set -+# CONFIG_SYN_COOKIES is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+# CONFIG_INET_TUNNEL is not set -+CONFIG_INET_DIAG=y -+CONFIG_INET_TCP_DIAG=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+# CONFIG_IPV6 is not set -+# CONFIG_NETFILTER is not set -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+# CONFIG_ATM is not set -+# CONFIG_BRIDGE is not set -+# CONFIG_VLAN_8021Q is not set -+# CONFIG_DECNET is not set -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+ -+# -+# QoS and/or fair queueing -+# -+# CONFIG_NET_SCHED is not set -+ -+# -+# Network testing - # --# CONFIG_EMBEDDED_RAMDISK is not set -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+# CONFIG_IEEE80211 is not set - - # - # Device Drivers -@@ -196,6 +344,11 @@ - # CONFIG_FW_LOADER is not set - - # -+# Connector - unified userspace <-> kernelspace linker -+# -+# CONFIG_CONNECTOR is not set -+ -+# - # Memory Technology Devices (MTD) - # - # CONFIG_MTD is not set -@@ -212,7 +365,6 @@ - # - # Block devices - # --# CONFIG_BLK_DEV_FD is not set - # CONFIG_BLK_CPQ_DA is not set - # CONFIG_BLK_CPQ_CISS_DA is not set - # CONFIG_BLK_DEV_DAC960 is not set -@@ -226,17 +378,7 @@ - CONFIG_BLK_DEV_RAM_COUNT=16 - CONFIG_BLK_DEV_RAM_SIZE=4096 - CONFIG_BLK_DEV_INITRD=y --CONFIG_INITRAMFS_SOURCE="" --# CONFIG_LBD is not set - # CONFIG_CDROM_PKTCDVD is not set -- --# --# IO Schedulers --# --CONFIG_IOSCHED_NOOP=y --CONFIG_IOSCHED_AS=y --CONFIG_IOSCHED_DEADLINE=y --CONFIG_IOSCHED_CFQ=y - # CONFIG_ATA_OVER_ETH is not set - - # -@@ -272,6 +414,7 @@ - # - # SCSI device support - # -+# CONFIG_RAID_ATTRS is not set - CONFIG_SCSI=m - CONFIG_SCSI_PROC_FS=y - -@@ -284,6 +427,7 @@ - CONFIG_BLK_DEV_SR=m - CONFIG_BLK_DEV_SR_VENDOR=y - CONFIG_CHR_DEV_SG=m -+# CONFIG_CHR_DEV_SCH is not set - - # - # Some SCSI devices (e.g. CD jukebox) support multiple LUNs -@@ -298,10 +442,12 @@ - # CONFIG_SCSI_SPI_ATTRS is not set - # CONFIG_SCSI_FC_ATTRS is not set - # CONFIG_SCSI_ISCSI_ATTRS is not set -+# CONFIG_SCSI_SAS_ATTRS is not set - - # - # SCSI low-level drivers - # -+# CONFIG_ISCSI_TCP is not set - # CONFIG_BLK_DEV_3W_XXXX_RAID is not set - # CONFIG_SCSI_3W_9XXX is not set - # CONFIG_SCSI_ACARD is not set -@@ -313,22 +459,16 @@ - # CONFIG_SCSI_ADVANSYS is not set - # CONFIG_MEGARAID_NEWGEN is not set - # CONFIG_MEGARAID_LEGACY is not set -+# CONFIG_MEGARAID_SAS is not set - # CONFIG_SCSI_SATA is not set --# CONFIG_SCSI_BUSLOGIC is not set --# CONFIG_SCSI_CPQFCTS is not set - # CONFIG_SCSI_DMX3191D is not set --# CONFIG_SCSI_EATA is not set - # CONFIG_SCSI_EATA_PIO is not set - # CONFIG_SCSI_FUTURE_DOMAIN is not set --# CONFIG_SCSI_GDTH is not set - # CONFIG_SCSI_IPS is not set - # CONFIG_SCSI_INITIO is not set - # CONFIG_SCSI_INIA100 is not set - # CONFIG_SCSI_SYM53C8XX_2 is not set - # CONFIG_SCSI_IPR is not set --# CONFIG_SCSI_PCI2000 is not set --# CONFIG_SCSI_PCI2220I is not set --# CONFIG_SCSI_QLOGIC_ISP is not set - # CONFIG_SCSI_QLOGIC_FC is not set - # CONFIG_SCSI_QLOGIC_1280 is not set - CONFIG_SCSI_QLA2XXX=m -@@ -337,6 +477,8 @@ - # CONFIG_SCSI_QLA2300 is not set - # CONFIG_SCSI_QLA2322 is not set - # CONFIG_SCSI_QLA6312 is not set -+# CONFIG_SCSI_QLA24XX is not set -+# CONFIG_SCSI_LPFC is not set - # CONFIG_SCSI_DC395x is not set - # CONFIG_SCSI_DC390T is not set - # CONFIG_SCSI_NSP32 is not set -@@ -351,6 +493,9 @@ - # Fusion MPT device support - # - # CONFIG_FUSION is not set -+# CONFIG_FUSION_SPI is not set -+# CONFIG_FUSION_FC is not set -+# CONFIG_FUSION_SAS is not set - - # - # IEEE 1394 (FireWire) support -@@ -363,73 +508,8 @@ - # CONFIG_I2O is not set - - # --# Networking support --# --CONFIG_NET=y -- --# --# Networking options --# --CONFIG_PACKET=y --# CONFIG_PACKET_MMAP is not set --# CONFIG_NETLINK_DEV is not set --CONFIG_UNIX=y --CONFIG_NET_KEY=y --CONFIG_INET=y --CONFIG_IP_MULTICAST=y --# CONFIG_IP_ADVANCED_ROUTER is not set --CONFIG_IP_PNP=y --CONFIG_IP_PNP_DHCP=y --CONFIG_IP_PNP_BOOTP=y --CONFIG_IP_PNP_RARP=y --# CONFIG_NET_IPIP is not set --# CONFIG_NET_IPGRE is not set --# CONFIG_IP_MROUTE is not set --# CONFIG_ARPD is not set --# CONFIG_SYN_COOKIES is not set --# CONFIG_INET_AH is not set --# CONFIG_INET_ESP is not set --# CONFIG_INET_IPCOMP is not set --# CONFIG_INET_TUNNEL is not set --CONFIG_IP_TCPDIAG=y --# CONFIG_IP_TCPDIAG_IPV6 is not set --# CONFIG_IPV6 is not set --# CONFIG_NETFILTER is not set --CONFIG_XFRM=y --# CONFIG_XFRM_USER is not set -- --# --# SCTP Configuration (EXPERIMENTAL) -+# Network device support - # --# CONFIG_IP_SCTP is not set --# CONFIG_ATM is not set --# CONFIG_BRIDGE is not set --# CONFIG_VLAN_8021Q is not set --# CONFIG_DECNET is not set --# CONFIG_LLC2 is not set --# CONFIG_IPX is not set --# CONFIG_ATALK is not set --# CONFIG_X25 is not set --# CONFIG_LAPB is not set --# CONFIG_NET_DIVERT is not set --# CONFIG_ECONET is not set --# CONFIG_WAN_ROUTER is not set -- --# --# QoS and/or fair queueing --# --# CONFIG_NET_SCHED is not set --# CONFIG_NET_CLS_ROUTE is not set -- --# --# Network testing --# --# CONFIG_NET_PKTGEN is not set --# CONFIG_NETPOLL is not set --# CONFIG_NET_POLL_CONTROLLER is not set --# CONFIG_HAMRADIO is not set --# CONFIG_IRDA is not set --# CONFIG_BT is not set - CONFIG_NETDEVICES=y - # CONFIG_DUMMY is not set - # CONFIG_BONDING is not set -@@ -442,6 +522,11 @@ - # CONFIG_ARCNET is not set - - # -+# PHY device support -+# -+# CONFIG_PHYLIB is not set -+ -+# - # Ethernet (10 or 100Mbit) - # - CONFIG_NET_ETHERNET=y -@@ -449,6 +534,7 @@ - # CONFIG_STNIC is not set - # CONFIG_HAPPYMEAL is not set - # CONFIG_SUNGEM is not set -+# CONFIG_CASSINI is not set - # CONFIG_NET_VENDOR_3COM is not set - # CONFIG_SMC91X is not set - -@@ -457,6 +543,7 @@ - # - # CONFIG_NET_TULIP is not set - # CONFIG_HP100 is not set -+# CONFIG_NE2000 is not set - CONFIG_NET_PCI=y - # CONFIG_PCNET32 is not set - # CONFIG_AMD8111_ETH is not set -@@ -487,13 +574,17 @@ - # CONFIG_HAMACHI is not set - # CONFIG_YELLOWFIN is not set - # CONFIG_R8169 is not set -+# CONFIG_SIS190 is not set -+# CONFIG_SKGE is not set - # CONFIG_SK98LIN is not set - # CONFIG_VIA_VELOCITY is not set - # CONFIG_TIGON3 is not set -+# CONFIG_BNX2 is not set - - # - # Ethernet (10000 Mbit) - # -+# CONFIG_CHELSIO_T1 is not set - # CONFIG_IXGB is not set - # CONFIG_S2IO is not set - -@@ -518,6 +609,8 @@ - # CONFIG_NET_FC is not set - # CONFIG_SHAPER is not set - # CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set - - # - # ISDN subsystem -@@ -547,14 +640,6 @@ - # CONFIG_INPUT_EVBUG is not set - - # --# Input I/O drivers --# --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y --# CONFIG_SERIO is not set --# CONFIG_SERIO_I8042 is not set -- --# - # Input Device Drivers - # - # CONFIG_INPUT_KEYBOARD is not set -@@ -564,6 +649,12 @@ - # CONFIG_INPUT_MISC is not set - - # -+# Hardware I/O ports -+# -+# CONFIG_SERIO is not set -+# CONFIG_GAMEPORT is not set -+ -+# - # Character devices - # - CONFIG_VT=y -@@ -585,6 +676,7 @@ - CONFIG_SERIAL_SH_SCI_CONSOLE=y - CONFIG_SERIAL_CORE=y - CONFIG_SERIAL_CORE_CONSOLE=y -+# CONFIG_SERIAL_JSM is not set - CONFIG_UNIX98_PTYS=y - CONFIG_LEGACY_PTYS=y - CONFIG_LEGACY_PTY_COUNT=256 -@@ -625,6 +717,12 @@ - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# - # I2C support - # - # CONFIG_I2C is not set -@@ -635,10 +733,21 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - - # -+# Multimedia Capabilities Port drivers -+# -+ -+# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -@@ -656,7 +765,6 @@ - # - # Console display driver support - # --# CONFIG_VGA_CONSOLE is not set - CONFIG_DUMMY_CONSOLE=y - - # -@@ -667,12 +775,12 @@ - # - # USB support - # --# CONFIG_USB is not set - CONFIG_USB_ARCH_HAS_HCD=y - CONFIG_USB_ARCH_HAS_OHCI=y -+# CONFIG_USB is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' - # - - # -@@ -691,12 +799,17 @@ - # CONFIG_INFINIBAND is not set - - # -+# SN Devices -+# -+ -+# - # File systems - # - CONFIG_EXT2_FS=y - CONFIG_EXT2_FS_XATTR=y - # CONFIG_EXT2_FS_POSIX_ACL is not set - # CONFIG_EXT2_FS_SECURITY is not set -+# CONFIG_EXT2_FS_XIP is not set - CONFIG_EXT3_FS=y - CONFIG_EXT3_FS_XATTR=y - CONFIG_EXT3_FS_POSIX_ACL=y -@@ -707,17 +820,15 @@ - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set - CONFIG_FS_POSIX_ACL=y -- --# --# XFS support --# - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set - # CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - CONFIG_AUTOFS_FS=y - CONFIG_AUTOFS4_FS=y -+# CONFIG_FUSE_FS is not set - - # - # CD-ROM/DVD Filesystems -@@ -745,13 +856,11 @@ - CONFIG_PROC_FS=y - CONFIG_PROC_KCORE=y - CONFIG_SYSFS=y --# CONFIG_DEVFS_FS is not set --# CONFIG_DEVPTS_FS_XATTR is not set - CONFIG_TMPFS=y --# CONFIG_TMPFS_XATTR is not set - # CONFIG_HUGETLBFS is not set - # CONFIG_HUGETLB_PAGE is not set - CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set - - # - # Miscellaneous filesystems -@@ -775,16 +884,19 @@ - # - CONFIG_NFS_FS=y - CONFIG_NFS_V3=y -+# CONFIG_NFS_V3_ACL is not set - CONFIG_NFS_V4=y - # CONFIG_NFS_DIRECTIO is not set - CONFIG_NFSD=y - CONFIG_NFSD_V3=y -+# CONFIG_NFSD_V3_ACL is not set - # CONFIG_NFSD_V4 is not set - CONFIG_NFSD_TCP=y - CONFIG_ROOT_NFS=y - CONFIG_LOCKD=y - CONFIG_LOCKD_V4=y - CONFIG_EXPORTFS=y -+CONFIG_NFS_COMMON=y - CONFIG_SUNRPC=y - CONFIG_SUNRPC_GSS=y - CONFIG_RPCSEC_GSS_KRB5=y -@@ -794,6 +906,7 @@ - # CONFIG_NCP_FS is not set - # CONFIG_CODA_FS is not set - # CONFIG_AFS_FS is not set -+# CONFIG_9P_FS is not set - - # - # Partition Types -@@ -868,8 +981,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set --CONFIG_DEBUG_PREEMPT=y -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - CONFIG_SH_STANDARD_BIOS=y - # CONFIG_EARLY_SCIF_CONSOLE is not set -@@ -894,6 +1008,7 @@ - # CONFIG_CRYPTO_SHA256 is not set - # CONFIG_CRYPTO_SHA512 is not set - # CONFIG_CRYPTO_WP512 is not set -+# CONFIG_CRYPTO_TGR192 is not set - CONFIG_CRYPTO_DES=y - # CONFIG_CRYPTO_BLOWFISH is not set - # CONFIG_CRYPTO_TWOFISH is not set -@@ -918,6 +1033,7 @@ - # Library routines - # - CONFIG_CRC_CCITT=y -+# CONFIG_CRC16 is not set - CONFIG_CRC32=y - # CONFIG_LIBCRC32C is not set - CONFIG_ZLIB_INFLATE=y -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/snapgear_defconfig linux-2.6.17/arch/sh/configs/snapgear_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/snapgear_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/snapgear_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:51 2005 -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 20:30:46 2006 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -16,33 +16,39 @@ - CONFIG_EXPERIMENTAL=y - CONFIG_CLEAN_COMPILE=y - CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup - # - CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y - CONFIG_SWAP=y - # CONFIG_SYSVIPC is not set - # CONFIG_POSIX_MQUEUE is not set - # CONFIG_BSD_PROCESS_ACCT is not set - # CONFIG_SYSCTL is not set - # CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_HOTPLUG is not set - CONFIG_KOBJECT_UEVENT=y - # CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+CONFIG_CC_OPTIMIZE_FOR_SIZE=y - # CONFIG_EMBEDDED is not set - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -50,6 +56,24 @@ - # CONFIG_MODULES is not set - - # -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+CONFIG_IOSCHED_CFQ=y -+CONFIG_DEFAULT_AS=y -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+# CONFIG_DEFAULT_NOOP is not set -+CONFIG_DEFAULT_IOSCHED="anticipatory" -+ -+# - # System type - # - # CONFIG_SH_SOLUTION_ENGINE is not set -@@ -59,9 +83,7 @@ - # CONFIG_SH_7751_SYSTEMH is not set - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -78,42 +100,89 @@ - # CONFIG_SH_RTS7751R2D is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set --# CONFIG_CPU_SH3 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - CONFIG_CPU_SUBTYPE_SH7751=y -+CONFIG_CPU_SUBTYPE_SH7751R=y - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --# CONFIG_CMDLINE_BOOL is not set -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x08000000 - CONFIG_MEMORY_SIZE=0x01000000 --CONFIG_MEMORY_SET=y --# CONFIG_MEMORY_OVERRIDE is not set -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y - CONFIG_SH_RTC=y - CONFIG_SH_FPU=y --CONFIG_ZERO_PAGE_OFFSET=0x00001000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 --CONFIG_CPU_LITTLE_ENDIAN=y --# CONFIG_PREEMPT is not set --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set - # CONFIG_SH_STORE_QUEUES is not set --# CONFIG_SMP is not set --CONFIG_SH_PCLK_CALC=y --CONFIG_SH_PCLK_FREQ=60013568 -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+# CONFIG_SH_PCLK_FREQ_BOOL is not set - - # - # CPU Frequency scaling -@@ -133,14 +202,28 @@ - # CONFIG_HD6446X_SERIES is not set - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features -+# -+# CONFIG_KEXEC is not set -+# CONFIG_PREEMPT is not set -+# CONFIG_SMP is not set -+ -+# -+# Boot options -+# -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+# CONFIG_CMDLINE_BOOL is not set -+ -+# -+# Bus options - # - CONFIG_PCI=y - # CONFIG_SH_PCIDMA_NONCOHERENT is not set - CONFIG_PCI_AUTO=y - CONFIG_PCI_AUTO_UPDATE_RESOURCES=y - # CONFIG_PCI_LEGACY_PROC is not set --CONFIG_PCI_NAMES=y - - # - # PCCARD (PCMCIA/CardBus) support -@@ -148,10 +231,6 @@ - # CONFIG_PCCARD is not set - - # --# PC-card bridges --# -- --# - # PCI Hotplug Support - # - # CONFIG_HOTPLUG_PCI is not set -@@ -164,9 +243,74 @@ - # CONFIG_BINFMT_MISC is not set - - # --# SH initrd options -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+# CONFIG_PACKET is not set -+# CONFIG_UNIX is not set -+# CONFIG_NET_KEY is not set -+CONFIG_INET=y -+# CONFIG_IP_MULTICAST is not set -+# CONFIG_IP_ADVANCED_ROUTER is not set -+CONFIG_IP_FIB_HASH=y -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+# CONFIG_IP_PNP_BOOTP is not set -+# CONFIG_IP_PNP_RARP is not set -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE is not set -+# CONFIG_ARPD is not set -+# CONFIG_SYN_COOKIES is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+# CONFIG_INET_TUNNEL is not set -+CONFIG_INET_DIAG=y -+CONFIG_INET_TCP_DIAG=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+# CONFIG_IPV6 is not set -+# CONFIG_NETFILTER is not set -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+# CONFIG_ATM is not set -+# CONFIG_BRIDGE is not set -+# CONFIG_VLAN_8021Q is not set -+# CONFIG_DECNET is not set -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+ -+# -+# QoS and/or fair queueing -+# -+# CONFIG_NET_SCHED is not set -+ -+# -+# Network testing - # --# CONFIG_EMBEDDED_RAMDISK is not set -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+# CONFIG_IEEE80211 is not set - - # - # Device Drivers -@@ -180,6 +324,11 @@ - # CONFIG_FW_LOADER is not set - - # -+# Connector - unified userspace <-> kernelspace linker -+# -+# CONFIG_CONNECTOR is not set -+ -+# - # Memory Technology Devices (MTD) - # - # CONFIG_MTD is not set -@@ -196,7 +345,6 @@ - # - # Block devices - # --# CONFIG_BLK_DEV_FD is not set - # CONFIG_BLK_CPQ_DA is not set - # CONFIG_BLK_CPQ_CISS_DA is not set - # CONFIG_BLK_DEV_DAC960 is not set -@@ -209,17 +357,7 @@ - CONFIG_BLK_DEV_RAM_COUNT=16 - CONFIG_BLK_DEV_RAM_SIZE=4096 - CONFIG_BLK_DEV_INITRD=y --CONFIG_INITRAMFS_SOURCE="" --# CONFIG_LBD is not set - # CONFIG_CDROM_PKTCDVD is not set -- --# --# IO Schedulers --# --CONFIG_IOSCHED_NOOP=y --CONFIG_IOSCHED_AS=y --CONFIG_IOSCHED_DEADLINE=y --CONFIG_IOSCHED_CFQ=y - # CONFIG_ATA_OVER_ETH is not set - - # -@@ -230,6 +368,7 @@ - # - # SCSI device support - # -+# CONFIG_RAID_ATTRS is not set - # CONFIG_SCSI is not set - - # -@@ -240,6 +379,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -252,69 +392,8 @@ - # CONFIG_I2O is not set - - # --# Networking support --# --CONFIG_NET=y -- --# --# Networking options --# --# CONFIG_PACKET is not set --# CONFIG_NETLINK_DEV is not set --# CONFIG_UNIX is not set --# CONFIG_NET_KEY is not set --CONFIG_INET=y --# CONFIG_IP_MULTICAST is not set --# CONFIG_IP_ADVANCED_ROUTER is not set --CONFIG_IP_PNP=y --CONFIG_IP_PNP_DHCP=y --# CONFIG_IP_PNP_BOOTP is not set --# CONFIG_IP_PNP_RARP is not set --# CONFIG_NET_IPIP is not set --# CONFIG_NET_IPGRE is not set --# CONFIG_ARPD is not set --# CONFIG_SYN_COOKIES is not set --# CONFIG_INET_AH is not set --# CONFIG_INET_ESP is not set --# CONFIG_INET_IPCOMP is not set --# CONFIG_INET_TUNNEL is not set --CONFIG_IP_TCPDIAG=y --# CONFIG_IP_TCPDIAG_IPV6 is not set --# CONFIG_IPV6 is not set --# CONFIG_NETFILTER is not set -- --# --# SCTP Configuration (EXPERIMENTAL) --# --# CONFIG_IP_SCTP is not set --# CONFIG_ATM is not set --# CONFIG_BRIDGE is not set --# CONFIG_VLAN_8021Q is not set --# CONFIG_DECNET is not set --# CONFIG_LLC2 is not set --# CONFIG_IPX is not set --# CONFIG_ATALK is not set --# CONFIG_X25 is not set --# CONFIG_LAPB is not set --# CONFIG_NET_DIVERT is not set --# CONFIG_ECONET is not set --# CONFIG_WAN_ROUTER is not set -- --# --# QoS and/or fair queueing --# --# CONFIG_NET_SCHED is not set --# CONFIG_NET_CLS_ROUTE is not set -- -+# Network device support - # --# Network testing --# --# CONFIG_NET_PKTGEN is not set --# CONFIG_NETPOLL is not set --# CONFIG_NET_POLL_CONTROLLER is not set --# CONFIG_HAMRADIO is not set --# CONFIG_IRDA is not set --# CONFIG_BT is not set - CONFIG_NETDEVICES=y - # CONFIG_DUMMY is not set - # CONFIG_BONDING is not set -@@ -327,6 +406,11 @@ - # CONFIG_ARCNET is not set - - # -+# PHY device support -+# -+# CONFIG_PHYLIB is not set -+ -+# - # Ethernet (10 or 100Mbit) - # - CONFIG_NET_ETHERNET=y -@@ -334,6 +418,7 @@ - # CONFIG_STNIC is not set - # CONFIG_HAPPYMEAL is not set - # CONFIG_SUNGEM is not set -+# CONFIG_CASSINI is not set - # CONFIG_NET_VENDOR_3COM is not set - # CONFIG_SMC91X is not set - -@@ -342,6 +427,7 @@ - # - # CONFIG_NET_TULIP is not set - # CONFIG_HP100 is not set -+# CONFIG_NE2000 is not set - CONFIG_NET_PCI=y - # CONFIG_PCNET32 is not set - # CONFIG_AMD8111_ETH is not set -@@ -376,13 +462,17 @@ - # CONFIG_HAMACHI is not set - # CONFIG_YELLOWFIN is not set - # CONFIG_R8169 is not set -+# CONFIG_SIS190 is not set -+# CONFIG_SKGE is not set - # CONFIG_SK98LIN is not set - # CONFIG_VIA_VELOCITY is not set - # CONFIG_TIGON3 is not set -+# CONFIG_BNX2 is not set - - # - # Ethernet (10000 Mbit) - # -+# CONFIG_CHELSIO_T1 is not set - # CONFIG_IXGB is not set - # CONFIG_S2IO is not set - -@@ -406,6 +496,8 @@ - # CONFIG_SLIP is not set - # CONFIG_SHAPER is not set - # CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set - - # - # ISDN subsystem -@@ -435,18 +527,6 @@ - # CONFIG_INPUT_EVBUG is not set - - # --# Input I/O drivers --# --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y --CONFIG_SERIO=y --CONFIG_SERIO_I8042=y --CONFIG_SERIO_SERPORT=y --# CONFIG_SERIO_CT82C710 is not set --# CONFIG_SERIO_PCIPS2 is not set --# CONFIG_SERIO_RAW is not set -- --# - # Input Device Drivers - # - # CONFIG_INPUT_KEYBOARD is not set -@@ -456,6 +536,16 @@ - # CONFIG_INPUT_MISC is not set - - # -+# Hardware I/O ports -+# -+CONFIG_SERIO=y -+CONFIG_SERIO_I8042=y -+CONFIG_SERIO_SERPORT=y -+# CONFIG_SERIO_PCIPS2 is not set -+# CONFIG_SERIO_RAW is not set -+# CONFIG_GAMEPORT is not set -+ -+# - # Character devices - # - CONFIG_VT=y -@@ -472,6 +562,7 @@ - # Non-8250 serial port support - # - # CONFIG_SERIAL_SH_SCI is not set -+# CONFIG_SERIAL_JSM is not set - CONFIG_UNIX98_PTYS=y - CONFIG_LEGACY_PTYS=y - CONFIG_LEGACY_PTY_COUNT=256 -@@ -498,6 +589,12 @@ - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# - # I2C support - # - # CONFIG_I2C is not set -@@ -508,10 +605,21 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - - # -+# Multimedia Capabilities Port drivers -+# -+ -+# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -@@ -529,7 +637,6 @@ - # - # Console display driver support - # --CONFIG_VGA_CONSOLE=y - CONFIG_DUMMY_CONSOLE=y - - # -@@ -540,12 +647,12 @@ - # - # USB support - # --# CONFIG_USB is not set - CONFIG_USB_ARCH_HAS_HCD=y - CONFIG_USB_ARCH_HAS_OHCI=y -+# CONFIG_USB is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' - # - - # -@@ -564,25 +671,29 @@ - # CONFIG_INFINIBAND is not set - - # -+# SN Devices -+# -+ -+# - # File systems - # - CONFIG_EXT2_FS=y - # CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set - # CONFIG_EXT3_FS is not set - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -- --# --# XFS support --# -+# CONFIG_FS_POSIX_ACL is not set - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set - CONFIG_ROMFS_FS=y -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - # CONFIG_AUTOFS_FS is not set - # CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set - - # - # CD-ROM/DVD Filesystems -@@ -603,15 +714,11 @@ - CONFIG_PROC_FS=y - # CONFIG_PROC_KCORE is not set - CONFIG_SYSFS=y --CONFIG_DEVFS_FS=y --CONFIG_DEVFS_MOUNT=y --# CONFIG_DEVFS_DEBUG is not set --# CONFIG_DEVPTS_FS_XATTR is not set - CONFIG_TMPFS=y --# CONFIG_TMPFS_XATTR is not set - # CONFIG_HUGETLBFS is not set - # CONFIG_HUGETLB_PAGE is not set - CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set - - # - # Miscellaneous filesystems -@@ -635,12 +742,14 @@ - # - CONFIG_NFS_FS=y - CONFIG_NFS_V3=y -+# CONFIG_NFS_V3_ACL is not set - # CONFIG_NFS_V4 is not set - # CONFIG_NFS_DIRECTIO is not set - # CONFIG_NFSD is not set - CONFIG_ROOT_NFS=y - CONFIG_LOCKD=y - CONFIG_LOCKD_V4=y -+CONFIG_NFS_COMMON=y - CONFIG_SUNRPC=y - # CONFIG_RPCSEC_GSS_KRB5 is not set - # CONFIG_RPCSEC_GSS_SPKM3 is not set -@@ -649,6 +758,7 @@ - # CONFIG_NCP_FS is not set - # CONFIG_CODA_FS is not set - # CONFIG_AFS_FS is not set -+# CONFIG_9P_FS is not set - - # - # Partition Types -@@ -669,7 +779,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - # CONFIG_SH_STANDARD_BIOS is not set - # CONFIG_EARLY_SCIF_CONSOLE is not set -@@ -694,6 +806,7 @@ - # Library routines - # - # CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set - CONFIG_CRC32=y - # CONFIG_LIBCRC32C is not set - CONFIG_ZLIB_INFLATE=y -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/systemh_defconfig linux-2.6.17/arch/sh/configs/systemh_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/systemh_defconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/systemh_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -1,7 +1,7 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.11-sh --# Wed Mar 2 15:09:53 2005 -+# Linux kernel version: 2.6.15-sh -+# Wed Jan 4 20:44:53 2006 - # - CONFIG_SUPERH=y - CONFIG_UID16=y -@@ -18,31 +18,36 @@ - CONFIG_BROKEN=y - CONFIG_BROKEN_ON_SMP=y - CONFIG_LOCK_KERNEL=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 - - # - # General setup - # - CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y - CONFIG_SWAP=y - # CONFIG_SYSVIPC is not set - # CONFIG_BSD_PROCESS_ACCT is not set - # CONFIG_SYSCTL is not set --# CONFIG_AUDIT is not set --CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_HOTPLUG is not set - # CONFIG_IKCONFIG is not set -+CONFIG_INITRAMFS_SOURCE="" -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_EMBEDDED=y - CONFIG_KALLSYMS=y - # CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_BASE_FULL=y - CONFIG_FUTEX=y - CONFIG_EPOLL=y --# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - CONFIG_SHMEM=y - CONFIG_CC_ALIGN_FUNCTIONS=0 - CONFIG_CC_ALIGN_LABELS=0 - CONFIG_CC_ALIGN_LOOPS=0 - CONFIG_CC_ALIGN_JUMPS=0 - # CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 - - # - # Loadable module support -@@ -56,6 +61,24 @@ - # CONFIG_KMOD is not set - - # -+# Block layer -+# -+# CONFIG_LBD is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+CONFIG_IOSCHED_CFQ=y -+CONFIG_DEFAULT_AS=y -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+# CONFIG_DEFAULT_NOOP is not set -+CONFIG_DEFAULT_IOSCHED="anticipatory" -+ -+# - # System type - # - # CONFIG_SH_SOLUTION_ENGINE is not set -@@ -65,9 +88,7 @@ - CONFIG_SH_7751_SYSTEMH=y - # CONFIG_SH_STB1_HARP is not set - # CONFIG_SH_STB1_OVERDRIVE is not set --# CONFIG_SH_HP620 is not set --# CONFIG_SH_HP680 is not set --# CONFIG_SH_HP690 is not set -+# CONFIG_SH_HP6XX is not set - # CONFIG_SH_CQREEK is not set - # CONFIG_SH_DMIDA is not set - # CONFIG_SH_EC3104 is not set -@@ -84,41 +105,89 @@ - # CONFIG_SH_RTS7751R2D is not set - # CONFIG_SH_EDOSK7705 is not set - # CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+# CONFIG_SH_TITAN is not set - # CONFIG_SH_UNKNOWN is not set --# CONFIG_CPU_SH2 is not set --# CONFIG_CPU_SH3 is not set -+ -+# -+# Processor selection -+# - CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7300 is not set - # CONFIG_CPU_SUBTYPE_SH7705 is not set - # CONFIG_CPU_SUBTYPE_SH7707 is not set - # CONFIG_CPU_SUBTYPE_SH7708 is not set - # CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# - # CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set - CONFIG_CPU_SUBTYPE_SH7751=y -+CONFIG_CPU_SUBTYPE_SH7751R=y - # CONFIG_CPU_SUBTYPE_SH7760 is not set --# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# - # CONFIG_CPU_SUBTYPE_ST40STB1 is not set - # CONFIG_CPU_SUBTYPE_ST40GX1 is not set --# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# - CONFIG_MMU=y --# CONFIG_CMDLINE_BOOL is not set -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set - CONFIG_MEMORY_START=0x0c000000 - CONFIG_MEMORY_SIZE=0x00400000 --# CONFIG_MEMORY_OVERRIDE is not set -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y - CONFIG_SH_RTC=y - CONFIG_SH_FPU=y --CONFIG_ZERO_PAGE_OFFSET=0x00001000 --CONFIG_BOOT_LINK_OFFSET=0x00800000 --CONFIG_CPU_LITTLE_ENDIAN=y --CONFIG_PREEMPT=y --# CONFIG_UBC_WAKEUP is not set --# CONFIG_SH_WRITETHROUGH is not set --# CONFIG_SH_OCRAM is not set - # CONFIG_SH_STORE_QUEUES is not set --# CONFIG_SMP is not set --CONFIG_SH_PCLK_CALC=y --CONFIG_SH_PCLK_FREQ=49876504 -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+# CONFIG_SH_PCLK_FREQ_BOOL is not set - - # - # CPU Frequency scaling -@@ -136,14 +205,28 @@ - # CONFIG_HD6446X_SERIES is not set - - # --# Bus options (PCI, PCMCIA, EISA, MCA, ISA) -+# Kernel features -+# -+# CONFIG_KEXEC is not set -+CONFIG_PREEMPT=y -+# CONFIG_SMP is not set -+ -+# -+# Boot options -+# -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x00800000 -+# CONFIG_UBC_WAKEUP is not set -+# CONFIG_CMDLINE_BOOL is not set -+ -+# -+# Bus options - # - CONFIG_PCI=y - # CONFIG_SH_PCIDMA_NONCOHERENT is not set - CONFIG_PCI_AUTO=y - CONFIG_PCI_AUTO_UPDATE_RESOURCES=y - CONFIG_PCI_LEGACY_PROC=y --CONFIG_PCI_NAMES=y - - # - # PCCARD (PCMCIA/CardBus) support -@@ -151,10 +234,6 @@ - # CONFIG_PCCARD is not set - - # --# PC-card bridges --# -- --# - # PCI Hotplug Support - # - # CONFIG_HOTPLUG_PCI is not set -@@ -167,9 +246,9 @@ - # CONFIG_BINFMT_MISC is not set - - # --# SH initrd options -+# Networking - # --# CONFIG_EMBEDDED_RAMDISK is not set -+# CONFIG_NET is not set - - # - # Device Drivers -@@ -183,6 +262,10 @@ - # CONFIG_FW_LOADER is not set - - # -+# Connector - unified userspace <-> kernelspace linker -+# -+ -+# - # Memory Technology Devices (MTD) - # - # CONFIG_MTD is not set -@@ -199,7 +282,6 @@ - # - # Block devices - # --# CONFIG_BLK_DEV_FD is not set - # CONFIG_BLK_CPQ_DA is not set - # CONFIG_BLK_CPQ_CISS_DA is not set - # CONFIG_BLK_DEV_DAC960 is not set -@@ -211,19 +293,9 @@ - CONFIG_BLK_DEV_RAM_COUNT=16 - CONFIG_BLK_DEV_RAM_SIZE=1024 - CONFIG_BLK_DEV_INITRD=y --CONFIG_INITRAMFS_SOURCE="" --# CONFIG_LBD is not set - # CONFIG_CDROM_PKTCDVD is not set - - # --# IO Schedulers --# --CONFIG_IOSCHED_NOOP=y --CONFIG_IOSCHED_AS=y --CONFIG_IOSCHED_DEADLINE=y --CONFIG_IOSCHED_CFQ=y -- --# - # ATA/ATAPI/MFM/RLL support - # - # CONFIG_IDE is not set -@@ -231,6 +303,7 @@ - # - # SCSI device support - # -+# CONFIG_RAID_ATTRS is not set - # CONFIG_SCSI is not set - - # -@@ -241,6 +314,7 @@ - # - # Fusion MPT device support - # -+# CONFIG_FUSION is not set - - # - # IEEE 1394 (FireWire) support -@@ -253,9 +327,8 @@ - # CONFIG_I2O is not set - - # --# Networking support -+# Network device support - # --# CONFIG_NET is not set - # CONFIG_NETPOLL is not set - # CONFIG_NET_POLL_CONTROLLER is not set - -@@ -274,25 +347,15 @@ - # CONFIG_INPUT is not set - - # --# Userland interfaces --# -- --# --# Input I/O drivers -+# Hardware I/O ports - # --# CONFIG_GAMEPORT is not set --CONFIG_SOUND_GAMEPORT=y - CONFIG_SERIO=y - # CONFIG_SERIO_I8042 is not set - # CONFIG_SERIO_SERPORT is not set --# CONFIG_SERIO_CT82C710 is not set - # CONFIG_SERIO_PCIPS2 is not set - # CONFIG_SERIO_LIBPS2 is not set - # CONFIG_SERIO_RAW is not set -- --# --# Input Device Drivers --# -+# CONFIG_GAMEPORT is not set - - # - # Character devices -@@ -309,6 +372,7 @@ - # Non-8250 serial port support - # - # CONFIG_SERIAL_SH_SCI is not set -+# CONFIG_SERIAL_JSM is not set - CONFIG_UNIX98_PTYS=y - CONFIG_LEGACY_PTYS=y - CONFIG_LEGACY_PTY_COUNT=256 -@@ -335,6 +399,12 @@ - # CONFIG_RAW_DRIVER is not set - - # -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# - # I2C support - # - # CONFIG_I2C is not set -@@ -345,10 +415,21 @@ - # CONFIG_W1 is not set - - # -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# - # Misc devices - # - - # -+# Multimedia Capabilities Port drivers -+# -+ -+# - # Multimedia devices - # - # CONFIG_VIDEO_DEV is not set -@@ -370,12 +451,12 @@ - # - # USB support - # --# CONFIG_USB is not set - CONFIG_USB_ARCH_HAS_HCD=y - CONFIG_USB_ARCH_HAS_OHCI=y -+# CONFIG_USB is not set - - # --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' - # - - # -@@ -394,6 +475,10 @@ - # CONFIG_INFINIBAND is not set - - # -+# SN Devices -+# -+ -+# - # File systems - # - # CONFIG_EXT2_FS is not set -@@ -401,17 +486,16 @@ - # CONFIG_JBD is not set - # CONFIG_REISERFS_FS is not set - # CONFIG_JFS_FS is not set -- --# --# XFS support --# -+# CONFIG_FS_POSIX_ACL is not set - # CONFIG_XFS_FS is not set - # CONFIG_MINIX_FS is not set - CONFIG_ROMFS_FS=y -+CONFIG_INOTIFY=y - # CONFIG_QUOTA is not set - CONFIG_DNOTIFY=y - # CONFIG_AUTOFS_FS is not set - # CONFIG_AUTOFS4_FS is not set -+# CONFIG_FUSE_FS is not set - - # - # CD-ROM/DVD Filesystems -@@ -432,15 +516,11 @@ - CONFIG_PROC_FS=y - CONFIG_PROC_KCORE=y - CONFIG_SYSFS=y --CONFIG_DEVFS_FS=y --CONFIG_DEVFS_MOUNT=y --# CONFIG_DEVFS_DEBUG is not set --# CONFIG_DEVPTS_FS_XATTR is not set - CONFIG_TMPFS=y --# CONFIG_TMPFS_XATTR is not set - # CONFIG_HUGETLBFS is not set - # CONFIG_HUGETLB_PAGE is not set - CONFIG_RAMFS=y -+# CONFIG_RELAYFS_FS is not set - - # - # Miscellaneous filesystems -@@ -478,8 +558,9 @@ - # - # Kernel hacking - # -+# CONFIG_PRINTK_TIME is not set - # CONFIG_DEBUG_KERNEL is not set --CONFIG_DEBUG_PREEMPT=y -+CONFIG_LOG_BUF_SHIFT=14 - # CONFIG_FRAME_POINTER is not set - # CONFIG_SH_STANDARD_BIOS is not set - # CONFIG_EARLY_SCIF_CONSOLE is not set -@@ -504,6 +585,7 @@ - # Library routines - # - # CONFIG_CRC_CCITT is not set -+# CONFIG_CRC16 is not set - CONFIG_CRC32=y - # CONFIG_LIBCRC32C is not set - CONFIG_ZLIB_INFLATE=y -diff -ruN linux-2.6.17-vanilla/arch/sh/configs/titan_defconfig linux-2.6.17/arch/sh/configs/titan_defconfig ---- linux-2.6.17-vanilla/arch/sh/configs/titan_defconfig 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/configs/titan_defconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,1551 @@ -+# -+# Automatically generated make config: don't edit -+# Linux kernel version: 2.6.17 -+# Thu Jul 6 12:42:07 2006 -+# -+CONFIG_SUPERH=y -+CONFIG_RWSEM_GENERIC_SPINLOCK=y -+CONFIG_GENERIC_FIND_NEXT_BIT=y -+CONFIG_GENERIC_HWEIGHT=y -+CONFIG_GENERIC_HARDIRQS=y -+CONFIG_GENERIC_IRQ_PROBE=y -+CONFIG_GENERIC_CALIBRATE_DELAY=y -+ -+# -+# Code maturity level options -+# -+CONFIG_EXPERIMENTAL=y -+CONFIG_BROKEN_ON_SMP=y -+CONFIG_INIT_ENV_ARG_LIMIT=32 -+ -+# -+# General setup -+# -+CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y -+CONFIG_SWAP=y -+CONFIG_SYSVIPC=y -+CONFIG_POSIX_MQUEUE=y -+# CONFIG_BSD_PROCESS_ACCT is not set -+CONFIG_SYSCTL=y -+# CONFIG_AUDIT is not set -+CONFIG_IKCONFIG=y -+CONFIG_IKCONFIG_PROC=y -+# CONFIG_RELAY is not set -+CONFIG_INITRAMFS_SOURCE="" -+CONFIG_UID16=y -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -+# CONFIG_EMBEDDED is not set -+CONFIG_KALLSYMS=y -+# CONFIG_KALLSYMS_ALL is not set -+# CONFIG_KALLSYMS_EXTRA_PASS is not set -+CONFIG_HOTPLUG=y -+CONFIG_PRINTK=y -+CONFIG_BUG=y -+CONFIG_ELF_CORE=y -+CONFIG_BASE_FULL=y -+CONFIG_FUTEX=y -+CONFIG_EPOLL=y -+CONFIG_SHMEM=y -+CONFIG_SLAB=y -+# CONFIG_TINY_SHMEM is not set -+CONFIG_BASE_SMALL=0 -+# CONFIG_SLOB is not set -+CONFIG_OBSOLETE_INTERMODULE=m -+ -+# -+# Loadable module support -+# -+CONFIG_MODULES=y -+CONFIG_MODULE_UNLOAD=y -+CONFIG_MODULE_FORCE_UNLOAD=y -+# CONFIG_MODVERSIONS is not set -+# CONFIG_MODULE_SRCVERSION_ALL is not set -+CONFIG_KMOD=y -+ -+# -+# Block layer -+# -+# CONFIG_LBD is not set -+# CONFIG_BLK_DEV_IO_TRACE is not set -+# CONFIG_LSF is not set -+ -+# -+# IO Schedulers -+# -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+CONFIG_IOSCHED_CFQ=y -+CONFIG_DEFAULT_AS=y -+# CONFIG_DEFAULT_DEADLINE is not set -+# CONFIG_DEFAULT_CFQ is not set -+# CONFIG_DEFAULT_NOOP is not set -+CONFIG_DEFAULT_IOSCHED="anticipatory" -+ -+# -+# System type -+# -+# CONFIG_SH_SOLUTION_ENGINE is not set -+# CONFIG_SH_7751_SOLUTION_ENGINE is not set -+# CONFIG_SH_7300_SOLUTION_ENGINE is not set -+# CONFIG_SH_73180_SOLUTION_ENGINE is not set -+# CONFIG_SH_7751_SYSTEMH is not set -+# CONFIG_SH_STB1_HARP is not set -+# CONFIG_SH_STB1_OVERDRIVE is not set -+# CONFIG_SH_HP6XX is not set -+# CONFIG_SH_CQREEK is not set -+# CONFIG_SH_DMIDA is not set -+# CONFIG_SH_EC3104 is not set -+# CONFIG_SH_SATURN is not set -+# CONFIG_SH_DREAMCAST is not set -+# CONFIG_SH_CAT68701 is not set -+# CONFIG_SH_BIGSUR is not set -+# CONFIG_SH_SH2000 is not set -+# CONFIG_SH_ADX is not set -+# CONFIG_SH_MPC1211 is not set -+# CONFIG_SH_SH03 is not set -+# CONFIG_SH_SECUREEDGE5410 is not set -+# CONFIG_SH_HS7751RVOIP is not set -+# CONFIG_SH_RTS7751R2D is not set -+# CONFIG_SH_R7780RP is not set -+# CONFIG_SH_EDOSK7705 is not set -+# CONFIG_SH_SH4202_MICRODEV is not set -+# CONFIG_SH_LANDISK is not set -+CONFIG_SH_TITAN=y -+# CONFIG_SH_UNKNOWN is not set -+ -+# -+# Processor selection -+# -+CONFIG_CPU_SH4=y -+ -+# -+# SH-2 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7604 is not set -+ -+# -+# SH-3 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7300 is not set -+# CONFIG_CPU_SUBTYPE_SH7705 is not set -+# CONFIG_CPU_SUBTYPE_SH7707 is not set -+# CONFIG_CPU_SUBTYPE_SH7708 is not set -+# CONFIG_CPU_SUBTYPE_SH7709 is not set -+ -+# -+# SH-4 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH7750 is not set -+# CONFIG_CPU_SUBTYPE_SH7091 is not set -+# CONFIG_CPU_SUBTYPE_SH7750R is not set -+# CONFIG_CPU_SUBTYPE_SH7750S is not set -+CONFIG_CPU_SUBTYPE_SH7751=y -+CONFIG_CPU_SUBTYPE_SH7751R=y -+# CONFIG_CPU_SUBTYPE_SH7760 is not set -+# CONFIG_CPU_SUBTYPE_SH4_202 is not set -+ -+# -+# ST40 Processor Support -+# -+# CONFIG_CPU_SUBTYPE_ST40STB1 is not set -+# CONFIG_CPU_SUBTYPE_ST40GX1 is not set -+ -+# -+# SH-4A Processor Support -+# -+# CONFIG_CPU_SUBTYPE_SH73180 is not set -+# CONFIG_CPU_SUBTYPE_SH7770 is not set -+# CONFIG_CPU_SUBTYPE_SH7780 is not set -+ -+# -+# Memory management options -+# -+CONFIG_MMU=y -+CONFIG_SELECT_MEMORY_MODEL=y -+CONFIG_FLATMEM_MANUAL=y -+# CONFIG_DISCONTIGMEM_MANUAL is not set -+# CONFIG_SPARSEMEM_MANUAL is not set -+CONFIG_FLATMEM=y -+CONFIG_FLAT_NODE_MEM_MAP=y -+# CONFIG_SPARSEMEM_STATIC is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+ -+# -+# Cache configuration -+# -+# CONFIG_SH_DIRECT_MAPPED is not set -+# CONFIG_SH_WRITETHROUGH is not set -+# CONFIG_SH_OCRAM is not set -+CONFIG_MEMORY_START=0x08030000 -+CONFIG_MEMORY_SIZE=0x7fd0000 -+ -+# -+# Processor features -+# -+CONFIG_CPU_LITTLE_ENDIAN=y -+CONFIG_SH_RTC=y -+CONFIG_SH_FPU=y -+# CONFIG_SH_STORE_QUEUES is not set -+CONFIG_CPU_HAS_INTEVT=y -+CONFIG_CPU_HAS_SR_RB=y -+ -+# -+# Timer support -+# -+CONFIG_SH_TMU=y -+CONFIG_SH_PCLK_FREQ=30000000 -+ -+# -+# CPU Frequency scaling -+# -+# CONFIG_CPU_FREQ is not set -+ -+# -+# DMA support -+# -+CONFIG_SH_DMA=y -+CONFIG_NR_ONCHIP_DMA_CHANNELS=8 -+# CONFIG_NR_DMA_CHANNELS_BOOL is not set -+ -+# -+# Companion Chips -+# -+# CONFIG_HD6446X_SERIES is not set -+ -+# -+# Kernel features -+# -+# CONFIG_KEXEC is not set -+# CONFIG_PREEMPT is not set -+# CONFIG_SMP is not set -+ -+# -+# Boot options -+# -+CONFIG_ZERO_PAGE_OFFSET=0x00001000 -+CONFIG_BOOT_LINK_OFFSET=0x009e0000 -+# CONFIG_UBC_WAKEUP is not set -+CONFIG_CMDLINE_BOOL=y -+CONFIG_CMDLINE="console=ttySC1,38400N81 root=/dev/nfs ip=:::::eth1:autoconf" -+ -+# -+# Bus options -+# -+CONFIG_PCI=y -+CONFIG_SH_PCIDMA_NONCOHERENT=y -+CONFIG_PCI_AUTO=y -+CONFIG_PCI_AUTO_UPDATE_RESOURCES=y -+# CONFIG_PCI_DEBUG is not set -+ -+# -+# PCCARD (PCMCIA/CardBus) support -+# -+# CONFIG_PCCARD is not set -+ -+# -+# PCI Hotplug Support -+# -+CONFIG_HOTPLUG_PCI=y -+# CONFIG_HOTPLUG_PCI_FAKE is not set -+# CONFIG_HOTPLUG_PCI_CPCI is not set -+# CONFIG_HOTPLUG_PCI_SHPC is not set -+ -+# -+# Executable file formats -+# -+CONFIG_BINFMT_ELF=y -+# CONFIG_BINFMT_FLAT is not set -+# CONFIG_BINFMT_MISC is not set -+ -+# -+# Power management options (EXPERIMENTAL) -+# -+# CONFIG_PM is not set -+ -+# -+# Networking -+# -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+# CONFIG_NETDEBUG is not set -+CONFIG_PACKET=y -+CONFIG_PACKET_MMAP=y -+CONFIG_UNIX=y -+CONFIG_XFRM=y -+# CONFIG_XFRM_USER is not set -+CONFIG_NET_KEY=y -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+CONFIG_IP_ADVANCED_ROUTER=y -+CONFIG_ASK_IP_FIB_HASH=y -+# CONFIG_IP_FIB_TRIE is not set -+CONFIG_IP_FIB_HASH=y -+CONFIG_IP_MULTIPLE_TABLES=y -+# CONFIG_IP_ROUTE_FWMARK is not set -+CONFIG_IP_ROUTE_MULTIPATH=y -+CONFIG_IP_ROUTE_MULTIPATH_CACHED=y -+CONFIG_IP_ROUTE_MULTIPATH_RR=m -+CONFIG_IP_ROUTE_MULTIPATH_RANDOM=m -+CONFIG_IP_ROUTE_MULTIPATH_WRANDOM=m -+CONFIG_IP_ROUTE_MULTIPATH_DRR=m -+# CONFIG_IP_ROUTE_VERBOSE is not set -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+CONFIG_IP_PNP_BOOTP=y -+CONFIG_IP_PNP_RARP=y -+CONFIG_NET_IPIP=y -+CONFIG_NET_IPGRE=y -+CONFIG_NET_IPGRE_BROADCAST=y -+CONFIG_IP_MROUTE=y -+CONFIG_IP_PIMSM_V1=y -+CONFIG_IP_PIMSM_V2=y -+# CONFIG_ARPD is not set -+CONFIG_SYN_COOKIES=y -+CONFIG_INET_AH=y -+CONFIG_INET_ESP=y -+CONFIG_INET_IPCOMP=y -+CONFIG_INET_XFRM_TUNNEL=y -+CONFIG_INET_TUNNEL=y -+CONFIG_INET_DIAG=m -+CONFIG_INET_TCP_DIAG=m -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_BIC=y -+ -+# -+# IP: Virtual Server Configuration -+# -+# CONFIG_IP_VS is not set -+CONFIG_IPV6=y -+CONFIG_IPV6_PRIVACY=y -+# CONFIG_IPV6_ROUTER_PREF is not set -+CONFIG_INET6_AH=y -+CONFIG_INET6_ESP=y -+CONFIG_INET6_IPCOMP=y -+CONFIG_INET6_XFRM_TUNNEL=y -+CONFIG_INET6_TUNNEL=y -+CONFIG_IPV6_TUNNEL=y -+CONFIG_NETFILTER=y -+# CONFIG_NETFILTER_DEBUG is not set -+CONFIG_BRIDGE_NETFILTER=y -+ -+# -+# Core Netfilter Configuration -+# -+CONFIG_NETFILTER_NETLINK=m -+CONFIG_NETFILTER_NETLINK_QUEUE=m -+CONFIG_NETFILTER_NETLINK_LOG=m -+CONFIG_NETFILTER_XTABLES=m -+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -+CONFIG_NETFILTER_XT_TARGET_MARK=m -+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -+CONFIG_NETFILTER_XT_MATCH_COMMENT=m -+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -+CONFIG_NETFILTER_XT_MATCH_DCCP=m -+CONFIG_NETFILTER_XT_MATCH_ESP=m -+CONFIG_NETFILTER_XT_MATCH_HELPER=m -+CONFIG_NETFILTER_XT_MATCH_LENGTH=m -+CONFIG_NETFILTER_XT_MATCH_LIMIT=m -+CONFIG_NETFILTER_XT_MATCH_MAC=m -+CONFIG_NETFILTER_XT_MATCH_MARK=m -+CONFIG_NETFILTER_XT_MATCH_POLICY=m -+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -+CONFIG_NETFILTER_XT_MATCH_REALM=m -+CONFIG_NETFILTER_XT_MATCH_SCTP=m -+CONFIG_NETFILTER_XT_MATCH_STATE=m -+CONFIG_NETFILTER_XT_MATCH_STRING=m -+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -+ -+# -+# IP: Netfilter Configuration -+# -+CONFIG_IP_NF_CONNTRACK=m -+CONFIG_IP_NF_CT_ACCT=y -+CONFIG_IP_NF_CONNTRACK_MARK=y -+CONFIG_IP_NF_CONNTRACK_EVENTS=y -+CONFIG_IP_NF_CONNTRACK_NETLINK=m -+# CONFIG_IP_NF_CT_PROTO_SCTP is not set -+CONFIG_IP_NF_FTP=m -+CONFIG_IP_NF_IRC=m -+CONFIG_IP_NF_NETBIOS_NS=m -+CONFIG_IP_NF_TFTP=m -+# CONFIG_IP_NF_AMANDA is not set -+CONFIG_IP_NF_PPTP=m -+CONFIG_IP_NF_H323=m -+CONFIG_IP_NF_QUEUE=m -+CONFIG_IP_NF_IPTABLES=m -+CONFIG_IP_NF_MATCH_IPRANGE=m -+CONFIG_IP_NF_MATCH_TOS=m -+CONFIG_IP_NF_MATCH_RECENT=m -+CONFIG_IP_NF_MATCH_ECN=m -+CONFIG_IP_NF_MATCH_DSCP=m -+CONFIG_IP_NF_MATCH_AH=m -+CONFIG_IP_NF_MATCH_TTL=m -+CONFIG_IP_NF_MATCH_OWNER=m -+CONFIG_IP_NF_MATCH_ADDRTYPE=m -+CONFIG_IP_NF_MATCH_HASHLIMIT=m -+CONFIG_IP_NF_FILTER=m -+CONFIG_IP_NF_TARGET_REJECT=m -+CONFIG_IP_NF_TARGET_LOG=m -+CONFIG_IP_NF_TARGET_ULOG=m -+CONFIG_IP_NF_TARGET_TCPMSS=m -+CONFIG_IP_NF_NAT=m -+CONFIG_IP_NF_NAT_NEEDED=y -+CONFIG_IP_NF_TARGET_MASQUERADE=m -+CONFIG_IP_NF_TARGET_REDIRECT=m -+CONFIG_IP_NF_TARGET_NETMAP=m -+CONFIG_IP_NF_TARGET_SAME=m -+CONFIG_IP_NF_NAT_SNMP_BASIC=m -+CONFIG_IP_NF_NAT_IRC=m -+CONFIG_IP_NF_NAT_FTP=m -+CONFIG_IP_NF_NAT_TFTP=m -+CONFIG_IP_NF_NAT_PPTP=m -+CONFIG_IP_NF_NAT_H323=m -+CONFIG_IP_NF_MANGLE=m -+CONFIG_IP_NF_TARGET_TOS=m -+CONFIG_IP_NF_TARGET_ECN=m -+CONFIG_IP_NF_TARGET_DSCP=m -+CONFIG_IP_NF_TARGET_TTL=m -+CONFIG_IP_NF_TARGET_CLUSTERIP=m -+CONFIG_IP_NF_RAW=m -+CONFIG_IP_NF_ARPTABLES=m -+CONFIG_IP_NF_ARPFILTER=m -+CONFIG_IP_NF_ARP_MANGLE=m -+ -+# -+# IPv6: Netfilter Configuration (EXPERIMENTAL) -+# -+CONFIG_IP6_NF_QUEUE=m -+CONFIG_IP6_NF_IPTABLES=m -+CONFIG_IP6_NF_MATCH_RT=m -+CONFIG_IP6_NF_MATCH_OPTS=m -+CONFIG_IP6_NF_MATCH_FRAG=m -+CONFIG_IP6_NF_MATCH_HL=m -+CONFIG_IP6_NF_MATCH_OWNER=m -+CONFIG_IP6_NF_MATCH_IPV6HEADER=m -+CONFIG_IP6_NF_MATCH_AH=m -+CONFIG_IP6_NF_MATCH_EUI64=m -+CONFIG_IP6_NF_FILTER=m -+CONFIG_IP6_NF_TARGET_LOG=m -+CONFIG_IP6_NF_TARGET_REJECT=m -+CONFIG_IP6_NF_MANGLE=m -+CONFIG_IP6_NF_TARGET_HL=m -+CONFIG_IP6_NF_RAW=m -+ -+# -+# Bridge: Netfilter Configuration -+# -+# CONFIG_BRIDGE_NF_EBTABLES is not set -+ -+# -+# DCCP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_DCCP is not set -+ -+# -+# SCTP Configuration (EXPERIMENTAL) -+# -+# CONFIG_IP_SCTP is not set -+ -+# -+# TIPC Configuration (EXPERIMENTAL) -+# -+# CONFIG_TIPC is not set -+# CONFIG_ATM is not set -+CONFIG_BRIDGE=y -+CONFIG_VLAN_8021Q=y -+# CONFIG_DECNET is not set -+CONFIG_LLC=y -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_NET_DIVERT is not set -+# CONFIG_ECONET is not set -+# CONFIG_WAN_ROUTER is not set -+ -+# -+# QoS and/or fair queueing -+# -+CONFIG_NET_SCHED=y -+CONFIG_NET_SCH_CLK_JIFFIES=y -+# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set -+# CONFIG_NET_SCH_CLK_CPU is not set -+ -+# -+# Queueing/Scheduling -+# -+CONFIG_NET_SCH_CBQ=m -+CONFIG_NET_SCH_HTB=m -+CONFIG_NET_SCH_HFSC=m -+CONFIG_NET_SCH_PRIO=m -+CONFIG_NET_SCH_RED=m -+CONFIG_NET_SCH_SFQ=m -+CONFIG_NET_SCH_TEQL=m -+CONFIG_NET_SCH_TBF=m -+CONFIG_NET_SCH_GRED=m -+CONFIG_NET_SCH_DSMARK=m -+CONFIG_NET_SCH_NETEM=m -+CONFIG_NET_SCH_INGRESS=m -+ -+# -+# Classification -+# -+CONFIG_NET_CLS=y -+CONFIG_NET_CLS_BASIC=m -+CONFIG_NET_CLS_TCINDEX=m -+CONFIG_NET_CLS_ROUTE4=m -+CONFIG_NET_CLS_ROUTE=y -+CONFIG_NET_CLS_FW=m -+CONFIG_NET_CLS_U32=m -+CONFIG_CLS_U32_PERF=y -+CONFIG_CLS_U32_MARK=y -+CONFIG_NET_CLS_RSVP=m -+CONFIG_NET_CLS_RSVP6=m -+CONFIG_NET_EMATCH=y -+CONFIG_NET_EMATCH_STACK=32 -+CONFIG_NET_EMATCH_CMP=m -+CONFIG_NET_EMATCH_NBYTE=m -+CONFIG_NET_EMATCH_U32=m -+CONFIG_NET_EMATCH_META=m -+CONFIG_NET_EMATCH_TEXT=m -+CONFIG_NET_CLS_ACT=y -+CONFIG_NET_ACT_POLICE=m -+CONFIG_NET_ACT_GACT=m -+CONFIG_GACT_PROB=y -+CONFIG_NET_ACT_MIRRED=m -+CONFIG_NET_ACT_IPT=m -+CONFIG_NET_ACT_PEDIT=m -+# CONFIG_NET_ACT_SIMP is not set -+CONFIG_NET_CLS_IND=y -+CONFIG_NET_ESTIMATOR=y -+ -+# -+# Network testing -+# -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_HAMRADIO is not set -+# CONFIG_IRDA is not set -+# CONFIG_BT is not set -+CONFIG_IEEE80211=y -+# CONFIG_IEEE80211_DEBUG is not set -+CONFIG_IEEE80211_CRYPT_WEP=y -+CONFIG_IEEE80211_CRYPT_CCMP=y -+CONFIG_IEEE80211_CRYPT_TKIP=y -+CONFIG_IEEE80211_SOFTMAC=m -+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set -+CONFIG_WIRELESS_EXT=y -+ -+# -+# Device Drivers -+# -+ -+# -+# Generic Driver Options -+# -+CONFIG_STANDALONE=y -+CONFIG_PREVENT_FIRMWARE_BUILD=y -+CONFIG_FW_LOADER=m -+# CONFIG_DEBUG_DRIVER is not set -+ -+# -+# Connector - unified userspace <-> kernelspace linker -+# -+CONFIG_CONNECTOR=m -+ -+# -+# Memory Technology Devices (MTD) -+# -+CONFIG_MTD=m -+CONFIG_MTD_DEBUG=y -+CONFIG_MTD_DEBUG_VERBOSE=0 -+# CONFIG_MTD_CONCAT is not set -+# CONFIG_MTD_PARTITIONS is not set -+ -+# -+# User Modules And Translation Layers -+# -+CONFIG_MTD_CHAR=m -+CONFIG_MTD_BLOCK=m -+# CONFIG_MTD_BLOCK_RO is not set -+CONFIG_FTL=m -+CONFIG_NFTL=m -+# CONFIG_NFTL_RW is not set -+CONFIG_INFTL=m -+CONFIG_RFD_FTL=m -+ -+# -+# RAM/ROM/Flash chip drivers -+# -+CONFIG_MTD_CFI=m -+CONFIG_MTD_JEDECPROBE=m -+CONFIG_MTD_GEN_PROBE=m -+# CONFIG_MTD_CFI_ADV_OPTIONS is not set -+CONFIG_MTD_MAP_BANK_WIDTH_1=y -+CONFIG_MTD_MAP_BANK_WIDTH_2=y -+CONFIG_MTD_MAP_BANK_WIDTH_4=y -+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set -+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set -+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set -+CONFIG_MTD_CFI_I1=y -+CONFIG_MTD_CFI_I2=y -+# CONFIG_MTD_CFI_I4 is not set -+# CONFIG_MTD_CFI_I8 is not set -+# CONFIG_MTD_CFI_INTELEXT is not set -+# CONFIG_MTD_CFI_AMDSTD is not set -+# CONFIG_MTD_CFI_STAA is not set -+# CONFIG_MTD_RAM is not set -+# CONFIG_MTD_ROM is not set -+# CONFIG_MTD_ABSENT is not set -+# CONFIG_MTD_OBSOLETE_CHIPS is not set -+ -+# -+# Mapping drivers for chip access -+# -+# CONFIG_MTD_COMPLEX_MAPPINGS is not set -+# CONFIG_MTD_PHYSMAP is not set -+# CONFIG_MTD_SOLUTIONENGINE is not set -+# CONFIG_MTD_PLATRAM is not set -+ -+# -+# Self-contained MTD device drivers -+# -+# CONFIG_MTD_PMC551 is not set -+# CONFIG_MTD_SLRAM is not set -+# CONFIG_MTD_PHRAM is not set -+# CONFIG_MTD_MTDRAM is not set -+# CONFIG_MTD_BLOCK2MTD is not set -+ -+# -+# Disk-On-Chip Device Drivers -+# -+# CONFIG_MTD_DOC2000 is not set -+# CONFIG_MTD_DOC2001 is not set -+# CONFIG_MTD_DOC2001PLUS is not set -+ -+# -+# NAND Flash Device Drivers -+# -+CONFIG_MTD_NAND=m -+# CONFIG_MTD_NAND_VERIFY_WRITE is not set -+CONFIG_MTD_NAND_IDS=m -+# CONFIG_MTD_NAND_DISKONCHIP is not set -+ -+# -+# OneNAND Flash Device Drivers -+# -+# CONFIG_MTD_ONENAND is not set -+ -+# -+# Parallel port support -+# -+# CONFIG_PARPORT is not set -+ -+# -+# Plug and Play support -+# -+ -+# -+# Block devices -+# -+# CONFIG_BLK_CPQ_DA is not set -+# CONFIG_BLK_CPQ_CISS_DA is not set -+# CONFIG_BLK_DEV_DAC960 is not set -+CONFIG_BLK_SSFDC=y -+# CONFIG_BLK_DEV_UMEM is not set -+# CONFIG_BLK_DEV_COW_COMMON is not set -+CONFIG_BLK_DEV_LOOP=m -+CONFIG_BLK_DEV_CRYPTOLOOP=m -+# CONFIG_BLK_DEV_NBD is not set -+# CONFIG_BLK_DEV_SX8 is not set -+# CONFIG_BLK_DEV_UB is not set -+CONFIG_BLK_DEV_RAM=y -+CONFIG_BLK_DEV_RAM_COUNT=16 -+CONFIG_BLK_DEV_RAM_SIZE=4096 -+CONFIG_BLK_DEV_INITRD=y -+# CONFIG_CDROM_PKTCDVD is not set -+CONFIG_ATA_OVER_ETH=m -+ -+# -+# ATA/ATAPI/MFM/RLL support -+# -+# CONFIG_IDE is not set -+ -+# -+# SCSI device support -+# -+# CONFIG_RAID_ATTRS is not set -+CONFIG_SCSI=y -+CONFIG_SCSI_PROC_FS=y -+ -+# -+# SCSI support type (disk, tape, CD-ROM) -+# -+CONFIG_BLK_DEV_SD=m -+# CONFIG_CHR_DEV_ST is not set -+# CONFIG_CHR_DEV_OSST is not set -+CONFIG_BLK_DEV_SR=m -+# CONFIG_BLK_DEV_SR_VENDOR is not set -+CONFIG_CHR_DEV_SG=m -+# CONFIG_CHR_DEV_SCH is not set -+ -+# -+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -+# -+# CONFIG_SCSI_MULTI_LUN is not set -+# CONFIG_SCSI_CONSTANTS is not set -+# CONFIG_SCSI_LOGGING is not set -+ -+# -+# SCSI Transport Attributes -+# -+# CONFIG_SCSI_SPI_ATTRS is not set -+# CONFIG_SCSI_FC_ATTRS is not set -+# CONFIG_SCSI_ISCSI_ATTRS is not set -+# CONFIG_SCSI_SAS_ATTRS is not set -+ -+# -+# SCSI low-level drivers -+# -+# CONFIG_ISCSI_TCP is not set -+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -+# CONFIG_SCSI_3W_9XXX is not set -+# CONFIG_SCSI_ACARD is not set -+# CONFIG_SCSI_AACRAID is not set -+# CONFIG_SCSI_AIC7XXX is not set -+# CONFIG_SCSI_AIC7XXX_OLD is not set -+# CONFIG_SCSI_AIC79XX is not set -+# CONFIG_SCSI_DPT_I2O is not set -+# CONFIG_MEGARAID_NEWGEN is not set -+# CONFIG_MEGARAID_LEGACY is not set -+# CONFIG_MEGARAID_SAS is not set -+# CONFIG_SCSI_SATA is not set -+# CONFIG_SCSI_DMX3191D is not set -+# CONFIG_SCSI_FUTURE_DOMAIN is not set -+# CONFIG_SCSI_IPS is not set -+# CONFIG_SCSI_INITIO is not set -+# CONFIG_SCSI_INIA100 is not set -+# CONFIG_SCSI_SYM53C8XX_2 is not set -+# CONFIG_SCSI_IPR is not set -+# CONFIG_SCSI_QLOGIC_1280 is not set -+# CONFIG_SCSI_QLA_FC is not set -+# CONFIG_SCSI_LPFC is not set -+# CONFIG_SCSI_DC395x is not set -+# CONFIG_SCSI_DC390T is not set -+# CONFIG_SCSI_NSP32 is not set -+# CONFIG_SCSI_DEBUG is not set -+ -+# -+# Multi-device support (RAID and LVM) -+# -+# CONFIG_MD is not set -+ -+# -+# Fusion MPT device support -+# -+# CONFIG_FUSION is not set -+# CONFIG_FUSION_SPI is not set -+# CONFIG_FUSION_FC is not set -+# CONFIG_FUSION_SAS is not set -+ -+# -+# IEEE 1394 (FireWire) support -+# -+# CONFIG_IEEE1394 is not set -+ -+# -+# I2O device support -+# -+# CONFIG_I2O is not set -+ -+# -+# Network device support -+# -+CONFIG_NETDEVICES=y -+# CONFIG_IFB is not set -+# CONFIG_DUMMY is not set -+# CONFIG_BONDING is not set -+# CONFIG_EQUALIZER is not set -+CONFIG_TUN=m -+ -+# -+# ARCnet devices -+# -+# CONFIG_ARCNET is not set -+ -+# -+# PHY device support -+# -+CONFIG_PHYLIB=m -+ -+# -+# MII PHY device drivers -+# -+CONFIG_MARVELL_PHY=m -+CONFIG_DAVICOM_PHY=m -+CONFIG_QSEMI_PHY=m -+CONFIG_LXT_PHY=m -+CONFIG_CICADA_PHY=m -+ -+# -+# Ethernet (10 or 100Mbit) -+# -+CONFIG_NET_ETHERNET=y -+CONFIG_MII=y -+# CONFIG_STNIC is not set -+# CONFIG_HAPPYMEAL is not set -+# CONFIG_SUNGEM is not set -+# CONFIG_CASSINI is not set -+# CONFIG_NET_VENDOR_3COM is not set -+# CONFIG_SMC91X is not set -+ -+# -+# Tulip family network device support -+# -+# CONFIG_NET_TULIP is not set -+# CONFIG_HP100 is not set -+# CONFIG_NE2000 is not set -+CONFIG_NET_PCI=y -+# CONFIG_PCNET32 is not set -+# CONFIG_AMD8111_ETH is not set -+# CONFIG_ADAPTEC_STARFIRE is not set -+# CONFIG_B44 is not set -+# CONFIG_FORCEDETH is not set -+# CONFIG_DGRS is not set -+# CONFIG_EEPRO100 is not set -+# CONFIG_E100 is not set -+# CONFIG_FEALNX is not set -+# CONFIG_NATSEMI is not set -+# CONFIG_NE2K_PCI is not set -+# CONFIG_8139CP is not set -+CONFIG_8139TOO=y -+# CONFIG_8139TOO_PIO is not set -+CONFIG_8139TOO_TUNE_TWISTER=y -+# CONFIG_8139TOO_8129 is not set -+CONFIG_8139_OLD_RX_RESET=y -+# CONFIG_SIS900 is not set -+# CONFIG_EPIC100 is not set -+# CONFIG_SUNDANCE is not set -+# CONFIG_TLAN is not set -+# CONFIG_VIA_RHINE is not set -+ -+# -+# Ethernet (1000 Mbit) -+# -+# CONFIG_ACENIC is not set -+# CONFIG_DL2K is not set -+# CONFIG_E1000 is not set -+# CONFIG_NS83820 is not set -+# CONFIG_HAMACHI is not set -+# CONFIG_YELLOWFIN is not set -+# CONFIG_R8169 is not set -+# CONFIG_SIS190 is not set -+# CONFIG_SKGE is not set -+# CONFIG_SKY2 is not set -+# CONFIG_SK98LIN is not set -+# CONFIG_VIA_VELOCITY is not set -+# CONFIG_TIGON3 is not set -+# CONFIG_BNX2 is not set -+ -+# -+# Ethernet (10000 Mbit) -+# -+# CONFIG_CHELSIO_T1 is not set -+# CONFIG_IXGB is not set -+# CONFIG_S2IO is not set -+ -+# -+# Token Ring devices -+# -+# CONFIG_TR is not set -+ -+# -+# Wireless LAN (non-hamradio) -+# -+CONFIG_NET_RADIO=y -+CONFIG_NET_WIRELESS_RTNETLINK=y -+ -+# -+# Obsolete Wireless cards support (pre-802.11) -+# -+# CONFIG_STRIP is not set -+ -+# -+# Wireless 802.11b ISA/PCI cards support -+# -+# CONFIG_IPW2100 is not set -+# CONFIG_IPW2200 is not set -+# CONFIG_HERMES is not set -+# CONFIG_ATMEL is not set -+ -+# -+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support -+# -+CONFIG_PRISM54=m -+# CONFIG_HOSTAP is not set -+CONFIG_BCM43XX=m -+CONFIG_BCM43XX_DEBUG=y -+CONFIG_BCM43XX_DMA=y -+CONFIG_BCM43XX_PIO=y -+CONFIG_BCM43XX_DMA_AND_PIO_MODE=y -+# CONFIG_BCM43XX_DMA_MODE is not set -+# CONFIG_BCM43XX_PIO_MODE is not set -+CONFIG_NET_WIRELESS=y -+ -+# -+# Wan interfaces -+# -+# CONFIG_WAN is not set -+# CONFIG_FDDI is not set -+# CONFIG_HIPPI is not set -+CONFIG_PPP=m -+CONFIG_PPP_MULTILINK=y -+CONFIG_PPP_FILTER=y -+CONFIG_PPP_ASYNC=m -+CONFIG_PPP_SYNC_TTY=m -+CONFIG_PPP_DEFLATE=m -+CONFIG_PPP_BSDCOMP=m -+CONFIG_PPP_MPPE=m -+CONFIG_PPPOE=m -+CONFIG_SLIP=m -+CONFIG_SLIP_COMPRESSED=y -+CONFIG_SLIP_SMART=y -+# CONFIG_SLIP_MODE_SLIP6 is not set -+# CONFIG_NET_FC is not set -+# CONFIG_SHAPER is not set -+# CONFIG_NETCONSOLE is not set -+# CONFIG_NETPOLL is not set -+# CONFIG_NET_POLL_CONTROLLER is not set -+ -+# -+# ISDN subsystem -+# -+# CONFIG_ISDN is not set -+ -+# -+# Telephony Support -+# -+# CONFIG_PHONE is not set -+ -+# -+# Input device support -+# -+CONFIG_INPUT=y -+ -+# -+# Userland interfaces -+# -+CONFIG_INPUT_MOUSEDEV=y -+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -+# CONFIG_INPUT_JOYDEV is not set -+# CONFIG_INPUT_TSDEV is not set -+# CONFIG_INPUT_EVDEV is not set -+# CONFIG_INPUT_EVBUG is not set -+ -+# -+# Input Device Drivers -+# -+# CONFIG_INPUT_KEYBOARD is not set -+# CONFIG_INPUT_MOUSE is not set -+# CONFIG_INPUT_JOYSTICK is not set -+# CONFIG_INPUT_TOUCHSCREEN is not set -+# CONFIG_INPUT_MISC is not set -+ -+# -+# Hardware I/O ports -+# -+# CONFIG_SERIO is not set -+# CONFIG_GAMEPORT is not set -+ -+# -+# Character devices -+# -+CONFIG_VT=y -+CONFIG_VT_CONSOLE=y -+CONFIG_HW_CONSOLE=y -+# CONFIG_SERIAL_NONSTANDARD is not set -+ -+# -+# Serial drivers -+# -+# CONFIG_SERIAL_8250 is not set -+ -+# -+# Non-8250 serial port support -+# -+CONFIG_SERIAL_SH_SCI=y -+CONFIG_SERIAL_SH_SCI_CONSOLE=y -+CONFIG_SERIAL_CORE=y -+CONFIG_SERIAL_CORE_CONSOLE=y -+# CONFIG_SERIAL_JSM is not set -+CONFIG_UNIX98_PTYS=y -+CONFIG_LEGACY_PTYS=y -+CONFIG_LEGACY_PTY_COUNT=256 -+ -+# -+# IPMI -+# -+# CONFIG_IPMI_HANDLER is not set -+ -+# -+# Watchdog Cards -+# -+CONFIG_WATCHDOG=y -+# CONFIG_WATCHDOG_NOWAYOUT is not set -+ -+# -+# Watchdog Device Drivers -+# -+# CONFIG_SOFT_WATCHDOG is not set -+CONFIG_SH_WDT=m -+ -+# -+# PCI-based Watchdog Cards -+# -+# CONFIG_PCIPCWATCHDOG is not set -+# CONFIG_WDTPCI is not set -+ -+# -+# USB-based Watchdog Cards -+# -+# CONFIG_USBPCWATCHDOG is not set -+# CONFIG_RTC is not set -+# CONFIG_GEN_RTC is not set -+# CONFIG_DTLK is not set -+# CONFIG_R3964 is not set -+# CONFIG_APPLICOM is not set -+ -+# -+# Ftape, the floppy tape device driver -+# -+# CONFIG_DRM is not set -+# CONFIG_RAW_DRIVER is not set -+ -+# -+# TPM devices -+# -+# CONFIG_TCG_TPM is not set -+# CONFIG_TELCLOCK is not set -+ -+# -+# I2C support -+# -+# CONFIG_I2C is not set -+ -+# -+# SPI support -+# -+# CONFIG_SPI is not set -+# CONFIG_SPI_MASTER is not set -+ -+# -+# Dallas's 1-wire bus -+# -+# CONFIG_W1 is not set -+ -+# -+# Hardware Monitoring support -+# -+CONFIG_HWMON=y -+# CONFIG_HWMON_VID is not set -+# CONFIG_SENSORS_F71805F is not set -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# -+# Misc devices -+# -+ -+# -+# Multimedia devices -+# -+# CONFIG_VIDEO_DEV is not set -+CONFIG_VIDEO_V4L2=y -+ -+# -+# Digital Video Broadcasting Devices -+# -+# CONFIG_DVB is not set -+# CONFIG_USB_DABUSB is not set -+ -+# -+# Graphics support -+# -+# CONFIG_FB is not set -+ -+# -+# Console display driver support -+# -+CONFIG_DUMMY_CONSOLE=y -+ -+# -+# Sound -+# -+# CONFIG_SOUND is not set -+ -+# -+# USB support -+# -+CONFIG_USB_ARCH_HAS_HCD=y -+CONFIG_USB_ARCH_HAS_OHCI=y -+CONFIG_USB_ARCH_HAS_EHCI=y -+CONFIG_USB=y -+# CONFIG_USB_DEBUG is not set -+ -+# -+# Miscellaneous USB options -+# -+CONFIG_USB_DEVICEFS=y -+# CONFIG_USB_BANDWIDTH is not set -+# CONFIG_USB_DYNAMIC_MINORS is not set -+# CONFIG_USB_OTG is not set -+ -+# -+# USB Host Controller Drivers -+# -+CONFIG_USB_EHCI_HCD=y -+# CONFIG_USB_EHCI_SPLIT_ISO is not set -+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -+# CONFIG_USB_ISP116X_HCD is not set -+CONFIG_USB_OHCI_HCD=y -+# CONFIG_USB_OHCI_BIG_ENDIAN is not set -+CONFIG_USB_OHCI_LITTLE_ENDIAN=y -+# CONFIG_USB_UHCI_HCD is not set -+# CONFIG_USB_SL811_HCD is not set -+ -+# -+# USB Device Class drivers -+# -+CONFIG_USB_ACM=m -+CONFIG_USB_PRINTER=m -+ -+# -+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -+# -+ -+# -+# may also be needed; see USB_STORAGE Help for more information -+# -+CONFIG_USB_STORAGE=y -+# CONFIG_USB_STORAGE_DEBUG is not set -+# CONFIG_USB_STORAGE_DATAFAB is not set -+# CONFIG_USB_STORAGE_FREECOM is not set -+# CONFIG_USB_STORAGE_DPCM is not set -+# CONFIG_USB_STORAGE_USBAT is not set -+# CONFIG_USB_STORAGE_SDDR09 is not set -+# CONFIG_USB_STORAGE_SDDR55 is not set -+# CONFIG_USB_STORAGE_JUMPSHOT is not set -+# CONFIG_USB_STORAGE_ALAUDA is not set -+# CONFIG_USB_LIBUSUAL is not set -+ -+# -+# USB Input Devices -+# -+# CONFIG_USB_HID is not set -+ -+# -+# USB HID Boot Protocol drivers -+# -+# CONFIG_USB_KBD is not set -+# CONFIG_USB_MOUSE is not set -+# CONFIG_USB_AIPTEK is not set -+# CONFIG_USB_WACOM is not set -+# CONFIG_USB_ACECAD is not set -+# CONFIG_USB_KBTAB is not set -+# CONFIG_USB_POWERMATE is not set -+# CONFIG_USB_TOUCHSCREEN is not set -+# CONFIG_USB_YEALINK is not set -+# CONFIG_USB_XPAD is not set -+# CONFIG_USB_ATI_REMOTE is not set -+# CONFIG_USB_ATI_REMOTE2 is not set -+# CONFIG_USB_KEYSPAN_REMOTE is not set -+# CONFIG_USB_APPLETOUCH is not set -+ -+# -+# USB Imaging devices -+# -+# CONFIG_USB_MDC800 is not set -+# CONFIG_USB_MICROTEK is not set -+ -+# -+# USB Network Adapters -+# -+# CONFIG_USB_CATC is not set -+# CONFIG_USB_KAWETH is not set -+# CONFIG_USB_PEGASUS is not set -+# CONFIG_USB_RTL8150 is not set -+# CONFIG_USB_USBNET is not set -+# CONFIG_USB_ZD1201 is not set -+CONFIG_USB_MON=y -+ -+# -+# USB port drivers -+# -+ -+# -+# USB Serial Converter support -+# -+CONFIG_USB_SERIAL=m -+CONFIG_USB_SERIAL_GENERIC=y -+# CONFIG_USB_SERIAL_AIRPRIME is not set -+# CONFIG_USB_SERIAL_ANYDATA is not set -+CONFIG_USB_SERIAL_ARK3116=m -+# CONFIG_USB_SERIAL_BELKIN is not set -+# CONFIG_USB_SERIAL_WHITEHEAT is not set -+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -+# CONFIG_USB_SERIAL_CP2101 is not set -+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -+# CONFIG_USB_SERIAL_EMPEG is not set -+# CONFIG_USB_SERIAL_FTDI_SIO is not set -+# CONFIG_USB_SERIAL_FUNSOFT is not set -+# CONFIG_USB_SERIAL_VISOR is not set -+# CONFIG_USB_SERIAL_IPAQ is not set -+# CONFIG_USB_SERIAL_IR is not set -+# CONFIG_USB_SERIAL_EDGEPORT is not set -+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set -+# CONFIG_USB_SERIAL_GARMIN is not set -+# CONFIG_USB_SERIAL_IPW is not set -+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -+# CONFIG_USB_SERIAL_KEYSPAN is not set -+# CONFIG_USB_SERIAL_KLSI is not set -+# CONFIG_USB_SERIAL_KOBIL_SCT is not set -+# CONFIG_USB_SERIAL_MCT_U232 is not set -+# CONFIG_USB_SERIAL_NAVMAN is not set -+CONFIG_USB_SERIAL_PL2303=m -+# CONFIG_USB_SERIAL_HP4X is not set -+# CONFIG_USB_SERIAL_SAFE is not set -+# CONFIG_USB_SERIAL_TI is not set -+# CONFIG_USB_SERIAL_CYBERJACK is not set -+# CONFIG_USB_SERIAL_XIRCOM is not set -+# CONFIG_USB_SERIAL_OMNINET is not set -+ -+# -+# USB Miscellaneous drivers -+# -+# CONFIG_USB_EMI62 is not set -+# CONFIG_USB_EMI26 is not set -+# CONFIG_USB_AUERSWALD is not set -+# CONFIG_USB_RIO500 is not set -+# CONFIG_USB_LEGOTOWER is not set -+# CONFIG_USB_LCD is not set -+# CONFIG_USB_LED is not set -+# CONFIG_USB_CYTHERM is not set -+# CONFIG_USB_PHIDGETKIT is not set -+# CONFIG_USB_PHIDGETSERVO is not set -+# CONFIG_USB_IDMOUSE is not set -+# CONFIG_USB_SISUSBVGA is not set -+# CONFIG_USB_LD is not set -+# CONFIG_USB_TEST is not set -+ -+# -+# USB DSL modem support -+# -+ -+# -+# USB Gadget Support -+# -+# CONFIG_USB_GADGET is not set -+ -+# -+# MMC/SD Card support -+# -+# CONFIG_MMC is not set -+ -+# -+# LED devices -+# -+# CONFIG_NEW_LEDS is not set -+ -+# -+# LED drivers -+# -+ -+# -+# LED Triggers -+# -+ -+# -+# InfiniBand support -+# -+# CONFIG_INFINIBAND is not set -+ -+# -+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) -+# -+ -+# -+# Real Time Clock -+# -+# CONFIG_RTC_CLASS is not set -+ -+# -+# File systems -+# -+CONFIG_EXT2_FS=y -+# CONFIG_EXT2_FS_XATTR is not set -+# CONFIG_EXT2_FS_XIP is not set -+CONFIG_EXT3_FS=y -+# CONFIG_EXT3_FS_XATTR is not set -+CONFIG_JBD=y -+# CONFIG_JBD_DEBUG is not set -+CONFIG_REISERFS_FS=m -+# CONFIG_REISERFS_CHECK is not set -+# CONFIG_REISERFS_PROC_INFO is not set -+# CONFIG_REISERFS_FS_XATTR is not set -+# CONFIG_JFS_FS is not set -+# CONFIG_FS_POSIX_ACL is not set -+CONFIG_XFS_FS=m -+CONFIG_XFS_EXPORT=y -+# CONFIG_XFS_QUOTA is not set -+# CONFIG_XFS_SECURITY is not set -+# CONFIG_XFS_POSIX_ACL is not set -+# CONFIG_XFS_RT is not set -+# CONFIG_OCFS2_FS is not set -+# CONFIG_MINIX_FS is not set -+# CONFIG_ROMFS_FS is not set -+CONFIG_INOTIFY=y -+# CONFIG_QUOTA is not set -+CONFIG_DNOTIFY=y -+# CONFIG_AUTOFS_FS is not set -+# CONFIG_AUTOFS4_FS is not set -+CONFIG_FUSE_FS=m -+ -+# -+# CD-ROM/DVD Filesystems -+# -+CONFIG_ISO9660_FS=m -+CONFIG_JOLIET=y -+CONFIG_ZISOFS=y -+CONFIG_ZISOFS_FS=m -+CONFIG_UDF_FS=m -+CONFIG_UDF_NLS=y -+ -+# -+# DOS/FAT/NT Filesystems -+# -+CONFIG_FAT_FS=m -+CONFIG_MSDOS_FS=m -+CONFIG_VFAT_FS=m -+CONFIG_FAT_DEFAULT_CODEPAGE=437 -+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -+# CONFIG_NTFS_FS is not set -+ -+# -+# Pseudo filesystems -+# -+CONFIG_PROC_FS=y -+CONFIG_PROC_KCORE=y -+CONFIG_SYSFS=y -+CONFIG_TMPFS=y -+# CONFIG_HUGETLBFS is not set -+# CONFIG_HUGETLB_PAGE is not set -+CONFIG_RAMFS=y -+CONFIG_CONFIGFS_FS=m -+ -+# -+# Miscellaneous filesystems -+# -+# CONFIG_ADFS_FS is not set -+# CONFIG_AFFS_FS is not set -+# CONFIG_HFS_FS is not set -+# CONFIG_HFSPLUS_FS is not set -+# CONFIG_BEFS_FS is not set -+# CONFIG_BFS_FS is not set -+# CONFIG_EFS_FS is not set -+# CONFIG_JFFS_FS is not set -+# CONFIG_JFFS2_FS is not set -+# CONFIG_CRAMFS is not set -+# CONFIG_VXFS_FS is not set -+# CONFIG_HPFS_FS is not set -+# CONFIG_QNX4FS_FS is not set -+# CONFIG_SYSV_FS is not set -+# CONFIG_UFS_FS is not set -+ -+# -+# Network File Systems -+# -+CONFIG_NFS_FS=y -+CONFIG_NFS_V3=y -+# CONFIG_NFS_V3_ACL is not set -+# CONFIG_NFS_V4 is not set -+# CONFIG_NFS_DIRECTIO is not set -+CONFIG_NFSD=y -+CONFIG_NFSD_V3=y -+# CONFIG_NFSD_V3_ACL is not set -+# CONFIG_NFSD_V4 is not set -+CONFIG_NFSD_TCP=y -+CONFIG_ROOT_NFS=y -+CONFIG_LOCKD=y -+CONFIG_LOCKD_V4=y -+CONFIG_EXPORTFS=y -+CONFIG_NFS_COMMON=y -+CONFIG_SUNRPC=y -+# CONFIG_RPCSEC_GSS_KRB5 is not set -+# CONFIG_RPCSEC_GSS_SPKM3 is not set -+CONFIG_SMB_FS=m -+# CONFIG_SMB_NLS_DEFAULT is not set -+# CONFIG_CIFS is not set -+# CONFIG_NCP_FS is not set -+# CONFIG_CODA_FS is not set -+# CONFIG_AFS_FS is not set -+CONFIG_9P_FS=m -+ -+# -+# Partition Types -+# -+CONFIG_PARTITION_ADVANCED=y -+# CONFIG_ACORN_PARTITION is not set -+# CONFIG_OSF_PARTITION is not set -+# CONFIG_AMIGA_PARTITION is not set -+# CONFIG_ATARI_PARTITION is not set -+# CONFIG_MAC_PARTITION is not set -+CONFIG_MSDOS_PARTITION=y -+# CONFIG_BSD_DISKLABEL is not set -+# CONFIG_MINIX_SUBPARTITION is not set -+# CONFIG_SOLARIS_X86_PARTITION is not set -+# CONFIG_UNIXWARE_DISKLABEL is not set -+# CONFIG_LDM_PARTITION is not set -+# CONFIG_SGI_PARTITION is not set -+# CONFIG_ULTRIX_PARTITION is not set -+# CONFIG_SUN_PARTITION is not set -+# CONFIG_KARMA_PARTITION is not set -+# CONFIG_EFI_PARTITION is not set -+ -+# -+# Native Language Support -+# -+CONFIG_NLS=m -+CONFIG_NLS_DEFAULT="iso8859-1" -+CONFIG_NLS_CODEPAGE_437=m -+# CONFIG_NLS_CODEPAGE_737 is not set -+# CONFIG_NLS_CODEPAGE_775 is not set -+# CONFIG_NLS_CODEPAGE_850 is not set -+# CONFIG_NLS_CODEPAGE_852 is not set -+# CONFIG_NLS_CODEPAGE_855 is not set -+# CONFIG_NLS_CODEPAGE_857 is not set -+# CONFIG_NLS_CODEPAGE_860 is not set -+# CONFIG_NLS_CODEPAGE_861 is not set -+# CONFIG_NLS_CODEPAGE_862 is not set -+# CONFIG_NLS_CODEPAGE_863 is not set -+# CONFIG_NLS_CODEPAGE_864 is not set -+# CONFIG_NLS_CODEPAGE_865 is not set -+# CONFIG_NLS_CODEPAGE_866 is not set -+# CONFIG_NLS_CODEPAGE_869 is not set -+# CONFIG_NLS_CODEPAGE_936 is not set -+# CONFIG_NLS_CODEPAGE_950 is not set -+# CONFIG_NLS_CODEPAGE_932 is not set -+# CONFIG_NLS_CODEPAGE_949 is not set -+# CONFIG_NLS_CODEPAGE_874 is not set -+# CONFIG_NLS_ISO8859_8 is not set -+# CONFIG_NLS_CODEPAGE_1250 is not set -+# CONFIG_NLS_CODEPAGE_1251 is not set -+CONFIG_NLS_ASCII=m -+CONFIG_NLS_ISO8859_1=m -+# CONFIG_NLS_ISO8859_2 is not set -+# CONFIG_NLS_ISO8859_3 is not set -+# CONFIG_NLS_ISO8859_4 is not set -+# CONFIG_NLS_ISO8859_5 is not set -+# CONFIG_NLS_ISO8859_6 is not set -+# CONFIG_NLS_ISO8859_7 is not set -+# CONFIG_NLS_ISO8859_9 is not set -+# CONFIG_NLS_ISO8859_13 is not set -+# CONFIG_NLS_ISO8859_14 is not set -+# CONFIG_NLS_ISO8859_15 is not set -+# CONFIG_NLS_KOI8_R is not set -+# CONFIG_NLS_KOI8_U is not set -+CONFIG_NLS_UTF8=m -+ -+# -+# Profiling support -+# -+# CONFIG_PROFILING is not set -+ -+# -+# Kernel hacking -+# -+# CONFIG_PRINTK_TIME is not set -+CONFIG_MAGIC_SYSRQ=y -+CONFIG_DEBUG_KERNEL=y -+CONFIG_LOG_BUF_SHIFT=16 -+# CONFIG_DETECT_SOFTLOCKUP is not set -+# CONFIG_SCHEDSTATS is not set -+# CONFIG_DEBUG_SLAB is not set -+# CONFIG_DEBUG_MUTEXES is not set -+# CONFIG_DEBUG_SPINLOCK is not set -+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -+# CONFIG_DEBUG_KOBJECT is not set -+# CONFIG_DEBUG_INFO is not set -+# CONFIG_DEBUG_FS is not set -+# CONFIG_DEBUG_VM is not set -+# CONFIG_FRAME_POINTER is not set -+# CONFIG_FORCED_INLINING is not set -+# CONFIG_RCU_TORTURE_TEST is not set -+# CONFIG_SH_STANDARD_BIOS is not set -+CONFIG_EARLY_SCIF_CONSOLE=y -+# CONFIG_EARLY_PRINTK is not set -+# CONFIG_KGDB is not set -+ -+# -+# Security options -+# -+# CONFIG_KEYS is not set -+# CONFIG_SECURITY is not set -+ -+# -+# Cryptographic options -+# -+CONFIG_CRYPTO=y -+CONFIG_CRYPTO_HMAC=y -+CONFIG_CRYPTO_NULL=m -+CONFIG_CRYPTO_MD4=m -+CONFIG_CRYPTO_MD5=y -+CONFIG_CRYPTO_SHA1=y -+CONFIG_CRYPTO_SHA256=m -+CONFIG_CRYPTO_SHA512=m -+CONFIG_CRYPTO_WP512=m -+CONFIG_CRYPTO_TGR192=m -+CONFIG_CRYPTO_DES=y -+CONFIG_CRYPTO_BLOWFISH=m -+CONFIG_CRYPTO_TWOFISH=m -+CONFIG_CRYPTO_SERPENT=m -+CONFIG_CRYPTO_AES=y -+CONFIG_CRYPTO_CAST5=m -+CONFIG_CRYPTO_CAST6=m -+CONFIG_CRYPTO_TEA=m -+CONFIG_CRYPTO_ARC4=y -+CONFIG_CRYPTO_KHAZAD=m -+CONFIG_CRYPTO_ANUBIS=m -+CONFIG_CRYPTO_DEFLATE=y -+CONFIG_CRYPTO_MICHAEL_MIC=y -+CONFIG_CRYPTO_CRC32C=m -+# CONFIG_CRYPTO_TEST is not set -+ -+# -+# Hardware crypto devices -+# -+ -+# -+# Library routines -+# -+CONFIG_CRC_CCITT=m -+CONFIG_CRC16=m -+CONFIG_CRC32=y -+CONFIG_LIBCRC32C=m -+CONFIG_ZLIB_INFLATE=y -+CONFIG_ZLIB_DEFLATE=y -+CONFIG_TEXTSEARCH=y -+CONFIG_TEXTSEARCH_KMP=m -+CONFIG_TEXTSEARCH_BM=m -+CONFIG_TEXTSEARCH_FSM=m -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/CVS/Entries linux-2.6.17/arch/sh/drivers/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/drivers/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.2/Thu Mar 17 07:43:07 2005// -+D/dma//// -+D/pci//// -+D/superhyway//// -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/CVS/Repository linux-2.6.17/arch/sh/drivers/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/drivers/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/drivers -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/CVS/Root linux-2.6.17/arch/sh/drivers/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/drivers/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/dma/CVS/Entries linux-2.6.17/arch/sh/drivers/dma/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/drivers/dma/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/dma/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,10 @@ -+/Kconfig/1.6/Sun Feb 5 15:23:46 2006// -+/Makefile/1.5/Sun May 16 01:53:40 2004// -+/dma-api.c/1.15/Wed Jan 4 15:01:03 2006// -+/dma-isa.c/1.4/Sun Oct 16 16:37:55 2005// -+/dma-pvr2.c/1.6/Sun Feb 5 15:28:01 2006// -+/dma-sh.c/1.15/Sun Feb 5 15:25:52 2006// -+/dma-sh.h/1.5/Mon Oct 17 02:27:14 2005// -+/dma-sysfs.c/1.7/Wed Jan 4 15:01:03 2006// -+/dma-g2.c/1.6/Thu Jul 6 12:38:08 2006// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/dma/CVS/Repository linux-2.6.17/arch/sh/drivers/dma/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/drivers/dma/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/dma/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/drivers/dma -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/dma/CVS/Root linux-2.6.17/arch/sh/drivers/dma/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/drivers/dma/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/dma/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/dma/Kconfig linux-2.6.17/arch/sh/drivers/dma/Kconfig ---- linux-2.6.17-vanilla/arch/sh/drivers/dma/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/dma/Kconfig 2006-07-12 16:54:21.000000000 +0000 -@@ -11,6 +11,8 @@ - config NR_ONCHIP_DMA_CHANNELS - depends on SH_DMA - int "Number of on-chip DMAC channels" -+ default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R -+ default "12" if CPU_SUBTYPE_SH7780 - default "4" - help - This allows you to specify the number of channels that the on-chip -@@ -52,4 +54,3 @@ - are dual-address capable. - - endmenu -- -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/dma/dma-g2.c linux-2.6.17/arch/sh/drivers/dma/dma-g2.c ---- linux-2.6.17-vanilla/arch/sh/drivers/dma/dma-g2.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/dma/dma-g2.c 2006-07-12 16:54:21.000000000 +0000 -@@ -3,7 +3,7 @@ - * - * G2 bus DMA support - * -- * Copyright (C) 2003, 2004 Paul Mundt -+ * Copyright (C) 2003 - 2006 Paul Mundt - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive -@@ -13,7 +13,7 @@ - #include <linux/kernel.h> - #include <linux/module.h> - #include <linux/interrupt.h> -- -+#include <asm/cacheflush.h> - #include <asm/mach/sysasic.h> - #include <asm/mach/dma.h> - #include <asm/dma.h> -@@ -47,17 +47,31 @@ - - static volatile struct g2_dma_info *g2_dma = (volatile struct g2_dma_info *)0xa05f7800; - -+#define g2_bytes_remaining(i) \ -+ ((g2_dma->channel[i].size - \ -+ g2_dma->status[i].size) & 0x0fffffff) -+ - static irqreturn_t g2_dma_interrupt(int irq, void *dev_id, struct pt_regs *regs) - { -- /* FIXME: Do some meaningful completion work here.. */ -- return IRQ_HANDLED; --} -+ int i; - --static struct irqaction g2_dma_irq = { -- .name = "g2 DMA handler", -- .handler = g2_dma_interrupt, -- .flags = SA_INTERRUPT, --}; -+ for (i = 0; i < G2_NR_DMA_CHANNELS; i++) { -+ if (g2_dma->status[i].status & 0x20000000) { -+ unsigned int bytes = g2_bytes_remaining(i); -+ -+ if (likely(bytes == 0)) { -+ struct dma_info *info = dev_id; -+ struct dma_channel *chan = info->channels + i; -+ -+ wake_up(&chan->wait_queue); -+ -+ return IRQ_HANDLED; -+ } -+ } -+ } -+ -+ return IRQ_NONE; -+} - - static int g2_enable_dma(struct dma_channel *chan) - { -@@ -135,8 +149,14 @@ - return 0; - } - -+static int g2_get_residue(struct dma_channel *chan) -+{ -+ return g2_bytes_remaining(chan->chan); -+} -+ - static struct dma_ops g2_dma_ops = { - .xfer = g2_xfer_dma, -+ .get_residue = g2_get_residue, - }; - - static struct dma_info g2_dma_info = { -@@ -148,13 +168,22 @@ - - static int __init g2_dma_init(void) - { -- setup_irq(HW_EVENT_G2_DMA, &g2_dma_irq); -+ int ret; - -+ ret = request_irq(HW_EVENT_G2_DMA, g2_dma_interrupt, SA_INTERRUPT, -+ "g2 DMA handler", &g2_dma_info); -+ if (unlikely(ret)) -+ return -EINVAL; -+ - /* Magic */ - g2_dma->wait_state = 27; - g2_dma->magic = 0x4659404f; - -- return register_dmac(&g2_dma_info); -+ ret = register_dmac(&g2_dma_info); -+ if (unlikely(ret != 0)) -+ free_irq(HW_EVENT_G2_DMA, 0); -+ -+ return ret; - } - - static void __exit g2_dma_exit(void) -@@ -169,4 +198,3 @@ - MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>"); - MODULE_DESCRIPTION("G2 bus DMA driver"); - MODULE_LICENSE("GPL"); -- -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/dma/dma-pvr2.c linux-2.6.17/arch/sh/drivers/dma/dma-pvr2.c ---- linux-2.6.17-vanilla/arch/sh/drivers/dma/dma-pvr2.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/dma/dma-pvr2.c 2006-07-12 16:54:21.000000000 +0000 -@@ -18,8 +18,8 @@ - #include <asm/dma.h> - #include <asm/io.h> - --static unsigned int xfer_complete = 0; --static int count = 0; -+static unsigned int xfer_complete; -+static int count; - - static irqreturn_t pvr2_dma_interrupt(int irq, void *dev_id, struct pt_regs *regs) - { -@@ -107,4 +107,3 @@ - MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>"); - MODULE_DESCRIPTION("NEC PowerVR 2 DMA driver"); - MODULE_LICENSE("GPL"); -- -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/dma/dma-sh.c linux-2.6.17/arch/sh/drivers/dma/dma-sh.c ---- linux-2.6.17-vanilla/arch/sh/drivers/dma/dma-sh.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/dma/dma-sh.c 2006-07-12 16:54:21.000000000 +0000 -@@ -11,15 +11,11 @@ - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ -- - #include <linux/config.h> - #include <linux/init.h> --#include <linux/irq.h> - #include <linux/interrupt.h> - #include <linux/module.h> - #include <asm/dreamcast/dma.h> --#include <asm/signal.h> --#include <asm/irq.h> - #include <asm/dma.h> - #include <asm/io.h> - #include "dma-sh.h" -@@ -87,6 +83,9 @@ - { - char name[32]; - -+ if (unlikely(!chan->flags & DMA_TEI_CAPABLE)) -+ return 0; -+ - snprintf(name, sizeof(name), "DMAC Transfer End (Channel %d)", - chan->chan); - -@@ -260,7 +259,7 @@ - #ifdef CONFIG_CPU_SH4 - make_ipr_irq(DMAE_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY); - i = request_irq(DMAE_IRQ, dma_err, SA_INTERRUPT, "DMAC Address Error", 0); -- if (i < 0) -+ if (unlikely(i < 0)) - return i; - #endif - -@@ -275,7 +274,7 @@ - * been set. - */ - i = dmaor_reset(); -- if (i < 0) -+ if (unlikely(i != 0)) - return i; - - return register_dmac(info); -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/CVS/Entries linux-2.6.17/arch/sh/drivers/pci/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,26 @@ -+/Kconfig/1.4/Wed Mar 2 13:02:55 2005// -+/Makefile/1.9/Wed Feb 8 21:55:09 2006// -+/dma-dreamcast.c/1.4/Tue Jan 3 22:35:51 2006// -+/fixups-dreamcast.c/1.6/Tue Feb 7 20:12:06 2006// -+/fixups-r7780rp.c/1.5/Wed Feb 8 12:17:46 2006/-ko/ -+/fixups-rts7751r2d.c/1.4/Thu Feb 23 11:10:52 2006/-ko/ -+/fixups-sh03.c/1.3/Sun Feb 5 18:34:56 2006/-ko/ -+/ops-bigsur.c/1.3/Sun Feb 5 21:55:29 2006// -+/ops-dreamcast.c/1.1/Sun Aug 24 19:15:45 2003// -+/ops-landisk.c/1.1/Wed Feb 8 21:55:09 2006/-ko/ -+/ops-r7780rp.c/1.3/Sun Feb 5 21:55:29 2006/-ko/ -+/ops-rts7751r2d.c/1.4/Sun Feb 5 21:55:29 2006/-ko/ -+/ops-sh03.c/1.1/Thu Oct 7 11:01:14 2004/-ko/ -+/ops-sh4.c/1.1/Sun Feb 5 21:55:29 2006/-ko/ -+/ops-snapgear.c/1.4/Sun Feb 5 21:55:29 2006// -+/ops-titan.c/1.5/Wed Feb 8 13:32:20 2006/-ko/ -+/pci-auto.c/1.6/Sun Feb 5 18:31:46 2006// -+/pci-sh4.h/1.1/Sun Feb 5 21:55:29 2006/-ko/ -+/pci-sh7751.c/1.17/Thu Feb 23 11:10:52 2006// -+/pci-sh7751.h/1.5/Sun Feb 5 21:55:29 2006/-ko/ -+/pci-sh7780.c/1.5/Tue Feb 7 15:28:03 2006/-ko/ -+/pci-sh7780.h/1.4/Wed Feb 8 12:09:30 2006/-ko/ -+/pci-st40.c/1.7/Sun Feb 5 18:45:40 2006// -+/pci-st40.h/1.3/Thu Aug 19 16:10:14 2004// -+/pci.c/1.10/Wed Feb 8 12:21:32 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/CVS/Repository linux-2.6.17/arch/sh/drivers/pci/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/drivers/pci -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/CVS/Root linux-2.6.17/arch/sh/drivers/pci/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/Makefile linux-2.6.17/arch/sh/drivers/pci/Makefile ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/Makefile 2006-07-12 16:54:21.000000000 +0000 -@@ -6,7 +6,8 @@ - obj-$(CONFIG_PCI_AUTO) += pci-auto.o - - obj-$(CONFIG_CPU_SUBTYPE_ST40STB1) += pci-st40.o --obj-$(CONFIG_CPU_SUBTYPE_SH7751) += pci-sh7751.o -+obj-$(CONFIG_CPU_SUBTYPE_SH7751) += pci-sh7751.o ops-sh4.o -+obj-$(CONFIG_CPU_SUBTYPE_SH7780) += pci-sh7780.o ops-sh4.o - - obj-$(CONFIG_SH_DREAMCAST) += ops-dreamcast.o fixups-dreamcast.o \ - dma-dreamcast.o -@@ -14,3 +15,6 @@ - obj-$(CONFIG_SH_BIGSUR) += ops-bigsur.o - obj-$(CONFIG_SH_RTS7751R2D) += ops-rts7751r2d.o fixups-rts7751r2d.o - obj-$(CONFIG_SH_SH03) += ops-sh03.o fixups-sh03.o -+obj-$(CONFIG_SH_R7780RP) += ops-r7780rp.o fixups-r7780rp.o -+obj-$(CONFIG_SH_TITAN) += ops-titan.o -+obj-$(CONFIG_SH_LANDISK) += ops-landisk.o -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/fixups-dreamcast.c linux-2.6.17/arch/sh/drivers/pci/fixups-dreamcast.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/fixups-dreamcast.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/fixups-dreamcast.c 2006-07-12 16:54:21.000000000 +0000 -@@ -4,7 +4,7 @@ - * PCI fixups for the Sega Dreamcast - * - * Copyright (C) 2001, 2002 M. R. Brown -- * Copyright (C) 2002, 2003 Paul Mundt -+ * Copyright (C) 2002, 2003, 2006 Paul Mundt - * - * This file originally bore the message (with enclosed-$): - * Id: pci.c,v 1.3 2003/05/04 19:29:46 lethal Exp -@@ -46,36 +46,16 @@ - printk("PCI: Failed resource fixup\n"); - } - } -- - DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, gapspci_fixup_resources); - --void __init pcibios_fixup_bus(struct pci_bus *bus) -+int __init pcibios_map_platform_irq(struct pci_dev *dev, u8 slot, u8 pin) - { -- /* -- * We don't have any sub bus to fix up, and this is a rather -- * stupid place to put general device fixups. Don't do it. -- * Use the pcibios_fixups table or suffer the consequences. -+ /* -+ * The interrupt routing semantics here are quite trivial. -+ * -+ * We basically only support one interrupt, so we only bother -+ * updating a device's interrupt line with this single shared -+ * interrupt. Keeps routing quite simple, doesn't it? - */ -+ return GAPSPCI_IRQ; - } -- --void __init pcibios_fixup_irqs(void) --{ -- struct pci_dev *dev = 0; -- -- for_each_pci_dev(dev) { -- /* -- * The interrupt routing semantics here are quite trivial. -- * -- * We basically only support one interrupt, so we only bother -- * updating a device's interrupt line with this single shared -- * interrupt. Keeps routing quite simple, doesn't it? -- */ -- printk(KERN_NOTICE "PCI: Fixing up IRQ routing for device %s\n", -- pci_name(dev)); -- -- dev->irq = GAPSPCI_IRQ; -- -- pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq); -- } --} -- -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/fixups-r7780rp.c linux-2.6.17/arch/sh/drivers/pci/fixups-r7780rp.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/fixups-r7780rp.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/fixups-r7780rp.c 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,45 @@ -+/* -+ * arch/sh/drivers/pci/fixups-r7780rp.c -+ * -+ * Highlander R7780RP-1 PCI fixups -+ * -+ * Copyright (C) 2003 Lineo uSolutions, Inc. -+ * Copyright (C) 2004 - 2006 Paul Mundt -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/pci.h> -+#include "pci-sh4.h" -+#include <asm/io.h> -+ -+int pci_fixup_pcic(void) -+{ -+ pci_write_reg(0x000043ff, SH4_PCIINTM); -+ pci_write_reg(0x0000380f, SH4_PCIAINTM); -+ -+ pci_write_reg(0xfbb00047, SH7780_PCICMD); -+ pci_write_reg(0x00000000, SH7780_PCIIBAR); -+ -+ pci_write_reg(0x00011912, SH7780_PCISVID); -+ pci_write_reg(0x08000000, SH7780_PCICSCR0); -+ pci_write_reg(0x0000001b, SH7780_PCICSAR0); -+ pci_write_reg(0xfd000000, SH7780_PCICSCR1); -+ pci_write_reg(0x0000000f, SH7780_PCICSAR1); -+ -+ pci_write_reg(0xfd000000, SH7780_PCIMBR0); -+ pci_write_reg(0x00fc0000, SH7780_PCIMBMR0); -+ -+#ifdef CONFIG_32BIT -+ pci_write_reg(0xc0000000, SH7780_PCIMBR2); -+ pci_write_reg(0x20000000 - SH7780_PCI_IO_SIZE, SH7780_PCIMBMR2); -+#endif -+ -+ /* Set IOBR for windows containing area specified in pci.h */ -+ pci_write_reg((PCIBIOS_MIN_IO & ~(SH7780_PCI_IO_SIZE - 1)), -+ SH7780_PCIIOBR); -+ pci_write_reg(((SH7780_PCI_IO_SIZE-1) & (7<<18)), SH7780_PCIIOBMR); -+ -+ return 0; -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/fixups-rts7751r2d.c linux-2.6.17/arch/sh/drivers/pci/fixups-rts7751r2d.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/fixups-rts7751r2d.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/fixups-rts7751r2d.c 2006-07-12 16:54:21.000000000 +0000 -@@ -10,8 +10,7 @@ - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ --#include "pci-sh7751.h" --#include <asm/io.h> -+#include "pci-sh4.h" - - #define PCIMCR_MRSET_OFF 0xBFFFFFFF - #define PCIMCR_RFSH_OFF 0xFFFFFFFB -@@ -22,22 +21,23 @@ - - bcr1 = inl(SH7751_BCR1); - bcr1 |= 0x40080000; /* Enable Bit 19 BREQEN, set PCIC to slave */ -- outl(bcr1, PCI_REG(SH7751_PCIBCR1)); -+ pci_write_reg(bcr1, SH4_PCIBCR1); - - /* Enable all interrupts, so we known what to fix */ -- outl(0x0000c3ff, PCI_REG(SH7751_PCIINTM)); -- outl(0x0000380f, PCI_REG(SH7751_PCIAINTM)); -+ pci_write_reg(0x0000c3ff, SH4_PCIINTM); -+ pci_write_reg(0x0000380f, SH4_PCIAINTM); - -- outl(0xfb900047, PCI_REG(SH7751_PCICONF1)); -- outl(0xab000001, PCI_REG(SH7751_PCICONF4)); -+ pci_write_reg(0xfb900047, SH7751_PCICONF1); -+ pci_write_reg(0xab000001, SH7751_PCICONF4); - - mcr = inl(SH7751_MCR); - mcr = (mcr & PCIMCR_MRSET_OFF) & PCIMCR_RFSH_OFF; -- outl(mcr, PCI_REG(SH7751_PCIMCR)); -+ pci_write_reg(mcr, SH4_PCIMCR); -+ -+ pci_write_reg(0x0c000000, SH7751_PCICONF5); -+ pci_write_reg(0xd0000000, SH7751_PCICONF6); -+ pci_write_reg(0x0c000000, SH4_PCILAR0); -+ pci_write_reg(0x00000000, SH4_PCILAR1); - -- outl(0x0c000000, PCI_REG(SH7751_PCICONF5)); -- outl(0xd0000000, PCI_REG(SH7751_PCICONF6)); -- outl(0x0c000000, PCI_REG(SH7751_PCILAR0)); -- outl(0x00000000, PCI_REG(SH7751_PCILAR1)); - return 0; - } -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/fixups-sh03.c linux-2.6.17/arch/sh/drivers/pci/fixups-sh03.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/fixups-sh03.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/fixups-sh03.c 2006-07-12 16:54:21.000000000 +0000 -@@ -3,11 +3,7 @@ - #include <linux/types.h> - #include <linux/pci.h> - --/* -- * IRQ functions -- */ -- --int __init pcibios_map_platform_irq(u8 slot, u8 pin, struct pci_dev *dev) -+int __init pcibios_map_platform_irq(struct pci_dev *dev, u8 slot, u8 pin) - { - int irq; - -@@ -17,8 +13,9 @@ - case 8: return 5; /* eth1 */ - case 6: return 2; /* PCI bridge */ - default: -- printk("PCI: Bad IRQ mapping request for slot %d\n", slot); -- return 2; -+ printk(KERN_ERR "PCI: Bad IRQ mapping request " -+ "for slot %d\n", slot); -+ return 2; - } - } else { - switch (pin) { -@@ -32,30 +29,3 @@ - } - return irq; - } -- --static u8 __init sh03_no_swizzle(struct pci_dev *dev, u8 *pin) --{ -- /* no swizzling */ -- return PCI_SLOT(dev->devfn); --} -- --static int sh03_pci_lookup_irq(struct pci_dev *dev, u8 slot, u8 pin) --{ -- int irq = -1; -- -- /* now lookup the actual IRQ on a platform specific basis (pci-'platform'.c) */ -- irq = pcibios_map_platform_irq(slot, pin, dev); -- if( irq < 0 ) { -- pr_debug("PCI: Error mapping IRQ on device %s\n", pci_name(dev)); -- return irq; -- } -- -- pr_debug("Setting IRQ for slot %s to %d\n", pci_name(dev), irq); -- -- return irq; --} -- --void __init pcibios_fixup_irqs(void) --{ -- pci_fixup_irqs(sh03_no_swizzle, sh03_pci_lookup_irq); --} -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-bigsur.c linux-2.6.17/arch/sh/drivers/pci/ops-bigsur.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-bigsur.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/ops-bigsur.c 2006-07-12 16:54:21.000000000 +0000 -@@ -10,16 +10,13 @@ - * - * PCI initialization for the Hitachi Big Sur Evaluation Board - */ -- - #include <linux/config.h> - #include <linux/kernel.h> - #include <linux/types.h> - #include <linux/init.h> --#include <linux/delay.h> - #include <linux/pci.h> -- - #include <asm/io.h> --#include "pci-sh7751.h" -+#include "pci-sh4.h" - #include <asm/bigsur/bigsur.h> - - #define BIGSUR_PCI_IO 0x4000 -@@ -42,11 +39,11 @@ - extern struct pci_ops sh7751_pci_ops; - - struct pci_channel board_pci_channels[] = { -- { &sh7751_pci_ops, &sh7751_io_resource, &sh7751_mem_resource, 0, 0xff }, -+ { &sh4_pci_ops, &sh7751_io_resource, &sh7751_mem_resource, 0, 0xff }, - { 0, } - }; - --static struct sh7751_pci_address_map sh7751_pci_map = { -+static struct sh4_pci_address_map sh7751_pci_map = { - .window0 = { - .base = SH7751_CS3_BASE_ADDR, - .size = BIGSUR_LSR0_SIZE, -@@ -59,7 +56,7 @@ - }; - - /* -- * Initialize the Big Sur PCI interface -+ * Initialize the Big Sur PCI interface - * Setup hardware to be Central Funtion - * Copy the BSR regs to the PCI interface - * Setup PCI windows into local RAM -@@ -69,15 +66,15 @@ - return sh7751_pcic_init(&sh7751_pci_map); - } - --int pcibios_map_platform_irq(u8 slot, u8 pin) -+int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) - { -- /* -+ /* - * The Big Sur can be used in a CPCI chassis, but the SH7751 PCI - * interface is on the wrong end of the board so that it can also - * support a V320 CPI interface chip... Therefor the IRQ mapping is - * somewhat use dependent... I'l assume a linear map for now, i.e. - * INTA=slot0,pin0... INTD=slot3,pin0... -- */ -+ */ - int irq = (slot + pin-1) % 4 + BIGSUR_SH7751_PCI_IRQ_BASE; - - PCIDBG(2, "PCI: Mapping Big Sur IRQ for slot %d, pin %c to irq %d\n", -@@ -85,4 +82,3 @@ - - return irq; - } -- -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-landisk.c linux-2.6.17/arch/sh/drivers/pci/ops-landisk.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-landisk.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/ops-landisk.c 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,68 @@ -+/* -+ * arch/sh/drivers/pci/ops-landisk.c -+ * -+ * PCI initialization for the I-O DATA Device, Inc. LANDISK board -+ * -+ * Copyright (C) 2006 kogiidena -+ * -+ * May be copied or modified under the terms of the GNU General Public -+ * License. See linux/COPYING for more information. -+ */ -+#include <linux/config.h> -+#include <linux/kernel.h> -+#include <linux/types.h> -+#include <linux/init.h> -+#include <linux/delay.h> -+#include <linux/pci.h> -+#include "pci-sh4.h" -+ -+static struct resource sh7751_io_resource = { -+ .name = "SH7751 IO", -+ .start = 0x4000, -+ .end = 0x4000 + SH7751_PCI_IO_SIZE - 1, -+ .flags = IORESOURCE_IO -+}; -+ -+static struct resource sh7751_mem_resource = { -+ .name = "SH7751 mem", -+ .start = SH7751_PCI_MEMORY_BASE, -+ .end = SH7751_PCI_MEMORY_BASE + SH7751_PCI_MEM_SIZE - 1, -+ .flags = IORESOURCE_MEM -+}; -+ -+struct pci_channel board_pci_channels[] = { -+ {&sh4_pci_ops, &sh7751_io_resource, &sh7751_mem_resource, 0, 0x3ff}, -+ {NULL, NULL, NULL, 0, 0}, -+}; -+ -+static struct sh4_pci_address_map sh7751_pci_map = { -+ .window0 = { -+ .base = SH7751_CS3_BASE_ADDR, -+ .size = (64 << 20), /* 64MB */ -+ }, -+ -+ .flags = SH4_PCIC_NO_RESET, -+}; -+ -+int __init pcibios_init_platform(void) -+{ -+ return sh7751_pcic_init(&sh7751_pci_map); -+} -+ -+int pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) -+{ -+ /* -+ * slot0: pin1-4 = irq5,6,7,8 -+ * slot1: pin1-4 = irq6,7,8,5 -+ * slot2: pin1-4 = irq7,8,5,6 -+ * slot3: pin1-4 = irq8,5,6,7 -+ */ -+ int irq = ((slot + pin - 1) & 0x3) + 5; -+ -+ if ((slot | (pin - 1)) > 0x3) { -+ printk("PCI: Bad IRQ mapping request for slot %d pin %c\n", -+ slot, pin - 1 + 'A'); -+ return -1; -+ } -+ return irq; -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-r7780rp.c linux-2.6.17/arch/sh/drivers/pci/ops-r7780rp.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-r7780rp.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/ops-r7780rp.c 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,75 @@ -+/* -+ * Author: Ian DaSilva (idasilva@mvista.com) -+ * -+ * Highly leveraged from pci-bigsur.c, written by Dustin McIntire. -+ * -+ * May be copied or modified under the terms of the GNU General Public -+ * License. See linux/COPYING for more information. -+ * -+ * PCI initialization for the Renesas SH7780 Highlander R7780RP-1 board -+ */ -+ -+#include <linux/config.h> -+#include <linux/kernel.h> -+#include <linux/types.h> -+#include <linux/init.h> -+#include <linux/delay.h> -+#include <linux/pci.h> -+#include <asm/r7780rp/r7780rp.h> -+#include <asm/io.h> -+#include "pci-sh4.h" -+ -+int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) -+{ -+ switch (slot) { -+ case 0: return IRQ_PCISLOT1; /* PCI Interrupt #1 */ -+ case 1: return IRQ_PCISLOT2; /* PCI Interrupt #2 */ -+ case 2: return IRQ_PCISLOT3; /* PCI Interrupt #3 */ -+ case 3: return IRQ_PCISLOT4; /* PCI Interrupt E4 */ -+ default: -+ printk(KERN_ERR "PCI: Bad IRQ mapping " -+ "request for slot %d, func %d\n", slot, pin-1); -+ return -1; -+ } -+} -+ -+static struct resource sh7780_io_resource = { -+ .name = "SH7780_IO", -+ .start = 0x2000, -+ .end = 0x2000 + SH7780_PCI_IO_SIZE - 1, -+ .flags = IORESOURCE_IO -+}; -+ -+static struct resource sh7780_mem_resource = { -+ .name = "SH7780_mem", -+ .start = SH7780_PCI_MEMORY_BASE, -+ .end = SH7780_PCI_MEMORY_BASE + SH7780_PCI_MEM_SIZE - 1, -+ .flags = IORESOURCE_MEM -+}; -+ -+extern struct pci_ops sh7780_pci_ops; -+ -+struct pci_channel board_pci_channels[] = { -+ { &sh4_pci_ops, &sh7780_io_resource, &sh7780_mem_resource, 0, 0xff }, -+ { NULL, NULL, NULL, 0, 0 }, -+}; -+EXPORT_SYMBOL(board_pci_channels); -+ -+static struct sh4_pci_address_map sh7780_pci_map = { -+ .window0 = { -+ .base = SH7780_CS2_BASE_ADDR, -+ .size = 0x04000000, -+ }, -+ -+ .window1 = { -+ .base = SH7780_CS3_BASE_ADDR, -+ .size = 0x04000000, -+ }, -+ -+ .flags = SH4_PCIC_NO_RESET, -+}; -+ -+int __init pcibios_init_platform(void) -+{ -+ return sh7780_pcic_init(&sh7780_pci_map); -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-rts7751r2d.c linux-2.6.17/arch/sh/drivers/pci/ops-rts7751r2d.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-rts7751r2d.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/ops-rts7751r2d.c 2006-07-12 16:54:21.000000000 +0000 -@@ -18,12 +18,11 @@ - #include <linux/delay.h> - #include <linux/pci.h> - #include <linux/module.h> -- --#include <asm/io.h> --#include "pci-sh7751.h" - #include <asm/rts7751r2d/rts7751r2d.h> -+#include <asm/io.h> -+#include "pci-sh4.h" - --int __init pcibios_map_platform_irq(u8 slot, u8 pin) -+int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) - { - switch (slot) { - case 0: return IRQ_PCISLOT1; /* PCI Extend slot #1 */ -@@ -53,12 +52,12 @@ - extern struct pci_ops sh7751_pci_ops; - - struct pci_channel board_pci_channels[] = { -- { &sh7751_pci_ops, &sh7751_io_resource, &sh7751_mem_resource, 0, 0xff }, -+ { &sh4_pci_ops, &sh7751_io_resource, &sh7751_mem_resource, 0, 0xff }, - { NULL, NULL, NULL, 0, 0 }, - }; - EXPORT_SYMBOL(board_pci_channels); - --static struct sh7751_pci_address_map sh7751_pci_map = { -+static struct sh4_pci_address_map sh7751_pci_map = { - .window0 = { - .base = SH7751_CS3_BASE_ADDR, - .size = 0x04000000, -@@ -69,7 +68,7 @@ - .size = 0x00000000, /* Unused */ - }, - -- .flags = SH7751_PCIC_NO_RESET, -+ .flags = SH4_PCIC_NO_RESET, - }; - - int __init pcibios_init_platform(void) -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-sh4.c linux-2.6.17/arch/sh/drivers/pci/ops-sh4.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-sh4.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/ops-sh4.c 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,164 @@ -+/* -+ * Generic SH-4 / SH-4A PCIC operations (SH7751, SH7780). -+ * -+ * Copyright (C) 2002 - 2006 Paul Mundt -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License v2. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/pci.h> -+#include <asm/addrspace.h> -+#include <asm/io.h> -+#include "pci-sh4.h" -+ -+/* -+ * Direct access to PCI hardware... -+ */ -+#define CONFIG_CMD(bus, devfn, where) \ -+ P1SEGADDR((bus->number << 16) | (devfn << 8) | (where & ~3)) -+ -+static DEFINE_SPINLOCK(sh4_pci_lock); -+ -+/* -+ * Functions for accessing PCI configuration space with type 1 accesses -+ */ -+static int sh4_pci_read(struct pci_bus *bus, unsigned int devfn, -+ int where, int size, u32 *val) -+{ -+ unsigned long flags; -+ u32 data; -+ -+ /* -+ * PCIPDR may only be accessed as 32 bit words, -+ * so we must do byte alignment by hand -+ */ -+ spin_lock_irqsave(&sh4_pci_lock, flags); -+ pci_write_reg(CONFIG_CMD(bus, devfn, where), SH4_PCIPAR); -+ data = pci_read_reg(SH4_PCIPDR); -+ spin_unlock_irqrestore(&sh4_pci_lock, flags); -+ -+ switch (size) { -+ case 1: -+ *val = (data >> ((where & 3) << 3)) & 0xff; -+ break; -+ case 2: -+ *val = (data >> ((where & 2) << 3)) & 0xffff; -+ break; -+ case 4: -+ *val = data; -+ break; -+ default: -+ return PCIBIOS_FUNC_NOT_SUPPORTED; -+ } -+ -+ return PCIBIOS_SUCCESSFUL; -+} -+ -+/* -+ * Since SH4 only does 32bit access we'll have to do a read, -+ * mask,write operation. -+ * We'll allow an odd byte offset, though it should be illegal. -+ */ -+static int sh4_pci_write(struct pci_bus *bus, unsigned int devfn, -+ int where, int size, u32 val) -+{ -+ unsigned long flags; -+ int shift; -+ u32 data; -+ -+ spin_lock_irqsave(&sh4_pci_lock, flags); -+ pci_write_reg(CONFIG_CMD(bus, devfn, where), SH4_PCIPAR); -+ data = pci_read_reg(SH4_PCIPDR); -+ spin_unlock_irqrestore(&sh4_pci_lock, flags); -+ -+ switch (size) { -+ case 1: -+ shift = (where & 3) << 3; -+ data &= ~(0xff << shift); -+ data |= ((val & 0xff) << shift); -+ break; -+ case 2: -+ shift = (where & 2) << 3; -+ data &= ~(0xffff << shift); -+ data |= ((val & 0xffff) << shift); -+ break; -+ case 4: -+ data = val; -+ break; -+ default: -+ return PCIBIOS_FUNC_NOT_SUPPORTED; -+ } -+ -+ pci_write_reg(data, SH4_PCIPDR); -+ -+ return PCIBIOS_SUCCESSFUL; -+} -+ -+struct pci_ops sh4_pci_ops = { -+ .read = sh4_pci_read, -+ .write = sh4_pci_write, -+}; -+ -+/* -+ * Not really related to pci_ops, but it's common and not worth shoving -+ * somewhere else for now.. -+ */ -+static unsigned int pci_probe = PCI_PROBE_CONF1; -+ -+int __init sh4_pci_check_direct(void) -+{ -+ /* -+ * Check if configuration works. -+ */ -+ if (pci_probe & PCI_PROBE_CONF1) { -+ unsigned int tmp = pci_read_reg(SH4_PCIPAR); -+ -+ pci_write_reg(P1SEG, SH4_PCIPAR); -+ -+ if (pci_read_reg(SH4_PCIPAR) == P1SEG) { -+ pci_write_reg(tmp, SH4_PCIPAR); -+ printk(KERN_INFO "PCI: Using configuration type 1\n"); -+ request_region(PCI_REG(SH4_PCIPAR), 8, "PCI conf1"); -+ -+ return 0; -+ } -+ -+ pci_write_reg(tmp, SH4_PCIPAR); -+ } -+ -+ pr_debug("PCI: pci_check_direct failed\n"); -+ return -EINVAL; -+} -+ -+/* Handle generic fixups */ -+static void __init pci_fixup_ide_bases(struct pci_dev *d) -+{ -+ int i; -+ -+ /* -+ * PCI IDE controllers use non-standard I/O port decoding, respect it. -+ */ -+ if ((d->class >> 8) != PCI_CLASS_STORAGE_IDE) -+ return; -+ pr_debug("PCI: IDE base address fixup for %s\n", pci_name(d)); -+ for(i = 0; i < 4; i++) { -+ struct resource *r = &d->resource[i]; -+ -+ if ((r->start & ~0x80) == 0x374) { -+ r->start |= 2; -+ r->end = r->start; -+ } -+ } -+} -+DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases); -+ -+char * __init pcibios_setup(char *str) -+{ -+ if (!strcmp(str, "off")) { -+ pci_probe = 0; -+ return NULL; -+ } -+ -+ return str; -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-snapgear.c linux-2.6.17/arch/sh/drivers/pci/ops-snapgear.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-snapgear.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/ops-snapgear.c 2006-07-12 16:54:21.000000000 +0000 -@@ -2,7 +2,7 @@ - * arch/sh/drivers/pci/ops-snapgear.c - * - * Author: David McCullough <davidm@snapgear.com> -- * -+ * - * Ported to new API by Paul Mundt <lethal@linux-sh.org> - * - * Highly leveraged from pci-bigsur.c, written by Dustin McIntire. -@@ -12,16 +12,12 @@ - * - * PCI initialization for the SnapGear boards - */ -- - #include <linux/config.h> - #include <linux/kernel.h> - #include <linux/types.h> - #include <linux/init.h> --#include <linux/delay.h> - #include <linux/pci.h> -- --#include <asm/io.h> --#include "pci-sh7751.h" -+#include "pci-sh4.h" - - #define SNAPGEAR_PCI_IO 0x4000 - #define SNAPGEAR_PCI_MEM 0xfd000000 -@@ -44,14 +40,12 @@ - .flags = IORESOURCE_MEM, - }; - --extern struct pci_ops sh7751_pci_ops; -- - struct pci_channel board_pci_channels[] = { -- { &sh7751_pci_ops, &sh7751_io_resource, &sh7751_mem_resource, 0, 0xff }, -+ { &sh4_pci_ops, &sh7751_io_resource, &sh7751_mem_resource, 0, 0xff }, - { 0, } - }; - --static struct sh7751_pci_address_map sh7751_pci_map = { -+static struct sh4_pci_address_map sh7751_pci_map = { - .window0 = { - .base = SH7751_CS2_BASE_ADDR, - .size = SNAPGEAR_LSR0_SIZE, -@@ -62,11 +56,11 @@ - .size = SNAPGEAR_LSR1_SIZE, - }, - -- .flags = SH7751_PCIC_NO_RESET, -+ .flags = SH4_PCIC_NO_RESET, - }; - - /* -- * Initialize the SnapGear PCI interface -+ * Initialize the SnapGear PCI interface - * Setup hardware to be Central Funtion - * Copy the BSR regs to the PCI interface - * Setup PCI windows into local RAM -@@ -76,7 +70,7 @@ - return sh7751_pcic_init(&sh7751_pci_map); - } - --int __init pcibios_map_platform_irq(u8 slot, u8 pin) -+int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) - { - int irq = -1; - -@@ -99,4 +93,3 @@ - { - /* Nothing to fixup .. */ - } -- -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-titan.c linux-2.6.17/arch/sh/drivers/pci/ops-titan.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/ops-titan.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/ops-titan.c 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,83 @@ -+/* -+ * arch/sh/drivers/pci/ops-titan.c -+ * -+ * Ported to new API by Paul Mundt <lethal@linux-sh.org> -+ * -+ * Modified from ops-snapgear.c written by David McCullough -+ * Highly leveraged from pci-bigsur.c, written by Dustin McIntire. -+ * -+ * May be copied or modified under the terms of the GNU General Public -+ * License. See linux/COPYING for more information. -+ * -+ * PCI initialization for the Titan boards -+ */ -+ -+#include <linux/config.h> -+#include <linux/kernel.h> -+#include <linux/types.h> -+#include <linux/init.h> -+#include <linux/pci.h> -+#include <asm/io.h> -+#include <asm/titan.h> -+#include "pci-sh4.h" -+ -+int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) -+{ -+ int irq = -1; -+ -+ switch (slot) { -+ case 0: irq = TITAN_IRQ_WAN; break; /* eth0 (WAN) */ -+ case 1: irq = TITAN_IRQ_LAN; break; /* eth1 (LAN) */ -+ case 2: irq = TITAN_IRQ_MPCIA; break; /* mPCI A */ -+ case 3: irq = TITAN_IRQ_MPCIB; break; /* mPCI B */ -+ case 4: irq = TITAN_IRQ_USB; break; /* USB */ -+ default: -+ printk(KERN_INFO "PCI: Bad IRQ mapping " -+ "request for slot %d\n", slot); -+ return -1; -+ } -+ -+ printk("PCI: Mapping TITAN IRQ for slot %d, pin %c to irq %d\n", -+ slot, pin - 1 + 'A', irq); -+ -+ return irq; -+} -+ -+static struct resource sh7751_io_resource = { -+ .name = "SH7751_IO", -+ .start = SH7751_PCI_IO_BASE, -+ .end = SH7751_PCI_IO_BASE + SH7751_PCI_IO_SIZE - 1, -+ .flags = IORESOURCE_IO -+}; -+ -+static struct resource sh7751_mem_resource = { -+ .name = "SH7751_mem", -+ .start = SH7751_PCI_MEMORY_BASE, -+ .end = SH7751_PCI_MEMORY_BASE + SH7751_PCI_MEM_SIZE - 1, -+ .flags = IORESOURCE_MEM -+}; -+ -+struct pci_channel board_pci_channels[] = { -+ { &sh4_pci_ops, &sh7751_io_resource, &sh7751_mem_resource, 0, 0xff }, -+ { NULL, NULL, NULL, 0, 0 }, -+}; -+EXPORT_SYMBOL(board_pci_channels); -+ -+static struct sh4_pci_address_map sh7751_pci_map = { -+ .window0 = { -+ .base = SH7751_CS2_BASE_ADDR, -+ .size = SH7751_MEM_REGION_SIZE*2, /* cs2 and cs3 */ -+ }, -+ -+ .window1 = { -+ .base = SH7751_CS2_BASE_ADDR, -+ .size = SH7751_MEM_REGION_SIZE*2, -+ }, -+ -+ .flags = SH4_PCIC_NO_RESET, -+}; -+ -+int __init pcibios_init_platform(void) -+{ -+ return sh7751_pcic_init(&sh7751_pci_map); -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-auto.c linux-2.6.17/arch/sh/drivers/pci/pci-auto.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-auto.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/pci-auto.c 2006-07-12 16:54:21.000000000 +0000 -@@ -45,11 +45,11 @@ - #include <linux/types.h> - #include <linux/pci.h> - --#undef DEBUG --#ifdef DEBUG -+#define DEBUG -+#ifdef DEBUG - #define DBG(x...) printk(x) - #else --#define DBG(x...) -+#define DBG(x...) - #endif - - /* -@@ -102,7 +102,7 @@ - static u32 pciauto_lower_memspc; - static u32 pciauto_upper_memspc; - --static void __init -+static void __init - pciauto_setup_bars(struct pci_channel *hose, - int top_bus, - int current_bus, -@@ -116,7 +116,6 @@ - int found_mem64 = 0; - - for (bar = PCI_BASE_ADDRESS_0; bar <= bar_limit; bar+=4) { --#if !defined(CONFIG_SH_HS7751RVOIP) && !defined(CONFIG_SH_RTS7751R2D) - u32 bar_addr; - - /* Read the old BAR value */ -@@ -125,7 +124,6 @@ - pci_devfn, - bar, - &bar_addr); --#endif - - /* Tickle the BAR and get the response */ - early_write_config_dword(hose, top_bus, -@@ -140,8 +138,7 @@ - bar, - &bar_response); - --#if !defined(CONFIG_SH_HS7751RVOIP) && !defined(CONFIG_SH_RTS7751R2D) -- /* -+ /* - * Write the old BAR value back out, only update the BAR - * if we implicitly want resources to be updated, which - * is done by the generic code further down. -- PFM. -@@ -151,7 +148,6 @@ - pci_devfn, - bar, - bar_addr); --#endif - - /* If BAR is not implemented go to the next BAR */ - if (!bar_response) -@@ -177,7 +173,7 @@ - PCI_BASE_ADDRESS_MEM_TYPE_64) - found_mem64 = 1; - -- addr_mask = PCI_BASE_ADDRESS_MEM_MASK; -+ addr_mask = PCI_BASE_ADDRESS_MEM_MASK; - upper_limit = &pciauto_upper_memspc; - lower_limit = &pciauto_lower_memspc; - DBG(" Mem"); -@@ -193,22 +189,22 @@ - if ((bar_value + bar_size) > *upper_limit) { - if (bar_response & PCI_BASE_ADDRESS_SPACE) { - if (io_resource_inuse->child) { -- io_resource_inuse = -+ io_resource_inuse = - io_resource_inuse->child; -- pciauto_lower_iospc = -+ pciauto_lower_iospc = - io_resource_inuse->start; -- pciauto_upper_iospc = -+ pciauto_upper_iospc = - io_resource_inuse->end + 1; - goto retry; - } - - } else { - if (mem_resource_inuse->child) { -- mem_resource_inuse = -+ mem_resource_inuse = - mem_resource_inuse->child; -- pciauto_lower_memspc = -+ pciauto_lower_memspc = - mem_resource_inuse->start; -- pciauto_upper_memspc = -+ pciauto_upper_memspc = - mem_resource_inuse->end + 1; - goto retry; - } -@@ -230,7 +226,7 @@ - * If we are a 64-bit decoder then increment to the - * upper 32 bits of the bar and force it to locate - * in the lower 4GB of memory. -- */ -+ */ - if (found_mem64) { - bar += 4; - early_write_config_dword(hose, top_bus, -@@ -362,7 +358,6 @@ - { - u32 temp; - --#if !defined(CONFIG_SH_HS7751RVOIP) && !defined(CONFIG_SH_RTS7751R2D) - /* - * [jsun] we always bump up baselines a little, so that if there - * nothing behind P2P bridge, we don't wind up overlapping IO/MEM -@@ -370,7 +365,6 @@ - */ - pciauto_lower_memspc += 1; - pciauto_lower_iospc += 1; --#endif - - /* - * Configure subordinate bus number. The PCI subsystem -@@ -396,11 +390,6 @@ - * configured by this routine to happily live behind a - * P2P bridge in a system. - */ --#if defined(CONFIG_SH_HS7751RVOIP) || defined(CONFIG_SH_RTS7751R2D) -- pciauto_lower_memspc += 0x00400000; -- pciauto_lower_iospc += 0x00004000; --#endif -- - /* Align memory and I/O to 4KB and 4 byte boundaries. */ - pciauto_lower_memspc = (pciauto_lower_memspc + (0x1000 - 1)) - & ~(0x1000 - 1); -@@ -433,12 +422,12 @@ - int devfn_stop = 0xff; - - sub_bus = current_bus; -- -+ - if (hose->first_devfn) - devfn_start = hose->first_devfn; - if (hose->last_devfn) - devfn_stop = hose->last_devfn; -- -+ - for (pci_devfn=devfn_start; pci_devfn<devfn_stop; pci_devfn++) { - - if (PCI_FUNC(pci_devfn) && !found_multi) -@@ -471,9 +460,6 @@ - if ((pci_class >> 16) == PCI_CLASS_BRIDGE_PCI) { - DBG(" Bridge: primary=%.2x, secondary=%.2x\n", - current_bus, sub_bus + 1); --#if defined(CONFIG_SH_HS7751RVOIP) || defined(CONFIG_SH_RTS7751R2D) -- pciauto_setup_bars(hose, top_bus, current_bus, pci_devfn, PCI_BASE_ADDRESS_1); --#endif - pciauto_prescan_setup_bridge(hose, top_bus, current_bus, - pci_devfn, sub_bus); - DBG("Scanning sub bus %.2x, I/O 0x%.8x, Mem 0x%.8x\n", -@@ -490,10 +476,10 @@ - DBG("PCI Autoconfig: Found CardBus bridge, device %d function %d\n", PCI_SLOT(pci_devfn), PCI_FUNC(pci_devfn)); - /* Place CardBus Socket/ExCA registers */ - pciauto_setup_bars(hose, top_bus, current_bus, pci_devfn, PCI_BASE_ADDRESS_0); -- -+ - pciauto_prescan_setup_cardbus_bridge(hose, top_bus, - current_bus, pci_devfn, sub_bus); -- -+ - DBG("Scanning sub bus %.2x, I/O 0x%.8x, Mem 0x%.8x\n", - sub_bus + 1, - pciauto_lower_iospc, pciauto_lower_memspc); -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-sh4.h linux-2.6.17/arch/sh/drivers/pci/pci-sh4.h ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-sh4.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/pci-sh4.h 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,180 @@ -+#ifndef __PCI_SH4_H -+#define __PCI_SH4_H -+ -+#ifdef CONFIG_CPU_SUBTYPE_SH7780 -+#include "pci-sh7780.h" -+#else -+#include "pci-sh7751.h" -+#endif -+ -+#include <asm/io.h> -+ -+/* startup values */ -+#define PCI_PROBE_BIOS 1 -+#define PCI_PROBE_CONF1 2 -+#define PCI_PROBE_CONF2 4 -+#define PCI_NO_SORT 0x100 -+#define PCI_BIOS_SORT 0x200 -+#define PCI_NO_CHECKS 0x400 -+#define PCI_ASSIGN_ROMS 0x1000 -+#define PCI_BIOS_IRQ_SCAN 0x2000 -+ -+#define SH4_PCICR 0x100 /* PCI Control Register */ -+ #define SH4_PCICR_PREFIX 0xA5000000 /* CR prefix for write */ -+ #define SH4_PCICR_FTO 0x00000400 /* TRDY/IRDY Enable */ -+ #define SH4_PCICR_TRSB 0x00000200 /* Target Read Single */ -+ #define SH4_PCICR_BSWP 0x00000100 /* Target Byte Swap */ -+ #define SH4_PCICR_PLUP 0x00000080 /* Enable PCI Pullup */ -+ #define SH4_PCICR_ARBM 0x00000040 /* PCI Arbitration Mode */ -+ #define SH4_PCICR_MD 0x00000030 /* MD9 and MD10 status */ -+ #define SH4_PCICR_SERR 0x00000008 /* SERR output assert */ -+ #define SH4_PCICR_INTA 0x00000004 /* INTA output assert */ -+ #define SH4_PCICR_PRST 0x00000002 /* PCI Reset Assert */ -+ #define SH4_PCICR_CFIN 0x00000001 /* Central Fun. Init Done */ -+#define SH4_PCILSR0 0x104 /* PCI Local Space Register0 */ -+#define SH4_PCILSR1 0x108 /* PCI Local Space Register1 */ -+#define SH4_PCILAR0 0x10C /* PCI Local Addr Register1 */ -+#define SH4_PCILAR1 0x110 /* PCI Local Addr Register1 */ -+#define SH4_PCIINT 0x114 /* PCI Interrupt Register */ -+ #define SH4_PCIINT_MLCK 0x00008000 /* Master Lock Error */ -+ #define SH4_PCIINT_TABT 0x00004000 /* Target Abort Error */ -+ #define SH4_PCIINT_TRET 0x00000200 /* Target Retry Error */ -+ #define SH4_PCIINT_MFDE 0x00000100 /* Master Func. Disable Error */ -+ #define SH4_PCIINT_PRTY 0x00000080 /* Address Parity Error */ -+ #define SH4_PCIINT_SERR 0x00000040 /* SERR Detection Error */ -+ #define SH4_PCIINT_TWDP 0x00000020 /* Tgt. Write Parity Error */ -+ #define SH4_PCIINT_TRDP 0x00000010 /* Tgt. Read Parity Err Det. */ -+ #define SH4_PCIINT_MTABT 0x00000008 /* Master-Tgt. Abort Error */ -+ #define SH4_PCIINT_MMABT 0x00000004 /* Master-Master Abort Error */ -+ #define SH4_PCIINT_MWPD 0x00000002 /* Master Write PERR Detect */ -+ #define SH4_PCIINT_MRPD 0x00000001 /* Master Read PERR Detect */ -+#define SH4_PCIINTM 0x118 /* PCI Interrupt Mask */ -+#define SH4_PCIALR 0x11C /* Error Address Register */ -+#define SH4_PCICLR 0x120 /* Error Command/Data */ -+ #define SH4_PCICLR_MPIO 0x80000000 -+ #define SH4_PCICLR_MDMA0 0x40000000 /* DMA0 Transfer Error */ -+ #define SH4_PCICLR_MDMA1 0x20000000 /* DMA1 Transfer Error */ -+ #define SH4_PCICLR_MDMA2 0x10000000 /* DMA2 Transfer Error */ -+ #define SH4_PCICLR_MDMA3 0x08000000 /* DMA3 Transfer Error */ -+ #define SH4_PCICLR_TGT 0x04000000 /* Target Transfer Error */ -+ #define SH4_PCICLR_CMDL 0x0000000F /* PCI Command at Error */ -+#define SH4_PCIAINT 0x130 /* Arbiter Interrupt Register */ -+ #define SH4_PCIAINT_MBKN 0x00002000 /* Master Broken Interrupt */ -+ #define SH4_PCIAINT_TBTO 0x00001000 /* Target Bus Time Out */ -+ #define SH4_PCIAINT_MBTO 0x00001000 /* Master Bus Time Out */ -+ #define SH4_PCIAINT_TABT 0x00000008 /* Target Abort */ -+ #define SH4_PCIAINT_MABT 0x00000004 /* Master Abort */ -+ #define SH4_PCIAINT_RDPE 0x00000002 /* Read Data Parity Error */ -+ #define SH4_PCIAINT_WDPE 0x00000001 /* Write Data Parity Error */ -+#define SH4_PCIAINTM 0x134 /* Arbiter Int. Mask Register */ -+#define SH4_PCIBMLR 0x138 /* Error Bus Master Register */ -+ #define SH4_PCIBMLR_REQ4 0x00000010 /* REQ4 bus master at error */ -+ #define SH4_PCIBMLR_REQ3 0x00000008 /* REQ3 bus master at error */ -+ #define SH4_PCIBMLR_REQ2 0x00000004 /* REQ2 bus master at error */ -+ #define SH4_PCIBMLR_REQ1 0x00000002 /* REQ1 bus master at error */ -+ #define SH4_PCIBMLR_REQ0 0x00000001 /* REQ0 bus master at error */ -+#define SH4_PCIDMABT 0x140 /* DMA Transfer Arb. Register */ -+ #define SH4_PCIDMABT_RRBN 0x00000001 /* DMA Arbitor Round-Robin */ -+#define SH4_PCIDPA0 0x180 /* DMA0 Transfer Addr. */ -+#define SH4_PCIDLA0 0x184 /* DMA0 Local Addr. */ -+#define SH4_PCIDTC0 0x188 /* DMA0 Transfer Cnt. */ -+#define SH4_PCIDCR0 0x18C /* DMA0 Control Register */ -+ #define SH4_PCIDCR_ALGN 0x00000600 /* DMA Alignment Mode */ -+ #define SH4_PCIDCR_MAST 0x00000100 /* DMA Termination Type */ -+ #define SH4_PCIDCR_INTM 0x00000080 /* DMA Interrupt Done Mask*/ -+ #define SH4_PCIDCR_INTS 0x00000040 /* DMA Interrupt Done Status */ -+ #define SH4_PCIDCR_LHLD 0x00000020 /* Local Address Control */ -+ #define SH4_PCIDCR_PHLD 0x00000010 /* PCI Address Control*/ -+ #define SH4_PCIDCR_IOSEL 0x00000008 /* PCI Address Space Type */ -+ #define SH4_PCIDCR_DIR 0x00000004 /* DMA Transfer Direction */ -+ #define SH4_PCIDCR_STOP 0x00000002 /* Force DMA Stop */ -+ #define SH4_PCIDCR_STRT 0x00000001 /* DMA Start */ -+#define SH4_PCIDPA1 0x190 /* DMA1 Transfer Addr. */ -+#define SH4_PCIDLA1 0x194 /* DMA1 Local Addr. */ -+#define SH4_PCIDTC1 0x198 /* DMA1 Transfer Cnt. */ -+#define SH4_PCIDCR1 0x19C /* DMA1 Control Register */ -+#define SH4_PCIDPA2 0x1A0 /* DMA2 Transfer Addr. */ -+#define SH4_PCIDLA2 0x1A4 /* DMA2 Local Addr. */ -+#define SH4_PCIDTC2 0x1A8 /* DMA2 Transfer Cnt. */ -+#define SH4_PCIDCR2 0x1AC /* DMA2 Control Register */ -+#define SH4_PCIDPA3 0x1B0 /* DMA3 Transfer Addr. */ -+#define SH4_PCIDLA3 0x1B4 /* DMA3 Local Addr. */ -+#define SH4_PCIDTC3 0x1B8 /* DMA3 Transfer Cnt. */ -+#define SH4_PCIDCR3 0x1BC /* DMA3 Control Register */ -+#define SH4_PCIPAR 0x1C0 /* PIO Address Register */ -+ #define SH4_PCIPAR_CFGEN 0x80000000 /* Configuration Enable */ -+ #define SH4_PCIPAR_BUSNO 0x00FF0000 /* Config. Bus Number */ -+ #define SH4_PCIPAR_DEVNO 0x0000FF00 /* Config. Device Number */ -+ #define SH4_PCIPAR_REGAD 0x000000FC /* Register Address Number */ -+#define SH4_PCIMBR 0x1C4 /* Memory Base Address */ -+ #define SH4_PCIMBR_MASK 0xFF000000 /* Memory Space Mask */ -+ #define SH4_PCIMBR_LOCK 0x00000001 /* Lock Memory Space */ -+#define SH4_PCIIOBR 0x1C8 /* I/O Base Address Register */ -+ #define SH4_PCIIOBR_MASK 0xFFFC0000 /* IO Space Mask */ -+ #define SH4_PCIIOBR_LOCK 0x00000001 /* Lock IO Space */ -+#define SH4_PCIPINT 0x1CC /* Power Mgmnt Int. Register */ -+ #define SH4_PCIPINT_D3 0x00000002 /* D3 Pwr Mgmt. Interrupt */ -+ #define SH4_PCIPINT_D0 0x00000001 /* D0 Pwr Mgmt. Interrupt */ -+#define SH4_PCIPINTM 0x1D0 /* Power Mgmnt Mask Register */ -+#define SH4_PCICLKR 0x1D4 /* Clock Ctrl. Register */ -+ #define SH4_PCICLKR_PCSTP 0x00000002 /* PCI Clock Stop */ -+ #define SH4_PCICLKR_BCSTP 0x00000001 /* BCLK Clock Stop */ -+/* For definitions of BCR, MCR see ... */ -+#define SH4_PCIBCR1 0x1E0 /* Memory BCR1 Register */ -+ #define SH4_PCIMBR0 SH4_PCIBCR1 -+#define SH4_PCIBCR2 0x1E4 /* Memory BCR2 Register */ -+ #define SH4_PCIMBMR0 SH4_PCIBCR2 -+#define SH4_PCIWCR1 0x1E8 /* Wait Control 1 Register */ -+#define SH4_PCIWCR2 0x1EC /* Wait Control 2 Register */ -+#define SH4_PCIWCR3 0x1F0 /* Wait Control 3 Register */ -+ #define SH4_PCIMBR2 SH4_PCIWCR3 -+#define SH4_PCIMCR 0x1F4 /* Memory Control Register */ -+#define SH4_PCIBCR3 0x1f8 /* Memory BCR3 Register */ -+#define SH4_PCIPCTR 0x200 /* Port Control Register */ -+ #define SH4_PCIPCTR_P2EN 0x000400000 /* Port 2 Enable */ -+ #define SH4_PCIPCTR_P1EN 0x000200000 /* Port 1 Enable */ -+ #define SH4_PCIPCTR_P0EN 0x000100000 /* Port 0 Enable */ -+ #define SH4_PCIPCTR_P2UP 0x000000020 /* Port2 Pull Up Enable */ -+ #define SH4_PCIPCTR_P2IO 0x000000010 /* Port2 Output Enable */ -+ #define SH4_PCIPCTR_P1UP 0x000000008 /* Port1 Pull Up Enable */ -+ #define SH4_PCIPCTR_P1IO 0x000000004 /* Port1 Output Enable */ -+ #define SH4_PCIPCTR_P0UP 0x000000002 /* Port0 Pull Up Enable */ -+ #define SH4_PCIPCTR_P0IO 0x000000001 /* Port0 Output Enable */ -+#define SH4_PCIPDTR 0x204 /* Port Data Register */ -+ #define SH4_PCIPDTR_PB5 0x000000020 /* Port 5 Enable */ -+ #define SH4_PCIPDTR_PB4 0x000000010 /* Port 4 Enable */ -+ #define SH4_PCIPDTR_PB3 0x000000008 /* Port 3 Enable */ -+ #define SH4_PCIPDTR_PB2 0x000000004 /* Port 2 Enable */ -+ #define SH4_PCIPDTR_PB1 0x000000002 /* Port 1 Enable */ -+ #define SH4_PCIPDTR_PB0 0x000000001 /* Port 0 Enable */ -+#define SH4_PCIPDR 0x220 /* Port IO Data Register */ -+ -+/* Flags */ -+#define SH4_PCIC_NO_RESET 0x0001 -+ -+/* arch/sh/kernel/drivers/pci/ops-sh4.c */ -+extern struct pci_ops sh4_pci_ops; -+int sh4_pci_check_direct(void); -+int pci_fixup_pcic(void); -+ -+struct sh4_pci_address_space { -+ unsigned long base; -+ unsigned long size; -+}; -+ -+struct sh4_pci_address_map { -+ struct sh4_pci_address_space window0; -+ struct sh4_pci_address_space window1; -+ unsigned long flags; -+}; -+ -+static inline void pci_write_reg(unsigned long val, unsigned long reg) -+{ -+ outl(val, PCI_REG(reg)); -+} -+ -+static inline unsigned long pci_read_reg(unsigned long reg) -+{ -+ return inl(PCI_REG(reg)); -+} -+#endif /* __PCI_SH4_H */ -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-sh7751.c linux-2.6.17/arch/sh/drivers/pci/pci-sh7751.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-sh7751.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/pci-sh7751.c 2006-07-12 16:54:21.000000000 +0000 -@@ -16,206 +16,44 @@ - #undef DEBUG - - #include <linux/config.h> --#include <linux/types.h> --#include <linux/kernel.h> - #include <linux/init.h> - #include <linux/pci.h> --#include <linux/sched.h> --#include <linux/ioport.h> -+#include <linux/types.h> - #include <linux/errno.h> --#include <linux/irq.h> - #include <linux/delay.h> -- --#include <asm/machvec.h> -+#include "pci-sh4.h" -+#include <asm/addrspace.h> - #include <asm/io.h> --#include "pci-sh7751.h" -- --static unsigned int pci_probe = PCI_PROBE_CONF1; --extern int pci_fixup_pcic(void); -- --void pcibios_fixup_irqs(void) __attribute__ ((weak)); -- --/* -- * Direct access to PCI hardware... -- */ -- --#define CONFIG_CMD(bus, devfn, where) (0x80000000 | (bus->number << 16) | (devfn << 8) | (where & ~3)) - - /* -- * Functions for accessing PCI configuration space with type 1 accesses -+ * Initialization. Try all known PCI access methods. Note that we support -+ * using both PCI BIOS and direct access: in such cases, we use I/O ports -+ * to access config space. -+ * -+ * Note that the platform specific initialization (BSC registers, and memory -+ * space mapping) will be called via the platform defined function -+ * pcibios_init_platform(). - */ --static int sh7751_pci_read(struct pci_bus *bus, unsigned int devfn, -- int where, int size, u32 *val) --{ -- unsigned long flags; -- u32 data; -- -- /* -- * PCIPDR may only be accessed as 32 bit words, -- * so we must do byte alignment by hand -- */ -- local_irq_save(flags); -- outl(CONFIG_CMD(bus,devfn,where), PCI_REG(SH7751_PCIPAR)); -- data = inl(PCI_REG(SH7751_PCIPDR)); -- local_irq_restore(flags); -- -- switch (size) { -- case 1: -- *val = (data >> ((where & 3) << 3)) & 0xff; -- break; -- case 2: -- *val = (data >> ((where & 2) << 3)) & 0xffff; -- break; -- case 4: -- *val = data; -- break; -- default: -- return PCIBIOS_FUNC_NOT_SUPPORTED; -- } -- -- return PCIBIOS_SUCCESSFUL; --} -- --/* -- * Since SH7751 only does 32bit access we'll have to do a read, -- * mask,write operation. -- * We'll allow an odd byte offset, though it should be illegal. -- */ --static int sh7751_pci_write(struct pci_bus *bus, unsigned int devfn, -- int where, int size, u32 val) -+static int __init sh7751_pci_init(void) - { -- unsigned long flags; -- int shift; -- u32 data; -- -- local_irq_save(flags); -- outl(CONFIG_CMD(bus,devfn,where), PCI_REG(SH7751_PCIPAR)); -- data = inl(PCI_REG(SH7751_PCIPDR)); -- local_irq_restore(flags); -- -- switch (size) { -- case 1: -- shift = (where & 3) << 3; -- data &= ~(0xff << shift); -- data |= ((val & 0xff) << shift); -- break; -- case 2: -- shift = (where & 2) << 3; -- data &= ~(0xffff << shift); -- data |= ((val & 0xffff) << shift); -- break; -- case 4: -- data = val; -- break; -- default: -- return PCIBIOS_FUNC_NOT_SUPPORTED; -- } -- -- outl(data, PCI_REG(SH7751_PCIPDR)); -- -- return PCIBIOS_SUCCESSFUL; --} -- --#undef CONFIG_CMD -- --struct pci_ops sh7751_pci_ops = { -- .read = sh7751_pci_read, -- .write = sh7751_pci_write, --}; -+ unsigned int id; -+ int ret; - --static int __init pci_check_direct(void) --{ -- unsigned int tmp, id; -+ pr_debug("PCI: Starting intialization.\n"); - - /* check for SH7751/SH7751R hardware */ -- id = inl(SH7751_PCIREG_BASE+SH7751_PCICONF0); -+ id = pci_read_reg(SH7751_PCICONF0); - if (id != ((SH7751_DEVICE_ID << 16) | SH7751_VENDOR_ID) && - id != ((SH7751R_DEVICE_ID << 16) | SH7751_VENDOR_ID)) { - pr_debug("PCI: This is not an SH7751(R) (%x)\n", id); - return -ENODEV; - } - -- /* -- * Check if configuration works. -- */ -- if (pci_probe & PCI_PROBE_CONF1) { -- tmp = inl (PCI_REG(SH7751_PCIPAR)); -- outl (0x80000000, PCI_REG(SH7751_PCIPAR)); -- if (inl (PCI_REG(SH7751_PCIPAR)) == 0x80000000) { -- outl (tmp, PCI_REG(SH7751_PCIPAR)); -- printk(KERN_INFO "PCI: Using configuration type 1\n"); -- request_region(PCI_REG(SH7751_PCIPAR), 8, "PCI conf1"); -- return 0; -- } -- outl (tmp, PCI_REG(SH7751_PCIPAR)); -- } -- -- pr_debug("PCI: pci_check_direct failed\n"); -- return -EINVAL; --} -- --/***************************************************************************************/ -- --/* -- * Handle bus scanning and fixups .... -- */ -- --static void __init pci_fixup_ide_bases(struct pci_dev *d) --{ -- int i; -- -- /* -- * PCI IDE controllers use non-standard I/O port decoding, respect it. -- */ -- if ((d->class >> 8) != PCI_CLASS_STORAGE_IDE) -- return; -- pr_debug("PCI: IDE base address fixup for %s\n", pci_name(d)); -- for(i=0; i<4; i++) { -- struct resource *r = &d->resource[i]; -- if ((r->start & ~0x80) == 0x374) { -- r->start |= 2; -- r->end = r->start; -- } -- } --} -- --DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases); -- --/* -- * Called after each bus is probed, but before its children -- * are examined. -- */ -- --void __init pcibios_fixup_bus(struct pci_bus *b) --{ -- pci_read_bridge_bases(b); --} -- --/* -- * Initialization. Try all known PCI access methods. Note that we support -- * using both PCI BIOS and direct access: in such cases, we use I/O ports -- * to access config space. -- * -- * Note that the platform specific initialization (BSC registers, and memory -- * space mapping) will be called via the machine vectors (sh_mv.mv_pci_init()) if it -- * exitst and via the platform defined function pcibios_init_platform(). -- * See pci_bigsur.c for implementation; -- * -- * The BIOS version of the pci functions is not yet implemented but it is left -- * in for completeness. Currently an error will be genereated at compile time. -- */ -- --static int __init sh7751_pci_init(void) --{ -- int ret; -- -- pr_debug("PCI: Starting intialization.\n"); -- if ((ret = pci_check_direct()) != 0) -+ if ((ret = sh4_pci_check_direct()) != 0) - return ret; - - return pcibios_init_platform(); - } -- - subsys_initcall(sh7751_pci_init); - - static int __init __area_sdram_check(unsigned int area) -@@ -224,26 +62,26 @@ - - word = inl(SH7751_BCR1); - /* check BCR for SDRAM in area */ -- if(((word >> area) & 1) == 0) { -+ if (((word >> area) & 1) == 0) { - printk("PCI: Area %d is not configured for SDRAM. BCR1=0x%x\n", - area, word); - return 0; - } -- outl(word, PCI_REG(SH7751_PCIBCR1)); -+ pci_write_reg(word, SH4_PCIBCR1); - - word = (u16)inw(SH7751_BCR2); - /* check BCR2 for 32bit SDRAM interface*/ -- if(((word >> (area << 1)) & 0x3) != 0x3) { -+ if (((word >> (area << 1)) & 0x3) != 0x3) { - printk("PCI: Area %d is not 32 bit SDRAM. BCR2=0x%x\n", - area, word); - return 0; - } -- outl(word, PCI_REG(SH7751_PCIBCR2)); -+ pci_write_reg(word, SH4_PCIBCR2); - - return 1; - } - --int __init sh7751_pcic_init(struct sh7751_pci_address_map *map) -+int __init sh7751_pcic_init(struct sh4_pci_address_map *map) - { - u32 reg; - u32 word; -@@ -252,86 +90,89 @@ - reg = inl(SH7751_BCR1); - reg |= 0x80000; - outl(reg, SH7751_BCR1); -- -+ - /* Turn the clocks back on (not done in reset)*/ -- outl(0, PCI_REG(SH7751_PCICLKR)); -+ pci_write_reg(0, SH4_PCICLKR); - /* Clear Powerdown IRQ's (not done in reset) */ -- word = SH7751_PCIPINT_D3 | SH7751_PCIPINT_D0; -- outl(word, PCI_REG(SH7751_PCIPINT)); -+ word = SH4_PCIPINT_D3 | SH4_PCIPINT_D0; -+ pci_write_reg(word, SH4_PCIPINT); - - /* - * This code is unused for some boards as it is done in the - * bootloader and doing it here means the MAC addresses loaded - * by the bootloader get lost. - */ -- if (!(map->flags & SH7751_PCIC_NO_RESET)) { -+ if (!(map->flags & SH4_PCIC_NO_RESET)) { - /* toggle PCI reset pin */ -- word = SH7751_PCICR_PREFIX | SH7751_PCICR_PRST; -- outl(word,PCI_REG(SH7751_PCICR)); -+ word = SH4_PCICR_PREFIX | SH4_PCICR_PRST; -+ pci_write_reg(word, SH4_PCICR); - /* Wait for a long time... not 1 sec. but long enough */ - mdelay(100); -- word = SH7751_PCICR_PREFIX; -- outl(word,PCI_REG(SH7751_PCICR)); -+ word = SH4_PCICR_PREFIX; -+ pci_write_reg(word, SH4_PCICR); - } -- -+ - /* set the command/status bits to: - * Wait Cycle Control + Parity Enable + Bus Master + - * Mem space enable - */ -- word = SH7751_PCICONF1_WCC | SH7751_PCICONF1_PER | -+ word = SH7751_PCICONF1_WCC | SH7751_PCICONF1_PER | - SH7751_PCICONF1_BUM | SH7751_PCICONF1_MES; -- outl(word, PCI_REG(SH7751_PCICONF1)); -+ pci_write_reg(word, SH7751_PCICONF1); - - /* define this host as the host bridge */ -- word = SH7751_PCI_HOST_BRIDGE << 24; -- outl(word, PCI_REG(SH7751_PCICONF2)); -+ word = PCI_BASE_CLASS_BRIDGE << 24; -+ pci_write_reg(word, SH7751_PCICONF2); - -- /* Set IO and Mem windows to local address -- * Make PCI and local address the same for easy 1 to 1 mapping -+ /* Set IO and Mem windows to local address -+ * Make PCI and local address the same for easy 1 to 1 mapping - * Window0 = map->window0.size @ non-cached area base = SDRAM -- * Window1 = map->window1.size @ cached area base = SDRAM -+ * Window1 = map->window1.size @ cached area base = SDRAM - */ - word = map->window0.size - 1; -- outl(word, PCI_REG(SH7751_PCILSR0)); -+ pci_write_reg(word, SH4_PCILSR0); - word = map->window1.size - 1; -- outl(word, PCI_REG(SH7751_PCILSR1)); -+ pci_write_reg(word, SH4_PCILSR1); - /* Set the values on window 0 PCI config registers */ - word = P2SEGADDR(map->window0.base); -- outl(word, PCI_REG(SH7751_PCILAR0)); -- outl(word, PCI_REG(SH7751_PCICONF5)); -+ pci_write_reg(word, SH4_PCILAR0); -+ pci_write_reg(word, SH7751_PCICONF5); - /* Set the values on window 1 PCI config registers */ - word = PHYSADDR(map->window1.base); -- outl(word, PCI_REG(SH7751_PCILAR1)); -- outl(word, PCI_REG(SH7751_PCICONF6)); -+ pci_write_reg(word, SH4_PCILAR1); -+ pci_write_reg(word, SH7751_PCICONF6); - -- /* Set the local 16MB PCI memory space window to -+ /* Set the local 16MB PCI memory space window to - * the lowest PCI mapped address - */ -- word = PCIBIOS_MIN_MEM & SH7751_PCIMBR_MASK; -- PCIDBG(2,"PCI: Setting upper bits of Memory window to 0x%x\n", word); -- outl(word , PCI_REG(SH7751_PCIMBR)); -+ word = PCIBIOS_MIN_MEM & SH4_PCIMBR_MASK; -+ pr_debug("PCI: Setting upper bits of Memory window to 0x%x\n", word); -+ pci_write_reg(word , SH4_PCIMBR); - - /* Map IO space into PCI IO window - * The IO window is 64K-PCIBIOS_MIN_IO in size -- * IO addresses will be translated to the -+ * IO addresses will be translated to the - * PCI IO window base address - */ -- PCIDBG(3,"PCI: Mapping IO address 0x%x - 0x%x to base 0x%x\n", PCIBIOS_MIN_IO, -- (64*1024), SH7751_PCI_IO_BASE+PCIBIOS_MIN_IO); -+ pr_debug("PCI: Mapping IO address 0x%x - 0x%x to base 0x%x\n", -+ PCIBIOS_MIN_IO, (64 << 10), -+ SH4_PCI_IO_BASE + PCIBIOS_MIN_IO); - -- /* -+ /* - * XXX: For now, leave this board-specific. In the event we have other - * boards that need to do similar work, this can be wrapped. - */ - #ifdef CONFIG_SH_BIGSUR -- bigsur_port_map(PCIBIOS_MIN_IO, (64*1024), SH7751_PCI_IO_BASE+PCIBIOS_MIN_IO,0); -+ bigsur_port_map(PCIBIOS_MIN_IO, (64 << 10), -+ SH4_PCI_IO_BASE + PCIBIOS_MIN_IO, 0); - #endif - -- /* Make sure the MSB's of IO window are set to access PCI space correctly */ -- word = PCIBIOS_MIN_IO & SH7751_PCIIOBR_MASK; -- PCIDBG(2,"PCI: Setting upper bits of IO window to 0x%x\n", word); -- outl(word, PCI_REG(SH7751_PCIIOBR)); -- -+ /* Make sure the MSB's of IO window are set to access PCI space -+ * correctly */ -+ word = PCIBIOS_MIN_IO & SH4_PCIIOBR_MASK; -+ pr_debug("PCI: Setting upper bits of IO window to 0x%x\n", word); -+ pci_write_reg(word, SH4_PCIIOBR); -+ - /* Set PCI WCRx, BCRx's, copy from BSC locations */ - - /* check BCR for SDRAM in specified area */ -@@ -344,19 +185,19 @@ - case SH7751_CS5_BASE_ADDR: word = __area_sdram_check(5); break; - case SH7751_CS6_BASE_ADDR: word = __area_sdram_check(6); break; - } -- -+ - if (!word) - return 0; - - /* configure the wait control registers */ - word = inl(SH7751_WCR1); -- outl(word, PCI_REG(SH7751_PCIWCR1)); -+ pci_write_reg(word, SH4_PCIWCR1); - word = inl(SH7751_WCR2); -- outl(word, PCI_REG(SH7751_PCIWCR2)); -+ pci_write_reg(word, SH4_PCIWCR2); - word = inl(SH7751_WCR3); -- outl(word, PCI_REG(SH7751_PCIWCR3)); -+ pci_write_reg(word, SH4_PCIWCR3); - word = inl(SH7751_MCR); -- outl(word, PCI_REG(SH7751_PCIMCR)); -+ pci_write_reg(word, SH4_PCIMCR); - - /* NOTE: I'm ignoring the PCI error IRQs for now.. - * TODO: add support for the internal error interrupts and -@@ -369,49 +210,8 @@ - - /* SH7751 init done, set central function init complete */ - /* use round robin mode to stop a device starving/overruning */ -- word = SH7751_PCICR_PREFIX | SH7751_PCICR_CFIN | SH7751_PCICR_ARBM; -- outl(word,PCI_REG(SH7751_PCICR)); -+ word = SH4_PCICR_PREFIX | SH4_PCICR_CFIN | SH4_PCICR_ARBM; -+ pci_write_reg(word, SH4_PCICR); - - return 1; - } -- --char * __init pcibios_setup(char *str) --{ -- if (!strcmp(str, "off")) { -- pci_probe = 0; -- return NULL; -- } -- -- return str; --} -- --/* -- * IRQ functions -- */ --static u8 __init sh7751_no_swizzle(struct pci_dev *dev, u8 *pin) --{ -- /* no swizzling */ -- return PCI_SLOT(dev->devfn); --} -- --static int sh7751_pci_lookup_irq(struct pci_dev *dev, u8 slot, u8 pin) --{ -- int irq = -1; -- -- /* now lookup the actual IRQ on a platform specific basis (pci-'platform'.c) */ -- irq = pcibios_map_platform_irq(slot,pin); -- if( irq < 0 ) { -- pr_debug("PCI: Error mapping IRQ on device %s\n", pci_name(dev)); -- return irq; -- } -- -- pr_debug("Setting IRQ for slot %s to %d\n", pci_name(dev), irq); -- -- return irq; --} -- --void __init pcibios_fixup_irqs(void) --{ -- pci_fixup_irqs(sh7751_no_swizzle, sh7751_pci_lookup_irq); --} -- -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-sh7751.h linux-2.6.17/arch/sh/drivers/pci/pci-sh7751.h ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-sh7751.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/pci-sh7751.h 2006-07-12 16:54:21.000000000 +0000 -@@ -3,7 +3,7 @@ - * - * Dustin McIntire (dustin@sensoria.com) (c) 2001 - * Paul Mundt (lethal@linux-sh.org) (c) 2003 -- * -+ * - * May be copied or modified under the terms of the GNU General Public - * License. See linux/COPYING for more information. - * -@@ -12,28 +12,6 @@ - #ifndef _PCI_SH7751_H_ - #define _PCI_SH7751_H_ - --#include <linux/pci.h> -- --/* set debug level 4=verbose...1=terse */ --//#define DEBUG_PCI 3 --#undef DEBUG_PCI -- --#ifdef DEBUG_PCI --#define PCIDBG(n, x...) { if(DEBUG_PCI>=n) printk(x); } --#else --#define PCIDBG(n, x...) --#endif -- --/* startup values */ --#define PCI_PROBE_BIOS 1 --#define PCI_PROBE_CONF1 2 --#define PCI_PROBE_CONF2 4 --#define PCI_NO_SORT 0x100 --#define PCI_BIOS_SORT 0x200 --#define PCI_NO_CHECKS 0x400 --#define PCI_ASSIGN_ROMS 0x1000 --#define PCI_BIOS_IRQ_SCAN 0x2000 -- - /* Platform Specific Values */ - #define SH7751_VENDOR_ID 0x1054 - #define SH7751_DEVICE_ID 0x3505 -@@ -128,131 +106,6 @@ - #define SH7751_PCICONF17_PMEN 0x00010000 /* PME Enable */ - #define SH7751_PCICONF17_PWST 0x00000003 /* Power State */ - /* SH7715 Internal PCI Registers */ --#define SH7751_PCICR 0x100 /* PCI Control Register */ -- #define SH7751_PCICR_PREFIX 0xA5000000 /* CR prefix for write */ -- #define SH7751_PCICR_TRSB 0x00000200 /* Target Read Single */ -- #define SH7751_PCICR_BSWP 0x00000100 /* Target Byte Swap */ -- #define SH7751_PCICR_PLUP 0x00000080 /* Enable PCI Pullup */ -- #define SH7751_PCICR_ARBM 0x00000040 /* PCI Arbitration Mode */ -- #define SH7751_PCICR_MD 0x00000030 /* MD9 and MD10 status */ -- #define SH7751_PCICR_SERR 0x00000008 /* SERR output assert */ -- #define SH7751_PCICR_INTA 0x00000004 /* INTA output assert */ -- #define SH7751_PCICR_PRST 0x00000002 /* PCI Reset Assert */ -- #define SH7751_PCICR_CFIN 0x00000001 /* Central Fun. Init Done */ --#define SH7751_PCILSR0 0x104 /* PCI Local Space Register0 */ --#define SH7751_PCILSR1 0x108 /* PCI Local Space Register1 */ --#define SH7751_PCILAR0 0x10C /* PCI Local Address Register1 */ --#define SH7751_PCILAR1 0x110 /* PCI Local Address Register1 */ --#define SH7751_PCIINT 0x114 /* PCI Interrupt Register */ -- #define SH7751_PCIINT_MLCK 0x00008000 /* Master Lock Error */ -- #define SH7751_PCIINT_TABT 0x00004000 /* Target Abort Error */ -- #define SH7751_PCIINT_TRET 0x00000200 /* Target Retry Error */ -- #define SH7751_PCIINT_MFDE 0x00000100 /* Master Func. Disable Error */ -- #define SH7751_PCIINT_PRTY 0x00000080 /* Address Parity Error */ -- #define SH7751_PCIINT_SERR 0x00000040 /* SERR Detection Error */ -- #define SH7751_PCIINT_TWDP 0x00000020 /* Tgt. Write Parity Error */ -- #define SH7751_PCIINT_TRDP 0x00000010 /* Tgt. Read Parity Error Det. */ -- #define SH7751_PCIINT_MTABT 0x00000008 /* Master-Tgt. Abort Error */ -- #define SH7751_PCIINT_MMABT 0x00000004 /* Master-Master Abort Error */ -- #define SH7751_PCIINT_MWPD 0x00000002 /* Master Write PERR Detect */ -- #define SH7751_PCIINT_MRPD 0x00000002 /* Master Read PERR Detect */ --#define SH7751_PCIINTM 0x118 /* PCI Interrupt Mask Register */ --#define SH7751_PCIALR 0x11C /* Error Address Register */ --#define SH7751_PCICLR 0x120 /* Error Command/Data Register */ -- #define SH7751_PCICLR_MPIO 0x80000000 /* Error Command/Data Register */ -- #define SH7751_PCICLR_MDMA0 0x40000000 /* DMA0 Transfer Error */ -- #define SH7751_PCICLR_MDMA1 0x20000000 /* DMA1 Transfer Error */ -- #define SH7751_PCICLR_MDMA2 0x10000000 /* DMA2 Transfer Error */ -- #define SH7751_PCICLR_MDMA3 0x08000000 /* DMA3 Transfer Error */ -- #define SH7751_PCICLR_TGT 0x04000000 /* Target Transfer Error */ -- #define SH7751_PCICLR_CMDL 0x0000000F /* PCI Command at Error */ --#define SH7751_PCIAINT 0x130 /* Arbiter Interrupt Register */ -- #define SH7751_PCIAINT_MBKN 0x00002000 /* Master Broken Interrupt */ -- #define SH7751_PCIAINT_TBTO 0x00001000 /* Target Bus Time Out */ -- #define SH7751_PCIAINT_MBTO 0x00001000 /* Master Bus Time Out */ -- #define SH7751_PCIAINT_TABT 0x00000008 /* Target Abort */ -- #define SH7751_PCIAINT_MABT 0x00000004 /* Master Abort */ -- #define SH7751_PCIAINT_RDPE 0x00000002 /* Read Data Parity Error */ -- #define SH7751_PCIAINT_WDPE 0x00000002 /* Write Data Parity Error */ --#define SH7751_PCIAINTM 0x134 /* Arbiter Int. Mask Register */ --#define SH7751_PCIBMLR 0x138 /* Error Bus Master Register */ -- #define SH7751_PCIBMLR_REQ4 0x00000010 /* REQ4 bus master at error */ -- #define SH7751_PCIBMLR_REQ3 0x00000008 /* REQ3 bus master at error */ -- #define SH7751_PCIBMLR_REQ2 0x00000004 /* REQ2 bus master at error */ -- #define SH7751_PCIBMLR_REQ1 0x00000002 /* REQ1 bus master at error */ -- #define SH7751_PCIBMLR_REQ0 0x00000001 /* REQ0 bus master at error */ --#define SH7751_PCIDMABT 0x140 /* DMA Transfer Arb. Register */ -- #define SH7751_PCIDMABT_RRBN 0x00000001 /* DMA Arbitor Round-Robin */ --#define SH7751_PCIDPA0 0x180 /* DMA0 Transfer Addr. Register */ --#define SH7751_PCIDLA0 0x184 /* DMA0 Local Addr. Register */ --#define SH7751_PCIDTC0 0x188 /* DMA0 Transfer Cnt. Register */ --#define SH7751_PCIDCR0 0x18C /* DMA0 Control Register */ -- #define SH7751_PCIDCR_ALGN 0x00000600 /* DMA Alignment Mode */ -- #define SH7751_PCIDCR_MAST 0x00000100 /* DMA Termination Type */ -- #define SH7751_PCIDCR_INTM 0x00000080 /* DMA Interrupt Done Mask*/ -- #define SH7751_PCIDCR_INTS 0x00000040 /* DMA Interrupt Done Status */ -- #define SH7751_PCIDCR_LHLD 0x00000020 /* Local Address Control */ -- #define SH7751_PCIDCR_PHLD 0x00000010 /* PCI Address Control*/ -- #define SH7751_PCIDCR_IOSEL 0x00000008 /* PCI Address Space Type */ -- #define SH7751_PCIDCR_DIR 0x00000004 /* DMA Transfer Direction */ -- #define SH7751_PCIDCR_STOP 0x00000002 /* Force DMA Stop */ -- #define SH7751_PCIDCR_STRT 0x00000001 /* DMA Start */ --#define SH7751_PCIDPA1 0x190 /* DMA1 Transfer Addr. Register */ --#define SH7751_PCIDLA1 0x194 /* DMA1 Local Addr. Register */ --#define SH7751_PCIDTC1 0x198 /* DMA1 Transfer Cnt. Register */ --#define SH7751_PCIDCR1 0x19C /* DMA1 Control Register */ --#define SH7751_PCIDPA2 0x1A0 /* DMA2 Transfer Addr. Register */ --#define SH7751_PCIDLA2 0x1A4 /* DMA2 Local Addr. Register */ --#define SH7751_PCIDTC2 0x1A8 /* DMA2 Transfer Cnt. Register */ --#define SH7751_PCIDCR2 0x1AC /* DMA2 Control Register */ --#define SH7751_PCIDPA3 0x1B0 /* DMA3 Transfer Addr. Register */ --#define SH7751_PCIDLA3 0x1B4 /* DMA3 Local Addr. Register */ --#define SH7751_PCIDTC3 0x1B8 /* DMA3 Transfer Cnt. Register */ --#define SH7751_PCIDCR3 0x1BC /* DMA3 Control Register */ --#define SH7751_PCIPAR 0x1C0 /* PIO Address Register */ -- #define SH7751_PCIPAR_CFGEN 0x80000000 /* Configuration Enable */ -- #define SH7751_PCIPAR_BUSNO 0x00FF0000 /* Config. Bus Number */ -- #define SH7751_PCIPAR_DEVNO 0x0000FF00 /* Config. Device Number */ -- #define SH7751_PCIPAR_REGAD 0x000000FC /* Register Address Number */ --#define SH7751_PCIMBR 0x1C4 /* Memory Base Address Register */ -- #define SH7751_PCIMBR_MASK 0xFF000000 /* Memory Space Mask */ -- #define SH7751_PCIMBR_LOCK 0x00000001 /* Lock Memory Space */ --#define SH7751_PCIIOBR 0x1C8 /* I/O Base Address Register */ -- #define SH7751_PCIIOBR_MASK 0xFFFC0000 /* IO Space Mask */ -- #define SH7751_PCIIOBR_LOCK 0x00000001 /* Lock IO Space */ --#define SH7751_PCIPINT 0x1CC /* Power Mgmnt Int. Register */ -- #define SH7751_PCIPINT_D3 0x00000002 /* D3 Pwr Mgmt. Interrupt */ -- #define SH7751_PCIPINT_D0 0x00000001 /* D0 Pwr Mgmt. Interrupt */ --#define SH7751_PCIPINTM 0x1D0 /* Power Mgmnt Mask Register */ --#define SH7751_PCICLKR 0x1D4 /* Clock Ctrl. Register */ -- #define SH7751_PCICLKR_PCSTP 0x00000002 /* PCI Clock Stop */ -- #define SH7751_PCICLKR_BCSTP 0x00000002 /* BCLK Clock Stop */ --/* For definitions of BCR, MCR see ... */ --#define SH7751_PCIBCR1 0x1E0 /* Memory BCR1 Register */ --#define SH7751_PCIBCR2 0x1E4 /* Memory BCR2 Register */ --#define SH7751_PCIWCR1 0x1E8 /* Wait Control 1 Register */ --#define SH7751_PCIWCR2 0x1EC /* Wait Control 2 Register */ --#define SH7751_PCIWCR3 0x1F0 /* Wait Control 3 Register */ --#define SH7751_PCIMCR 0x1F4 /* Memory Control Register */ --#define SH7751_PCIBCR3 0x1f8 /* Memory BCR3 Register */ --#define SH7751_PCIPCTR 0x200 /* Port Control Register */ -- #define SH7751_PCIPCTR_P2EN 0x000400000 /* Port 2 Enable */ -- #define SH7751_PCIPCTR_P1EN 0x000200000 /* Port 1 Enable */ -- #define SH7751_PCIPCTR_P0EN 0x000100000 /* Port 0 Enable */ -- #define SH7751_PCIPCTR_P2UP 0x000000020 /* Port2 Pull Up Enable */ -- #define SH7751_PCIPCTR_P2IO 0x000000010 /* Port2 Output Enable */ -- #define SH7751_PCIPCTR_P1UP 0x000000008 /* Port1 Pull Up Enable */ -- #define SH7751_PCIPCTR_P1IO 0x000000004 /* Port1 Output Enable */ -- #define SH7751_PCIPCTR_P0UP 0x000000002 /* Port0 Pull Up Enable */ -- #define SH7751_PCIPCTR_P0IO 0x000000001 /* Port0 Output Enable */ --#define SH7751_PCIPDTR 0x204 /* Port Data Register */ -- #define SH7751_PCIPDTR_PB5 0x000000020 /* Port 5 Enable */ -- #define SH7751_PCIPDTR_PB4 0x000000010 /* Port 4 Enable */ -- #define SH7751_PCIPDTR_PB3 0x000000008 /* Port 3 Enable */ -- #define SH7751_PCIPDTR_PB2 0x000000004 /* Port 2 Enable */ -- #define SH7751_PCIPDTR_PB1 0x000000002 /* Port 1 Enable */ -- #define SH7751_PCIPDTR_PB0 0x000000001 /* Port 0 Enable */ --#define SH7751_PCIPDR 0x220 /* Port IO Data Register */ - - /* Memory Control Registers */ - #define SH7751_BCR1 0xFF800000 /* Memory BCR1 Register */ -@@ -274,30 +127,9 @@ - #define SH7751_CS5_BASE_ADDR (SH7751_CS4_BASE_ADDR + SH7751_MEM_REGION_SIZE) - #define SH7751_CS6_BASE_ADDR (SH7751_CS5_BASE_ADDR + SH7751_MEM_REGION_SIZE) - --/* General PCI values */ --#define SH7751_PCI_HOST_BRIDGE 0x6 -- --/* Flags */ --#define SH7751_PCIC_NO_RESET 0x0001 -- --/* External functions defined per platform i.e. Big Sur, SE... (these could be routed -- * through the machine vectors... */ --extern int pcibios_init_platform(void); --extern int pcibios_map_platform_irq(u8 slot, u8 pin); -- --struct sh7751_pci_address_space { -- unsigned long base; -- unsigned long size; --}; -- --struct sh7751_pci_address_map { -- struct sh7751_pci_address_space window0; -- struct sh7751_pci_address_space window1; -- unsigned long flags; --}; -+struct sh4_pci_address_map; - - /* arch/sh/drivers/pci/pci-sh7751.c */ --extern int sh7751_pcic_init(struct sh7751_pci_address_map *map); -+int sh7751_pcic_init(struct sh4_pci_address_map *map); - - #endif /* _PCI_SH7751_H_ */ -- -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-sh7780.c linux-2.6.17/arch/sh/drivers/pci/pci-sh7780.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-sh7780.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/pci-sh7780.c 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,139 @@ -+/* -+ * Low-Level PCI Support for the SH7780 -+ * -+ * Dustin McIntire (dustin@sensoria.com) -+ * Derived from arch/i386/kernel/pci-*.c which bore the message: -+ * (c) 1999--2000 Martin Mares <mj@ucw.cz> -+ * -+ * Ported to the new API by Paul Mundt <lethal@linux-sh.org> -+ * With cleanup by Paul van Gool <pvangool@mimotech.com> -+ * -+ * May be copied or modified under the terms of the GNU General Public -+ * License. See linux/COPYING for more information. -+ * -+ */ -+ -+#undef DEBUG -+ -+#include <linux/config.h> -+#include <linux/types.h> -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/pci.h> -+#include <linux/errno.h> -+#include <linux/delay.h> -+#include "pci-sh4.h" -+ -+/* -+ * Initialization. Try all known PCI access methods. Note that we support -+ * using both PCI BIOS and direct access: in such cases, we use I/O ports -+ * to access config space. -+ * -+ * Note that the platform specific initialization (BSC registers, and memory -+ * space mapping) will be called via the platform defined function -+ * pcibios_init_platform(). -+ */ -+static int __init sh7780_pci_init(void) -+{ -+ unsigned int id; -+ int ret; -+ -+ pr_debug("PCI: Starting intialization.\n"); -+ -+ outl(0x00000001, SH7780_PCI_VCR2); /* Enable PCIC */ -+ -+ /* check for SH7780/SH7780R hardware */ -+ id = pci_read_reg(SH7780_PCIVID); -+ if ((id != ((SH7780_DEVICE_ID << 16) | SH7780_VENDOR_ID)) && -+ (id != ((SH7781_DEVICE_ID << 16) | SH7780_VENDOR_ID))) { -+ printk(KERN_ERR "PCI: This is not an SH7780 (%x)\n", id); -+ return -ENODEV; -+ } -+ -+ /* Setup the INTC */ -+ ctrl_outl(0x00200000, INTC_ICR0); /* INTC SH-4 Mode */ -+ ctrl_outl(0x00078000, INTC_INT2MSKCR); /* enable PCIINTA - PCIINTD */ -+ ctrl_outl(0x40000000, INTC_INTMSK1); /* disable IRL4-7 Interrupt */ -+ ctrl_outl(0x0000fffe, INTC_INTMSK2); /* disable IRL4-7 Interrupt */ -+ ctrl_outl(0x80000000, INTC_INTMSKCLR1); /* enable IRL0-3 Interrupt */ -+ ctrl_outl(0xfffe0000, INTC_INTMSKCLR2); /* enable IRL0-3 Interrupt */ -+ -+ if ((ret = sh4_pci_check_direct()) != 0) -+ return ret; -+ -+ return pcibios_init_platform(); -+} -+core_initcall(sh7780_pci_init); -+ -+int __init sh7780_pcic_init(struct sh4_pci_address_map *map) -+{ -+ u32 word; -+ -+ /* -+ * This code is unused for some boards as it is done in the -+ * bootloader and doing it here means the MAC addresses loaded -+ * by the bootloader get lost. -+ */ -+ if (!(map->flags & SH4_PCIC_NO_RESET)) { -+ /* toggle PCI reset pin */ -+ word = SH4_PCICR_PREFIX | SH4_PCICR_PRST; -+ pci_write_reg(word, SH4_PCICR); -+ /* Wait for a long time... not 1 sec. but long enough */ -+ mdelay(100); -+ word = SH4_PCICR_PREFIX; -+ pci_write_reg(word, SH4_PCICR); -+ } -+ -+ /* set the command/status bits to: -+ * Wait Cycle Control + Parity Enable + Bus Master + -+ * Mem space enable -+ */ -+ pci_write_reg(0x00000046, SH7780_PCICMD); -+ -+ /* define this host as the host bridge */ -+ word = PCI_BASE_CLASS_BRIDGE << 24; -+ pci_write_reg(word, SH7780_PCIRID); -+ -+ /* Set IO and Mem windows to local address -+ * Make PCI and local address the same for easy 1 to 1 mapping -+ * Window0 = map->window0.size @ non-cached area base = SDRAM -+ * Window1 = map->window1.size @ cached area base = SDRAM -+ */ -+ word = ((map->window0.size - 1) & 0x1ff00001) | 0x01; -+ pci_write_reg(0x07f00001, SH4_PCILSR0); -+ word = ((map->window1.size - 1) & 0x1ff00001) | 0x01; -+ pci_write_reg(0x00000001, SH4_PCILSR1); -+ /* Set the values on window 0 PCI config registers */ -+ word = P2SEGADDR(map->window0.base); -+ pci_write_reg(0xa8000000, SH4_PCILAR0); -+ pci_write_reg(0x08000000, SH7780_PCIMBAR0); -+ /* Set the values on window 1 PCI config registers */ -+ word = P2SEGADDR(map->window1.base); -+ pci_write_reg(0x00000000, SH4_PCILAR1); -+ pci_write_reg(0x00000000, SH7780_PCIMBAR1); -+ -+ /* Map IO space into PCI IO window -+ * The IO window is 64K-PCIBIOS_MIN_IO in size -+ * IO addresses will be translated to the -+ * PCI IO window base address -+ */ -+ pr_debug("PCI: Mapping IO address 0x%x - 0x%x to base 0x%x\n", -+ PCIBIOS_MIN_IO, (64 << 10), -+ SH7780_PCI_IO_BASE + PCIBIOS_MIN_IO); -+ -+ /* NOTE: I'm ignoring the PCI error IRQs for now.. -+ * TODO: add support for the internal error interrupts and -+ * DMA interrupts... -+ */ -+ -+#ifdef CONFIG_SH_R7780RP -+ pci_fixup_pcic(); -+#endif -+ -+ /* SH7780 init done, set central function init complete */ -+ /* use round robin mode to stop a device starving/overruning */ -+ word = SH4_PCICR_PREFIX | SH4_PCICR_CFIN | SH4_PCICR_FTO; -+ pci_write_reg(word, SH4_PCICR); -+ -+ return 1; -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-sh7780.h linux-2.6.17/arch/sh/drivers/pci/pci-sh7780.h ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-sh7780.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/pci-sh7780.h 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,94 @@ -+/* -+ * Low-Level PCI Support for SH7780 targets -+ * -+ * Dustin McIntire (dustin@sensoria.com) (c) 2001 -+ * Paul Mundt (lethal@linux-sh.org) (c) 2003 -+ * -+ * May be copied or modified under the terms of the GNU General Public -+ * License. See linux/COPYING for more information. -+ * -+ */ -+ -+#ifndef _PCI_SH7780_H_ -+#define _PCI_SH7780_H_ -+ -+/* Platform Specific Values */ -+#define SH7780_VENDOR_ID 0x1912 -+#define SH7780_DEVICE_ID 0x0002 -+#define SH7781_DEVICE_ID 0x0001 -+ -+/* SH7780 Control Registers */ -+#define SH7780_PCI_VCR0 0xFE000000 -+#define SH7780_PCI_VCR1 0xFE000004 -+#define SH7780_PCI_VCR2 0xFE000008 -+ -+/* SH7780 Specific Values */ -+#define SH7780_PCI_CONFIG_BASE 0xFD000000 /* Config space base addr */ -+#define SH7780_PCI_CONFIG_SIZE 0x01000000 /* Config space size */ -+ -+#define SH7780_PCI_MEMORY_BASE 0xFD000000 /* Memory space base addr */ -+#define SH7780_PCI_MEM_SIZE 0x01000000 /* Size of Memory window */ -+ -+#define SH7780_PCI_IO_BASE 0xFE400000 /* IO space base address */ -+#define SH7780_PCI_IO_SIZE 0x00400000 /* Size of IO window */ -+ -+#define SH7780_PCIREG_BASE 0xFE040000 /* PCI regs base address */ -+#define PCI_REG(n) (SH7780_PCIREG_BASE+n) -+ -+/* SH7780 PCI Config Registers */ -+#define SH7780_PCIVID 0x000 /* Vendor ID */ -+#define SH7780_PCIDID 0x002 /* Device ID */ -+#define SH7780_PCICMD 0x004 /* Command */ -+#define SH7780_PCISTATUS 0x006 /* Status */ -+#define SH7780_PCIRID 0x008 /* Revision ID */ -+#define SH7780_PCIPIF 0x009 /* Program Interface */ -+#define SH7780_PCISUB 0x00a /* Sub class code */ -+#define SH7780_PCIBCC 0x00b /* Base class code */ -+#define SH7780_PCICLS 0x00c /* Cache line size */ -+#define SH7780_PCILTM 0x00d /* latency timer */ -+#define SH7780_PCIHDR 0x00e /* Header type */ -+#define SH7780_PCIBIST 0x00f /* BIST */ -+#define SH7780_PCIIBAR 0x010 /* IO Base address */ -+#define SH7780_PCIMBAR0 0x014 /* Memory base address0 */ -+#define SH7780_PCIMBAR1 0x018 /* Memory base address1 */ -+#define SH7780_PCISVID 0x02c /* Sub system vendor ID */ -+#define SH7780_PCISID 0x02e /* Sub system ID */ -+#define SH7780_PCICP 0x034 -+#define SH7780_PCIINTLINE 0x03c /* Interrupt line */ -+#define SH7780_PCIINTPIN 0x03d /* Interrupt pin */ -+#define SH7780_PCIMINGNT 0x03e /* Minumum grand */ -+#define SH7780_PCIMAXLAT 0x03f /* Maxmum latency */ -+#define SH7780_PCICID 0x040 -+#define SH7780_PCINIP 0x041 -+#define SH7780_PCIPMC 0x042 -+#define SH7780_PCIPMCSR 0x044 -+#define SH7780_PCIPMCSR_BSE 0x046 -+#define SH7780_PCICDD 0x047 -+ -+#define SH7780_PCIMBR0 0x1E0 -+#define SH7780_PCIMBMR0 0x1E4 -+#define SH7780_PCIMBR2 0x1F0 -+#define SH7780_PCIMBMR2 0x1F4 -+#define SH7780_PCIIOBR 0x1F8 -+#define SH7780_PCIIOBMR 0x1FC -+#define SH7780_PCICSCR0 0x210 /* Cache Snoop1 Cnt. Register */ -+#define SH7780_PCICSCR1 0x214 /* Cache Snoop2 Cnt. Register */ -+#define SH7780_PCICSAR0 0x218 /* Cache Snoop1 Addr. Register */ -+#define SH7780_PCICSAR1 0x21C /* Cache Snoop2 Addr. Register */ -+ -+/* General Memory Config Addresses */ -+#define SH7780_CS0_BASE_ADDR 0x0 -+#define SH7780_MEM_REGION_SIZE 0x04000000 -+#define SH7780_CS1_BASE_ADDR (SH7780_CS0_BASE_ADDR + SH7780_MEM_REGION_SIZE) -+#define SH7780_CS2_BASE_ADDR (SH7780_CS1_BASE_ADDR + SH7780_MEM_REGION_SIZE) -+#define SH7780_CS3_BASE_ADDR (SH7780_CS2_BASE_ADDR + SH7780_MEM_REGION_SIZE) -+#define SH7780_CS4_BASE_ADDR (SH7780_CS3_BASE_ADDR + SH7780_MEM_REGION_SIZE) -+#define SH7780_CS5_BASE_ADDR (SH7780_CS4_BASE_ADDR + SH7780_MEM_REGION_SIZE) -+#define SH7780_CS6_BASE_ADDR (SH7780_CS5_BASE_ADDR + SH7780_MEM_REGION_SIZE) -+ -+struct sh4_pci_address_map; -+ -+/* arch/sh/drivers/pci/pci-sh7780.c */ -+int sh7780_pcic_init(struct sh4_pci_address_map *map); -+ -+#endif /* _PCI_SH7780_H_ */ -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-st40.c linux-2.6.17/arch/sh/drivers/pci/pci-st40.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/pci-st40.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/pci-st40.c 2006-07-12 16:54:21.000000000 +0000 -@@ -71,12 +71,6 @@ - static void pci_set_rbar_region(unsigned int region, unsigned long localAddr, - unsigned long pciOffset, unsigned long regionSize); - --/* -- * The pcibios_map_platform_irq function is defined in the appropriate -- * board specific code and referenced here -- */ --extern int __init pcibios_map_platform_irq(struct pci_dev *dev, u8 slot, u8 pin); -- - static __init void SetPCIPLL(void) - { - { -@@ -110,12 +104,12 @@ - - static struct pci_err int_error[]={ - { INT_MNLTDIM,"MNLTDIM: Master non-lock transfer"}, -- { INT_TTADI, "TTADI: Illegal byte enable in I/O transfer"}, -- { INT_TMTO, "TMTO: Target memory read/write timeout"}, -+ { INT_TTADI, "TTADI: Illegal byte enable in I/O transfer"}, -+ { INT_TMTO, "TMTO: Target memory read/write timeout"}, - { INT_MDEI, "MDEI: Master function disable error"}, - { INT_APEDI, "APEDI: Address parity error"}, - { INT_SDI, "SDI: SERR detected"}, -- { INT_DPEITW, "DPEITW: Data parity error target write"}, -+ { INT_DPEITW, "DPEITW: Data parity error target write"}, - { INT_PEDITR, "PEDITR: PERR detected"}, - { INT_TADIM, "TADIM: Target abort detected"}, - { INT_MADIM, "MADIM: Master abort detected"}, -@@ -178,7 +172,7 @@ - pci_cir = ST40PCI_READ(CIR);pci_air = ST40PCI_READ(AIR); - - /* Reset state to stop multiple interrupts */ -- ST40PCI_WRITE(INT, ~0); ST40PCI_WRITE(AINT, ~0); -+ ST40PCI_WRITE(INT, ~0); ST40PCI_WRITE(AINT, ~0); - - - if(++count>1) return IRQ_HANDLED; -@@ -193,8 +187,8 @@ - if(pci_aint) { - printk("** AINT register status\n"); - print_pci_errors(pci_aint,aint_error,NUM_PCI_AINT_ERRS); -- } -- -+ } -+ - printk("** Address and command info\n"); - - printk("** Command %s : Address 0x%x\n", -@@ -246,7 +240,7 @@ - */ - if ((d->class >> 8) != PCI_CLASS_STORAGE_IDE) - return; -- printk("PCI: IDE base address fixup for %s\n", pci_name(d)); -+ printk("PCI: IDE base address fixup for %s\n", d->slot_name); - for(i=0; i<4; i++) { - struct resource *r = &d->resource[i]; - if ((r->start & ~0x80) == 0x374) { -@@ -255,11 +249,13 @@ - } - } - } -+ - DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases); - - int __init st40pci_init(unsigned memStart, unsigned memSize) - { -- u32 lsr0; -+ -+ printk("PCI version register reads 0x%x\n",ST40PCI_READ(VCR_VERSION)); - - SetPCIPLL(); - -@@ -423,19 +419,12 @@ - /* Everything hangs off this */ - static struct pci_bus *pci_root_bus; - -- --static u8 __init no_swizzle(struct pci_dev *dev, u8 * pin) --{ -- return PCI_SLOT(dev->devfn); --} -- -- - static int __init pcibios_init(void) - { - extern unsigned long memory_start, memory_end; - - printk(KERN_ALERT "pci-st40.c: pcibios_init\n"); -- -+ - if (sh_mv.mv_init_pci != NULL) { - sh_mv.mv_init_pci(); - } -@@ -466,17 +455,11 @@ - /* ok, do the scan man */ - pci_root_bus = pci_scan_bus(0, &st40pci_config_ops, NULL); - pci_assign_unassigned_resources(); -- pci_fixup_irqs(no_swizzle, pcibios_map_platform_irq); - - return 0; - } -- - subsys_initcall(pcibios_init); - --void __init pcibios_fixup_bus(struct pci_bus *bus) --{ --} -- - /* - * Publish a region of local address space over the PCI bus - * to other devices. -@@ -505,5 +488,5 @@ - - /* Size of region */ - ST40PCI_WRITE_INDEXED(RSR, region, mask | 1); --} -+} - -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/pci/pci.c linux-2.6.17/arch/sh/drivers/pci/pci.c ---- linux-2.6.17-vanilla/arch/sh/drivers/pci/pci.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/pci/pci.c 2006-07-12 16:54:21.000000000 +0000 -@@ -1,21 +1,45 @@ --/* arch/sh/kernel/pci.c -- * $Id: pci.c,v 1.1 2003/08/24 19:15:45 lethal Exp $ -+/* -+ * arch/sh/drivers/pci/pci.c - * - * Copyright (c) 2002 M. R. Brown <mrbrown@linux-sh.org> -- * -- * -+ * Copyright (c) 2004 - 2006 Paul Mundt <lethal@linux-sh.org> -+ * - * These functions are collected here to reduce duplication of common - * code amongst the many platform-specific PCI support code files. -- * -+ * - * These routines require the following board-specific routines: - * void pcibios_fixup_irqs(); - * - * See include/asm-sh/pci.h for more information. -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. - */ -- - #include <linux/kernel.h> - #include <linux/pci.h> - #include <linux/init.h> -+#include <asm/io.h> -+ -+static inline u8 bridge_swizzle(u8 pin, u8 slot) -+{ -+ return (((pin - 1) + slot) % 4) + 1; -+} -+ -+static u8 __init simple_swizzle(struct pci_dev *dev, u8 *pinp) -+{ -+ u8 pin = *pinp; -+ -+ while (dev->bus->parent) { -+ pin = bridge_swizzle(pin, PCI_SLOT(dev->devfn)); -+ /* Move up the chain of bridges. */ -+ dev = dev->bus->self; -+ } -+ *pinp = pin; -+ -+ /* The slot is the slot of the last bridge. */ -+ return PCI_SLOT(dev->devfn); -+} - - static int __init pcibios_init(void) - { -@@ -26,26 +50,32 @@ - #ifdef CONFIG_PCI_AUTO - /* assign resources */ - busno = 0; -- for (p = board_pci_channels; p->pci_ops != NULL; p++) { -+ for (p = board_pci_channels; p->pci_ops != NULL; p++) - busno = pciauto_assign_resources(busno, p) + 1; -- } - #endif - - /* scan the buses */ - busno = 0; -- for (p= board_pci_channels; p->pci_ops != NULL; p++) { -+ for (p = board_pci_channels; p->pci_ops != NULL; p++) { - bus = pci_scan_bus(busno, p->pci_ops, p); -- busno = bus->subordinate+1; -+ busno = bus->subordinate + 1; - } - -- /* board-specific fixups */ -- pcibios_fixup_irqs(); -+ pci_fixup_irqs(simple_swizzle, pcibios_map_platform_irq); - - return 0; - } -- - subsys_initcall(pcibios_init); - -+/* -+ * Called after each bus is probed, but before its children -+ * are examined. -+ */ -+void __init pcibios_fixup_bus(struct pci_bus *bus) -+{ -+ pci_read_bridge_bases(bus); -+} -+ - void - pcibios_update_resource(struct pci_dev *dev, struct resource *root, - struct resource *res, int resource) -@@ -61,13 +91,17 @@ - new |= PCI_ROM_ADDRESS_ENABLE; - reg = dev->rom_base_reg; - } else { -- /* Somebody might have asked allocation of a non-standard resource */ -+ /* -+ * Somebody might have asked allocation of a non-standard -+ * resource -+ */ - return; - } -- -+ - pci_write_config_dword(dev, reg, new); - pci_read_config_dword(dev, reg, &check); -- if ((new ^ check) & ((new & PCI_BASE_ADDRESS_SPACE_IO) ? PCI_BASE_ADDRESS_IO_MASK : PCI_BASE_ADDRESS_MEM_MASK)) { -+ if ((new ^ check) & ((new & PCI_BASE_ADDRESS_SPACE_IO) ? -+ PCI_BASE_ADDRESS_IO_MASK : PCI_BASE_ADDRESS_MEM_MASK)) { - printk(KERN_ERR "PCI: Error while updating region " - "%s/%d (%08x != %08x)\n", pci_name(dev), resource, - new, check); -@@ -145,7 +179,8 @@ - lat = pcibios_max_latency; - else - return; -- printk(KERN_INFO "PCI: Setting latency timer of device %s to %d\n", pci_name(dev), lat); -+ printk(KERN_INFO "PCI: Setting latency timer of device %s to %d\n", -+ pci_name(dev), lat); - pci_write_config_byte(dev, PCI_LATENCY_TIMER, lat); - } - -@@ -153,3 +188,39 @@ - { - pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq); - } -+ -+void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) -+{ -+ unsigned long start = pci_resource_start(dev, bar); -+ unsigned long len = pci_resource_len(dev, bar); -+ unsigned long flags = pci_resource_flags(dev, bar); -+ -+ if (unlikely(!len || !start)) -+ return NULL; -+ if (maxlen && len > maxlen) -+ len = maxlen; -+ -+ /* -+ * Presently the IORESOURCE_MEM case is a bit special, most -+ * SH7751 style PCI controllers have PCI memory at a fixed -+ * location in the address space where no remapping is desired -+ * (typically at 0xfd000000, but is_pci_memaddr() will know -+ * best). With the IORESOURCE_MEM case more care has to be taken -+ * to inhibit page table mapping for legacy cores, but this is -+ * punted off to __ioremap(). -+ * -- PFM. -+ */ -+ if (flags & IORESOURCE_IO) -+ return ioport_map(start, len); -+ if (flags & IORESOURCE_MEM) -+ return ioremap(start, len); -+ -+ return NULL; -+} -+EXPORT_SYMBOL(pci_iomap); -+ -+void pci_iounmap(struct pci_dev *dev, void __iomem *addr) -+{ -+ iounmap(addr); -+} -+EXPORT_SYMBOL(pci_iounmap); -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/superhyway/CVS/Entries linux-2.6.17/arch/sh/drivers/superhyway/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/drivers/superhyway/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/superhyway/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,3 @@ -+/Makefile/1.1/Thu Mar 17 07:43:07 2005// -+/ops-sh4-202.c/1.3/Tue Jan 3 22:35:52 2006// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/superhyway/CVS/Repository linux-2.6.17/arch/sh/drivers/superhyway/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/drivers/superhyway/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/superhyway/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/drivers/superhyway -diff -ruN linux-2.6.17-vanilla/arch/sh/drivers/superhyway/CVS/Root linux-2.6.17/arch/sh/drivers/superhyway/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/drivers/superhyway/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/drivers/superhyway/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/.cvsignore linux-2.6.17/arch/sh/kernel/.cvsignore ---- linux-2.6.17-vanilla/arch/sh/kernel/.cvsignore 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/.cvsignore 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+vmlinux.lds.s -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/CVS/Entries linux-2.6.17/arch/sh/kernel/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/kernel/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,34 @@ -+/.cvsignore/1.1/Wed May 12 13:51:13 2004/-ko/ -+/Makefile/1.19/Sun Jan 29 17:46:23 2006// -+/apm.c/1.2/Mon Jan 30 15:57:20 2006// -+/asm-offsets.c/1.1/Mon Jun 28 22:03:37 2004/-ko/ -+/cf-enabler.c/1.6/Wed Jan 4 18:03:38 2006/-ko/ -+/cpufreq.c/1.7/Tue Jan 3 22:35:53 2006/-ko/ -+/early_printk.c/1.4/Sat Aug 13 15:49:28 2005// -+/entry.S/1.46/Sun Jan 29 17:46:23 2006/-ko/ -+/head.S/1.9/Thu Oct 20 22:51:38 2005/-ko/ -+/init_task.c/1.7/Sun Aug 15 16:59:26 2004// -+/io.c/1.7/Wed Nov 23 15:47:38 2005/-ko/ -+/io_generic.c/1.6/Tue Jan 3 22:51:47 2006/-ko/ -+/kgdb_jmp.S/1.2/Fri Nov 1 17:19:24 2002// -+/kgdb_stub.c/1.5/Sun Feb 5 12:27:59 2006// -+/machine_kexec.c/1.1/Mon Sep 19 19:20:56 2005/-ko/ -+/module.c/1.5/Sun Feb 22 23:08:43 2004/-ko/ -+/pm.c/1.2/Mon Jan 30 15:57:20 2006// -+/ptrace.c/1.22/Mon Mar 27 21:06:13 2006// -+/relocate_kernel.S/1.1/Mon Sep 19 19:20:56 2005/-ko/ -+/semaphore.c/1.4/Thu Mar 17 07:40:18 2005/-ko/ -+/sh_bios.c/1.3/Tue Jun 15 18:40:42 2004/-ko/ -+/signal.c/1.30/Fri Oct 28 13:12:48 2005/-ko/ -+/smp.c/1.10/Mon Mar 27 21:06:14 2006/-ko/ -+/sys_sh.c/1.11/Sat Dec 31 11:30:47 2005// -+/vmlinux.lds.S/1.6/Thu Mar 17 07:49:06 2005/-ko/ -+D/cpu//// -+D/timers//// -+/irq.c/1.28/Wed Jul 5 14:50:39 2006/-ko/ -+/process.c/1.42/Fri Jul 7 10:15:14 2006/-ko/ -+/syscalls.S/1.4/Fri Jul 7 10:15:14 2006/-ko/ -+/setup.c/1.53/Sat Jul 8 20:16:09 2006/-ko/ -+/time.c/1.38/Sat Jul 8 20:16:09 2006/-ko/ -+/sh_ksyms.c/1.26/Wed Jul 12 16:51:54 2006// -+/traps.c/1.21/Wed Jul 12 16:51:54 2006/-ko/ -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/CVS/Repository linux-2.6.17/arch/sh/kernel/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/kernel/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/kernel -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/CVS/Root linux-2.6.17/arch/sh/kernel/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/kernel/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/Makefile linux-2.6.17/arch/sh/kernel/Makefile ---- linux-2.6.17-vanilla/arch/sh/kernel/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/Makefile 2006-07-12 16:54:22.000000000 +0000 -@@ -6,7 +6,7 @@ - - obj-y := process.o signal.o entry.o traps.o irq.o \ - ptrace.o setup.o time.o sys_sh.o semaphore.o \ -- io.o io_generic.o sh_ksyms.o -+ io.o io_generic.o sh_ksyms.o syscalls.o - - obj-y += cpu/ timers/ - -@@ -18,3 +18,5 @@ - obj-$(CONFIG_MODULES) += module.o - obj-$(CONFIG_EARLY_PRINTK) += early_printk.o - obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o -+obj-$(CONFIG_APM) += apm.o -+obj-$(CONFIG_PM) += pm.o -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/apm.c linux-2.6.17/arch/sh/kernel/apm.c ---- linux-2.6.17-vanilla/arch/sh/kernel/apm.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/apm.c 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1,539 @@ -+/* -+ * bios-less APM driver for hp680 -+ * -+ * Copyright 2005 (c) Andriy Skulysh <askulysh@gmail.com> -+ * -+ * based on ARM APM driver by -+ * Jamey Hicks <jamey@crl.dec.com> -+ * -+ * adapted from the APM BIOS driver for Linux by -+ * Stephen Rothwell (sfr@linuxcare.com) -+ * -+ * APM 1.2 Reference: -+ * Intel Corporation, Microsoft Corporation. Advanced Power Management -+ * (APM) BIOS Interface Specification, Revision 1.2, February 1996. -+ * -+ * [This document is available from Microsoft at: -+ * http://www.microsoft.com/hwdev/busbios/amp_12.htm] -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/poll.h> -+#include <linux/timer.h> -+#include <linux/slab.h> -+#include <linux/proc_fs.h> -+#include <linux/miscdevice.h> -+#include <linux/apm_bios.h> -+#include <linux/pm.h> -+#include <linux/pm_legacy.h> -+#include <asm/apm.h> -+ -+#define MODNAME "apm" -+ -+/* -+ * The apm_bios device is one of the misc char devices. -+ * This is its minor number. -+ */ -+#define APM_MINOR_DEV 134 -+ -+/* -+ * Maximum number of events stored -+ */ -+#define APM_MAX_EVENTS 16 -+ -+struct apm_queue { -+ unsigned int event_head; -+ unsigned int event_tail; -+ apm_event_t events[APM_MAX_EVENTS]; -+}; -+ -+/* -+ * The per-file APM data -+ */ -+struct apm_user { -+ struct list_head list; -+ -+ unsigned int suser: 1; -+ unsigned int writer: 1; -+ unsigned int reader: 1; -+ -+ int suspend_result; -+ unsigned int suspend_state; -+#define SUSPEND_NONE 0 /* no suspend pending */ -+#define SUSPEND_PENDING 1 /* suspend pending read */ -+#define SUSPEND_READ 2 /* suspend read, pending ack */ -+#define SUSPEND_ACKED 3 /* suspend acked */ -+#define SUSPEND_DONE 4 /* suspend completed */ -+ -+ struct apm_queue queue; -+}; -+ -+/* -+ * Local variables -+ */ -+static int suspends_pending; -+ -+static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue); -+static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue); -+ -+/* -+ * This is a list of everyone who has opened /dev/apm_bios -+ */ -+static DECLARE_RWSEM(user_list_lock); -+static LIST_HEAD(apm_user_list); -+ -+/* -+ * kapmd info. kapmd provides us a process context to handle -+ * "APM" events within - specifically necessary if we're going -+ * to be suspending the system. -+ */ -+static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait); -+static DECLARE_COMPLETION(kapmd_exit); -+static DEFINE_SPINLOCK(kapmd_queue_lock); -+static struct apm_queue kapmd_queue; -+ -+int apm_suspended; -+EXPORT_SYMBOL(apm_suspended); -+ -+/* Platform-specific apm_read_proc(). */ -+int (*apm_get_info)(char *buf, char **start, off_t fpos, int length); -+EXPORT_SYMBOL(apm_get_info); -+ -+/* -+ * APM event queue management. -+ */ -+static inline int queue_empty(struct apm_queue *q) -+{ -+ return q->event_head == q->event_tail; -+} -+ -+static inline apm_event_t queue_get_event(struct apm_queue *q) -+{ -+ q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS; -+ return q->events[q->event_tail]; -+} -+ -+static void queue_add_event(struct apm_queue *q, apm_event_t event) -+{ -+ q->event_head = (q->event_head + 1) % APM_MAX_EVENTS; -+ if (q->event_head == q->event_tail) { -+ static int notified; -+ -+ if (notified++ == 0) -+ printk(KERN_ERR "apm: an event queue overflowed\n"); -+ -+ q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS; -+ } -+ q->events[q->event_head] = event; -+} -+ -+static void queue_event_one_user(struct apm_user *as, apm_event_t event) -+{ -+ if (as->suser && as->writer) { -+ switch (event) { -+ case APM_SYS_SUSPEND: -+ case APM_USER_SUSPEND: -+ /* -+ * If this user already has a suspend pending, -+ * don't queue another one. -+ */ -+ if (as->suspend_state != SUSPEND_NONE) -+ return; -+ -+ as->suspend_state = SUSPEND_PENDING; -+ suspends_pending++; -+ break; -+ } -+ } -+ queue_add_event(&as->queue, event); -+} -+ -+static void queue_event(apm_event_t event, struct apm_user *sender) -+{ -+ struct apm_user *as; -+ -+ down_read(&user_list_lock); -+ -+ list_for_each_entry(as, &apm_user_list, list) -+ if (as != sender && as->reader) -+ queue_event_one_user(as, event); -+ -+ up_read(&user_list_lock); -+ wake_up_interruptible(&apm_waitqueue); -+} -+ -+/** -+ * apm_queue_event - queue an APM event for kapmd -+ * @event: APM event -+ * -+ * Queue an APM event for kapmd to process and ultimately take the -+ * appropriate action. Only a subset of events are handled: -+ * %APM_LOW_BATTERY -+ * %APM_POWER_STATUS_CHANGE -+ * %APM_USER_SUSPEND -+ * %APM_SYS_SUSPEND -+ * %APM_CRITICAL_SUSPEND -+ */ -+void apm_queue_event(apm_event_t event) -+{ -+ spin_lock_irq(&kapmd_queue_lock); -+ queue_add_event(&kapmd_queue, event); -+ spin_unlock_irq(&kapmd_queue_lock); -+ -+ wake_up_interruptible(&kapmd_wait); -+} -+EXPORT_SYMBOL(apm_queue_event); -+ -+static void apm_suspend(void) -+{ -+ struct apm_user *as; -+ int err; -+ -+ apm_suspended = 1; -+ err = pm_suspend(PM_SUSPEND_MEM); -+ -+ /* -+ * Anyone on the APM queues will think we're still suspended. -+ * Send a message so everyone knows we're now awake again. -+ */ -+ queue_event(APM_NORMAL_RESUME, NULL); -+ -+ /* -+ * Finally, wake up anyone who is sleeping on the suspend. -+ */ -+ down_read(&user_list_lock); -+ list_for_each_entry(as, &apm_user_list, list) { -+ as->suspend_result = err; -+ as->suspend_state = SUSPEND_DONE; -+ } -+ up_read(&user_list_lock); -+ -+ wake_up(&apm_suspend_waitqueue); -+ apm_suspended = 0; -+} -+ -+static ssize_t apm_read(struct file *fp, char __user *buf, -+ size_t count, loff_t *ppos) -+{ -+ struct apm_user *as = fp->private_data; -+ apm_event_t event; -+ int i = count, ret = 0; -+ -+ if (count < sizeof(apm_event_t)) -+ return -EINVAL; -+ -+ if (queue_empty(&as->queue) && fp->f_flags & O_NONBLOCK) -+ return -EAGAIN; -+ -+ wait_event_interruptible(apm_waitqueue, !queue_empty(&as->queue)); -+ -+ while ((i >= sizeof(event)) && !queue_empty(&as->queue)) { -+ event = queue_get_event(&as->queue); -+ -+ ret = -EFAULT; -+ if (copy_to_user(buf, &event, sizeof(event))) -+ break; -+ -+ if (event == APM_SYS_SUSPEND || event == APM_USER_SUSPEND) -+ as->suspend_state = SUSPEND_READ; -+ -+ buf += sizeof(event); -+ i -= sizeof(event); -+ } -+ -+ if (i < count) -+ ret = count - i; -+ -+ return ret; -+} -+ -+static unsigned int apm_poll(struct file *fp, poll_table * wait) -+{ -+ struct apm_user *as = fp->private_data; -+ -+ poll_wait(fp, &apm_waitqueue, wait); -+ return queue_empty(&as->queue) ? 0 : POLLIN | POLLRDNORM; -+} -+ -+/* -+ * apm_ioctl - handle APM ioctl -+ * -+ * APM_IOC_SUSPEND -+ * This IOCTL is overloaded, and performs two functions. It is used to: -+ * - initiate a suspend -+ * - acknowledge a suspend read from /dev/apm_bios. -+ * Only when everyone who has opened /dev/apm_bios with write permission -+ * has acknowledge does the actual suspend happen. -+ */ -+static int -+apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg) -+{ -+ struct apm_user *as = filp->private_data; -+ unsigned long flags; -+ int err = -EINVAL; -+ -+ if (!as->suser || !as->writer) -+ return -EPERM; -+ -+ switch (cmd) { -+ case APM_IOC_SUSPEND: -+ as->suspend_result = -EINTR; -+ -+ if (as->suspend_state == SUSPEND_READ) { -+ /* -+ * If we read a suspend command from /dev/apm_bios, -+ * then the corresponding APM_IOC_SUSPEND ioctl is -+ * interpreted as an acknowledge. -+ */ -+ as->suspend_state = SUSPEND_ACKED; -+ suspends_pending--; -+ } else { -+ /* -+ * Otherwise it is a request to suspend the system. -+ * Queue an event for all readers, and expect an -+ * acknowledge from all writers who haven't already -+ * acknowledged. -+ */ -+ queue_event(APM_USER_SUSPEND, as); -+ } -+ -+ /* -+ * If there are no further acknowledges required, suspend -+ * the system. -+ */ -+ if (suspends_pending == 0) -+ apm_suspend(); -+ -+ /* -+ * Wait for the suspend/resume to complete. If there are -+ * pending acknowledges, we wait here for them. -+ * -+ * Note that we need to ensure that the PM subsystem does -+ * not kick us out of the wait when it suspends the threads. -+ */ -+ flags = current->flags; -+ current->flags |= PF_NOFREEZE; -+ -+ /* -+ * Note: do not allow a thread which is acking the suspend -+ * to escape until the resume is complete. -+ */ -+ if (as->suspend_state == SUSPEND_ACKED) -+ wait_event(apm_suspend_waitqueue, -+ as->suspend_state == SUSPEND_DONE); -+ else -+ wait_event_interruptible(apm_suspend_waitqueue, -+ as->suspend_state == SUSPEND_DONE); -+ -+ current->flags = flags; -+ err = as->suspend_result; -+ as->suspend_state = SUSPEND_NONE; -+ break; -+ } -+ -+ return err; -+} -+ -+static int apm_release(struct inode * inode, struct file * filp) -+{ -+ struct apm_user *as = filp->private_data; -+ filp->private_data = NULL; -+ -+ down_write(&user_list_lock); -+ list_del(&as->list); -+ up_write(&user_list_lock); -+ -+ /* -+ * We are now unhooked from the chain. As far as new -+ * events are concerned, we no longer exist. However, we -+ * need to balance suspends_pending, which means the -+ * possibility of sleeping. -+ */ -+ if (as->suspend_state != SUSPEND_NONE) { -+ suspends_pending -= 1; -+ if (suspends_pending == 0) -+ apm_suspend(); -+ } -+ -+ kfree(as); -+ return 0; -+} -+ -+static int apm_open(struct inode * inode, struct file * filp) -+{ -+ struct apm_user *as; -+ -+ as = kzalloc(sizeof(*as), GFP_KERNEL); -+ if (as) { -+ /* -+ * XXX - this is a tiny bit broken, when we consider BSD -+ * process accounting. If the device is opened by root, we -+ * instantly flag that we used superuser privs. Who knows, -+ * we might close the device immediately without doing a -+ * privileged operation -- cevans -+ */ -+ as->suser = capable(CAP_SYS_ADMIN); -+ as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE; -+ as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ; -+ -+ down_write(&user_list_lock); -+ list_add(&as->list, &apm_user_list); -+ up_write(&user_list_lock); -+ -+ filp->private_data = as; -+ } -+ -+ return as ? 0 : -ENOMEM; -+} -+ -+static struct file_operations apm_bios_fops = { -+ .owner = THIS_MODULE, -+ .read = apm_read, -+ .poll = apm_poll, -+ .ioctl = apm_ioctl, -+ .open = apm_open, -+ .release = apm_release, -+}; -+ -+static struct miscdevice apm_device = { -+ .minor = APM_MINOR_DEV, -+ .name = "apm_bios", -+ .fops = &apm_bios_fops -+}; -+ -+ -+#ifdef CONFIG_PROC_FS -+/* -+ * Arguments, with symbols from linux/apm_bios.h. -+ * -+ * 0) Linux driver version (this will change if format changes) -+ * 1) APM BIOS Version. Usually 1.0, 1.1 or 1.2. -+ * 2) APM flags from APM Installation Check (0x00): -+ * bit 0: APM_16_BIT_SUPPORT -+ * bit 1: APM_32_BIT_SUPPORT -+ * bit 2: APM_IDLE_SLOWS_CLOCK -+ * bit 3: APM_BIOS_DISABLED -+ * bit 4: APM_BIOS_DISENGAGED -+ * 3) AC line status -+ * 0x00: Off-line -+ * 0x01: On-line -+ * 0x02: On backup power (BIOS >= 1.1 only) -+ * 0xff: Unknown -+ * 4) Battery status -+ * 0x00: High -+ * 0x01: Low -+ * 0x02: Critical -+ * 0x03: Charging -+ * 0x04: Selected battery not present (BIOS >= 1.2 only) -+ * 0xff: Unknown -+ * 5) Battery flag -+ * bit 0: High -+ * bit 1: Low -+ * bit 2: Critical -+ * bit 3: Charging -+ * bit 7: No system battery -+ * 0xff: Unknown -+ * 6) Remaining battery life (percentage of charge): -+ * 0-100: valid -+ * -1: Unknown -+ * 7) Remaining battery life (time units): -+ * Number of remaining minutes or seconds -+ * -1: Unknown -+ * 8) min = minutes; sec = seconds -+ */ -+static int apm_read_proc(char *buf, char **start, off_t fpos, int length) -+{ -+ if (likely(apm_get_info)) -+ return apm_get_info(buf, start, fpos, length); -+ -+ return -EINVAL; -+} -+#endif -+ -+static int kapmd(void *arg) -+{ -+ daemonize("kapmd"); -+ current->flags |= PF_NOFREEZE; -+ -+ do { -+ apm_event_t event; -+ -+ wait_event_interruptible(kapmd_wait, -+ !queue_empty(&kapmd_queue) || !pm_active); -+ -+ if (!pm_active) -+ break; -+ -+ spin_lock_irq(&kapmd_queue_lock); -+ event = 0; -+ if (!queue_empty(&kapmd_queue)) -+ event = queue_get_event(&kapmd_queue); -+ spin_unlock_irq(&kapmd_queue_lock); -+ -+ switch (event) { -+ case 0: -+ break; -+ -+ case APM_LOW_BATTERY: -+ case APM_POWER_STATUS_CHANGE: -+ queue_event(event, NULL); -+ break; -+ -+ case APM_USER_SUSPEND: -+ case APM_SYS_SUSPEND: -+ queue_event(event, NULL); -+ if (suspends_pending == 0) -+ apm_suspend(); -+ break; -+ -+ case APM_CRITICAL_SUSPEND: -+ apm_suspend(); -+ break; -+ } -+ } while (1); -+ -+ complete_and_exit(&kapmd_exit, 0); -+} -+ -+static int __init apm_init(void) -+{ -+ int ret; -+ -+ pm_active = 1; -+ -+ ret = kernel_thread(kapmd, NULL, CLONE_KERNEL); -+ if (unlikely(ret < 0)) { -+ pm_active = 0; -+ return ret; -+ } -+ -+ create_proc_info_entry("apm", 0, NULL, apm_read_proc); -+ -+ ret = misc_register(&apm_device); -+ if (unlikely(ret != 0)) { -+ remove_proc_entry("apm", NULL); -+ -+ pm_active = 0; -+ wake_up(&kapmd_wait); -+ wait_for_completion(&kapmd_exit); -+ } -+ -+ return ret; -+} -+ -+static void __exit apm_exit(void) -+{ -+ misc_deregister(&apm_device); -+ remove_proc_entry("apm", NULL); -+ -+ pm_active = 0; -+ wake_up(&kapmd_wait); -+ wait_for_completion(&kapmd_exit); -+} -+ -+module_init(apm_init); -+module_exit(apm_exit); -+ -+MODULE_AUTHOR("Stephen Rothwell, Andriy Skulysh"); -+MODULE_DESCRIPTION("Advanced Power Management"); -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cf-enabler.c linux-2.6.17/arch/sh/kernel/cf-enabler.c ---- linux-2.6.17-vanilla/arch/sh/kernel/cf-enabler.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cf-enabler.c 2006-07-12 16:54:22.000000000 +0000 -@@ -11,7 +11,8 @@ - - #include <linux/config.h> - #include <linux/init.h> -- -+#include <linux/mm.h> -+#include <linux/vmalloc.h> - #include <asm/io.h> - #include <asm/irq.h> - -@@ -33,8 +34,6 @@ - /* SH4 can't access PCMCIA interface through P2 area. - * we must remap it with appropreate attribute bit of the page set. - * this part is based on Greg Banks' hd64465_ss.c implementation - Masahiro Abe */ --#include <linux/mm.h> --#include <linux/vmalloc.h> - - #if defined(CONFIG_CF_AREA6) - #define slot_no 0 -@@ -42,9 +41,6 @@ - #define slot_no 1 - #endif - --/* defined in mm/ioremap.c */ --extern void * p3_ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags); -- - /* use this pointer to access to directly connected compact flash io area*/ - void *cf_io_base; - -@@ -63,7 +59,7 @@ - return -ENOMEM; - } - /* printk("p3_ioremap(paddr=0x%08lx, psize=0x%08lx, prot=0x%08lx)=0x%08lx\n", -- paddrbase, psize, prot.pgprot, cf_io_base);*/ -+ paddrbase, psize, prot.pgprot, cf_io_base);*/ - - /* XXX : do we need attribute and common-memory area also? */ - -@@ -88,7 +84,7 @@ - } - - #if defined(CONFIG_SH_SOLUTION_ENGINE) --#include <asm/se/se.h> -+#include <asm/se.h> - - /* - * SolutionEngine -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/CVS/Entries linux-2.6.17/arch/sh/kernel/cpu/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,10 @@ -+/Makefile/1.10/Sat Jan 28 01:22:16 2006/-ko/ -+/adc.c/1.2/Sun Aug 15 16:59:26 2004/-ko/ -+/clock.c/1.6/Sat Jan 28 01:27:00 2006/-ko/ -+/ubc.S/1.2/Sun May 4 19:29:53 2003/-ko/ -+D/irq//// -+D/sh2//// -+D/sh3//// -+D/sh4//// -+/init.c/1.11/Wed Jul 5 14:50:40 2006/-ko/ -+/rtc.c/1.5/Wed Jul 5 14:50:40 2006/-ko/ -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/CVS/Repository linux-2.6.17/arch/sh/kernel/cpu/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/kernel/cpu -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/CVS/Root linux-2.6.17/arch/sh/kernel/cpu/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/clock.c linux-2.6.17/arch/sh/kernel/cpu/clock.c ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/clock.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/clock.c 2006-07-12 16:54:22.000000000 +0000 -@@ -225,7 +225,7 @@ - { - int i, ret = 0; - -- BUG_ON(unlikely(!master_clk.rate)); -+ BUG_ON(!master_clk.rate); - - for (i = 0; i < ARRAY_SIZE(onchip_clocks); i++) { - struct clk *clk = onchip_clocks[i]; -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/init.c linux-2.6.17/arch/sh/kernel/cpu/init.c ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/init.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/init.c 2006-07-12 16:54:22.000000000 +0000 -@@ -4,6 +4,7 @@ - * CPU init code - * - * Copyright (C) 2002, 2003 Paul Mundt -+ * Copyright (C) 2003 Richard Curnow - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive -@@ -51,7 +52,15 @@ - ccr = ctrl_inl(CCR); - - /* -- * If the cache is already enabled .. flush it. -+ * At this point we don't know whether the cache is enabled or not - a -+ * bootloader may have enabled it. There are at least 2 things that -+ * could be dirty in the cache at this point: -+ * 1. kernel command line set up by boot loader -+ * 2. spilled registers from the prolog of this function -+ * => before re-initialising the cache, we must do a purge of the whole -+ * cache out to memory for safety. As long as nothing is spilled -+ * during the loop to lines that have already been done, this is safe. -+ * - RPC - */ - if (ccr & CCR_CACHE_ENABLE) { - unsigned long ways, waysize, addrstart; -@@ -98,6 +107,8 @@ - /* Force EMODE if possible */ - if (cpu_data->dcache.ways > 1) - flags |= CCR_CACHE_EMODE; -+ else -+ flags &= ~CCR_CACHE_EMODE; - #endif - - #ifdef CONFIG_SH_WRITETHROUGH -@@ -112,6 +123,9 @@ - /* Turn on OCRAM -- halve the OC */ - flags |= CCR_CACHE_ORA; - cpu_data->dcache.sets >>= 1; -+ -+ cpu_data->dcache.way_size = cpu_data->dcache.sets * -+ cpu_data->dcache.linesz; - #endif - - ctrl_outl(flags, CCR); -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/irq/CVS/Entries linux-2.6.17/arch/sh/kernel/cpu/irq/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/irq/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/irq/CVS/Entries 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1,6 @@ -+/Makefile/1.1/Sat Jan 7 20:16:39 2006/-ko/ -+/imask.c/1.1/Sat Jan 7 20:16:39 2006/-ko/ -+/ipr.c/1.2/Sun Jan 8 12:21:42 2006/-ko/ -+/pint.c/1.1/Sat Jan 7 20:16:39 2006/-ko/ -+/intc2.c/1.2/Wed Jul 12 16:51:54 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/irq/CVS/Repository linux-2.6.17/arch/sh/kernel/cpu/irq/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/irq/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/irq/CVS/Repository 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/kernel/cpu/irq -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/irq/CVS/Root linux-2.6.17/arch/sh/kernel/cpu/irq/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/irq/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/irq/CVS/Root 2006-07-12 16:54:21.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/irq/intc2.c linux-2.6.17/arch/sh/kernel/cpu/irq/intc2.c ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/irq/intc2.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/irq/intc2.c 2006-07-12 16:54:21.000000000 +0000 -@@ -241,9 +241,9 @@ - /* 110-111 reserved/unused */ - #elif defined(CONFIG_CPU_SUBTYPE_SH7780) - { TIMER_IRQ, 0, 24, 0, INTC_TMU0_MSK, 2}, --#ifdef CONFIG_SH_RTC -- { RTC_IRQ, 4, 0, 0, INTC_RTC_MSK, TIMER_PRIORITY }, --#endif -+ { 21, 1, 0, 0, INTC_RTC_MSK, TIMER_PRIORITY }, -+ { 22, 1, 1, 0, INTC_RTC_MSK, TIMER_PRIORITY }, -+ { 23, 1, 2, 0, INTC_RTC_MSK, TIMER_PRIORITY }, - { SCIF0_ERI_IRQ, 8, 24, 0, INTC_SCIF0_MSK, SCIF0_PRIORITY }, - { SCIF0_RXI_IRQ, 8, 24, 0, INTC_SCIF0_MSK, SCIF0_PRIORITY }, - { SCIF0_BRI_IRQ, 8, 24, 0, INTC_SCIF0_MSK, SCIF0_PRIORITY }, -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh2/CVS/Entries linux-2.6.17/arch/sh/kernel/cpu/sh2/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh2/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh2/CVS/Entries 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1,3 @@ -+/Makefile/1.3/Thu Jul 8 13:52:22 2004/-ko/ -+/probe.c/1.1/Thu Jul 8 13:52:22 2004/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh2/CVS/Repository linux-2.6.17/arch/sh/kernel/cpu/sh2/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh2/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh2/CVS/Repository 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/kernel/cpu/sh2 -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh2/CVS/Root linux-2.6.17/arch/sh/kernel/cpu/sh2/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh2/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh2/CVS/Root 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh3/CVS/Entries linux-2.6.17/arch/sh/kernel/cpu/sh3/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh3/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh3/CVS/Entries 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1,8 @@ -+/Makefile/1.6/Fri Jun 10 15:51:47 2005/-ko/ -+/clock-sh3.c/1.1/Sat Mar 26 20:25:36 2005/-ko/ -+/clock-sh7300.c/1.2/Tue May 31 14:06:34 2005/-ko/ -+/clock-sh7705.c/1.1/Sat Mar 26 20:25:36 2005/-ko/ -+/clock-sh7709.c/1.2/Wed Sep 28 11:32:44 2005// -+/ex.S/1.4/Sun Jun 20 20:27:22 2004/-ko/ -+/probe.c/1.2/Mon Aug 30 12:55:31 2004/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh3/CVS/Repository linux-2.6.17/arch/sh/kernel/cpu/sh3/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh3/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh3/CVS/Repository 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/kernel/cpu/sh3 -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh3/CVS/Root linux-2.6.17/arch/sh/kernel/cpu/sh3/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh3/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh3/CVS/Root 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh3/clock-sh7709.c linux-2.6.17/arch/sh/kernel/cpu/sh3/clock-sh7709.c ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh3/clock-sh7709.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh3/clock-sh7709.c 2006-07-12 16:54:22.000000000 +0000 -@@ -4,7 +4,7 @@ - * SH7709 support for the clock framework - * - * Copyright (C) 2005 Andriy Skulysh -- * -+ * - * Based on arch/sh/kernel/cpu/sh3/clock-sh7705.c - * Copyright (C) 2005 Paul Mundt - * -@@ -59,7 +59,7 @@ - static void bus_clk_recalc(struct clk *clk) - { - int frqcr = ctrl_inw(FRQCR); -- int idx = (frqcr & 0x0080) ? -+ int idx = (frqcr & 0x0080) ? - ((frqcr & 0x8000) >> 13) | ((frqcr & 0x0030) >> 4) : 1; - - clk->rate = clk->parent->rate * stc_multipliers[idx]; -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/CVS/Entries linux-2.6.17/arch/sh/kernel/cpu/sh4/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh4/CVS/Entries 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1,12 @@ -+/clock-sh4-202.c/1.1/Sat Mar 26 20:25:36 2005/-ko/ -+/clock-sh4.c/1.1/Sat Mar 26 20:25:36 2005/-ko/ -+/clock-sh73180.c/1.1/Sat Mar 26 20:25:36 2005/-ko/ -+/clock-sh7770.c/1.1/Sun Aug 21 23:47:31 2005/-ko/ -+/clock-sh7780.c/1.1/Sun Aug 21 23:47:31 2005/-ko/ -+/ex.S/1.3/Sun Aug 21 23:47:31 2005// -+/fpu.c/1.5/Wed Mar 2 13:02:56 2005/-ko/ -+/probe.c/1.6/Sat Oct 8 22:08:40 2005/-ko/ -+/sq.c/1.15/Sat Jan 7 17:33:56 2006// -+/Makefile/1.13/Wed Jul 12 16:51:55 2006/-ko/ -+/setup-sh7780.c/1.1/Tue Jul 11 07:57:40 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/CVS/Repository linux-2.6.17/arch/sh/kernel/cpu/sh4/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh4/CVS/Repository 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/kernel/cpu/sh4 -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/CVS/Root linux-2.6.17/arch/sh/kernel/cpu/sh4/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh4/CVS/Root 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/Makefile linux-2.6.17/arch/sh/kernel/cpu/sh4/Makefile ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh4/Makefile 2006-07-12 16:54:22.000000000 +0000 -@@ -4,9 +4,12 @@ - - obj-y := ex.o probe.o - --obj-$(CONFIG_SH_FPU) += fpu.o -+obj-$(CONFIG_SH_FPU) += fpu.o - obj-$(CONFIG_SH_STORE_QUEUES) += sq.o - -+# CPU subtype setup -+obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o -+ - # Primary on-chip clocks (common) - clock-$(CONFIG_CPU_SH4) := clock-sh4.o - clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/ex.S linux-2.6.17/arch/sh/kernel/cpu/sh4/ex.S ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/ex.S 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh4/ex.S 2006-07-12 16:54:22.000000000 +0000 -@@ -39,9 +39,9 @@ - #endif - #if defined(CONFIG_SH_FPU) - .long do_fpu_error /* 120 */ --#else -+#else - .long exception_error /* 120 */ --#endif -+#endif - .long exception_error /* 140 */ - .long system_call ! Unconditional Trap /* 160 */ - .long exception_error ! reserved_instruction (filled by trap_init) /* 180 */ -@@ -73,6 +73,7 @@ - .long do_IRQ ! 1110 - .long exception_error - ! Internal hardware -+#ifndef CONFIG_CPU_SUBTYPE_SH7780 - .long do_IRQ ! TMU0 tuni0 /* 400 */ - .long do_IRQ ! TMU1 tuni1 - .long do_IRQ ! TMU2 tuni2 -@@ -129,13 +130,13 @@ - .long exception_error ! 46 - .long exception_error ! 47 - #endif --#if defined(CONFIG_SH_FPU) -+#if defined(CONFIG_SH_FPU) - .long do_fpu_state_restore ! 48 /* 800 */ - .long do_fpu_state_restore ! 49 /* 820 */ --#else -+#else - .long exception_error - .long exception_error --#endif -+#endif - #if defined(CONFIG_CPU_SUBTYPE_SH7751) - .long exception_error /* 840 */ - .long exception_error -@@ -380,5 +381,168 @@ - .long exception_error ! 141 0x13a0 - .long exception_error ! 142 0x13c0 - .long exception_error ! 143 0x13e0 -+#elif defined(CONFIG_CPU_SUBTYPE_SH7770) -+ .long do_IRQ ! 50 0x840 -+ .long do_IRQ ! 51 0x860 -+ .long do_IRQ ! 52 0x880 -+ .long do_IRQ ! 53 0x8a0 -+ .long do_IRQ ! 54 0x8c0 -+ .long do_IRQ ! 55 0x8e0 -+ .long do_IRQ ! 56 0x900 -+ .long do_IRQ ! 57 0x920 -+ .long do_IRQ ! 58 0x940 -+ .long do_IRQ ! 59 0x960 -+ .long do_IRQ ! 60 0x980 -+ .long do_IRQ ! 61 0x9a0 -+ .long do_IRQ ! 62 0x9c0 -+ .long do_IRQ ! 63 0x9e0 -+ .long do_IRQ ! 64 0xa00 -+ .long do_IRQ ! 65 0xa20 -+ .long do_IRQ ! 66 0xa4d -+ .long do_IRQ ! 67 0xa60 -+ .long do_IRQ ! 68 0xa80 -+ .long do_IRQ ! 69 0xaa0 -+ .long do_IRQ ! 70 0xac0 -+ .long do_IRQ ! 71 0xae0 -+ .long do_IRQ ! 72 0xb00 -+ .long do_IRQ ! 73 0xb20 -+ .long do_IRQ ! 74 0xb40 -+ .long do_IRQ ! 75 0xb60 -+ .long do_IRQ ! 76 0xb80 -+ .long do_IRQ ! 77 0xba0 -+ .long do_IRQ ! 78 0xbc0 -+ .long do_IRQ ! 79 0xbe0 -+ .long do_IRQ ! 80 0xc00 -+ .long do_IRQ ! 81 0xc20 -+ .long do_IRQ ! 82 0xc40 -+ .long do_IRQ ! 83 0xc60 -+ .long do_IRQ ! 84 0xc80 -+ .long do_IRQ ! 85 0xca0 -+ .long do_IRQ ! 86 0xcc0 -+ .long do_IRQ ! 87 0xce0 -+ .long do_IRQ ! 88 0xd00 -+ .long do_IRQ ! 89 0xd20 -+ .long do_IRQ ! 90 0xd40 -+ .long do_IRQ ! 91 0xd60 -+ .long do_IRQ ! 92 0xd80 -+ .long do_IRQ ! 93 0xda0 -+ .long do_IRQ ! 94 0xdc0 -+ .long do_IRQ ! 95 0xde0 -+ .long do_IRQ ! 96 0xe00 -+ .long do_IRQ ! 97 0xe20 -+ .long do_IRQ ! 98 0xe40 -+ .long do_IRQ ! 99 0xe60 -+ .long do_IRQ ! 100 0xe80 -+ .long do_IRQ ! 101 0xea0 -+ .long do_IRQ ! 102 0xec0 -+ .long do_IRQ ! 103 0xee0 -+ .long do_IRQ ! 104 0xf00 -+ .long do_IRQ ! 105 0xf20 -+ .long do_IRQ ! 106 0xf40 -+ .long do_IRQ ! 107 0xf60 -+ .long do_IRQ ! 108 0xf80 -+#endif -+#else -+ .long exception_error /* 400 */ -+ .long exception_error -+ .long exception_error -+ .long exception_error -+ .long do_IRQ ! RTC ati -+ .long do_IRQ ! pri -+ .long do_IRQ ! cui -+ .long exception_error -+ .long exception_error /* 500 */ -+ .long exception_error -+ .long exception_error -+ .long do_IRQ ! WDT iti /* 560 */ -+ .long do_IRQ ! TMU-ch0 -+ .long do_IRQ ! TMU-ch1 -+ .long do_IRQ ! TMU-ch2 -+ .long do_IRQ ! ticpi2 /* 5E0 */ -+ .long do_IRQ ! 32 Hitachi UDI /* 600 */ -+ .long exception_error -+ .long do_IRQ ! 34 DMAC dmte0 -+ .long do_IRQ ! 35 dmte1 -+ .long do_IRQ ! 36 dmte2 -+ .long do_IRQ ! 37 dmte3 -+ .long do_IRQ ! 38 dmae -+ .long exception_error ! 39 /* 6E0 */ -+ .long do_IRQ ! 40 SCIF-ch0 eri /* 700 */ -+ .long do_IRQ ! 41 rxi -+ .long do_IRQ ! 42 bri -+ .long do_IRQ ! 43 txi -+ .long do_IRQ ! 44 DMAC dmte4 /* 780 */ -+ .long do_IRQ ! 45 dmte5 -+ .long do_IRQ ! 46 dmte6 -+ .long do_IRQ ! 47 dmte7 /* 7E0 */ -+#if defined(CONFIG_SH_FPU) -+ .long do_fpu_state_restore ! 48 /* 800 */ -+ .long do_fpu_state_restore ! 49 /* 820 */ -+#else -+ .long exception_error -+ .long exception_error -+#endif -+ .long exception_error /* 840 */ -+ .long exception_error -+ .long exception_error -+ .long exception_error -+ .long exception_error -+ .long exception_error -+ .long do_IRQ ! 56 CMT /* 900 */ -+ .long exception_error -+ .long exception_error -+ .long exception_error -+ .long do_IRQ ! 60 HAC -+ .long exception_error -+ .long exception_error -+ .long exception_error -+ .long do_IRQ ! PCI serr /* A00 */ -+ .long do_IRQ ! INTA -+ .long do_IRQ ! INTB -+ .long do_IRQ ! INTC -+ .long do_IRQ ! INTD -+ .long do_IRQ ! err -+ .long do_IRQ ! pwd3 -+ .long do_IRQ ! pwd2 -+ .long do_IRQ ! pwd1 /* B00 */ -+ .long do_IRQ ! pwd0 -+ .long exception_error -+ .long exception_error -+ .long do_IRQ ! SCIF-ch1 eri /* B80 */ -+ .long do_IRQ ! rxi -+ .long do_IRQ ! bri -+ .long do_IRQ ! txi -+ .long do_IRQ ! SIOF /* C00 */ -+ .long exception_error -+ .long exception_error -+ .long exception_error -+ .long do_IRQ ! HSPI /* C80 */ -+ .long exception_error -+ .long exception_error -+ .long exception_error -+ .long do_IRQ ! MMCIF fatat /* D00 */ -+ .long do_IRQ ! tran -+ .long do_IRQ ! err -+ .long do_IRQ ! frdy -+ .long do_IRQ ! DMAC dmint8 /* D80 */ -+ .long do_IRQ ! dmint9 -+ .long do_IRQ ! dmint10 -+ .long do_IRQ ! dmint11 -+ .long do_IRQ ! TMU-ch3 /* E00 */ -+ .long do_IRQ ! TMU-ch4 -+ .long do_IRQ ! TMU-ch5 -+ .long exception_error -+ .long do_IRQ ! SSI -+ .long exception_error -+ .long exception_error -+ .long exception_error -+ .long do_IRQ ! FLCTL flste /* F00 */ -+ .long do_IRQ ! fltend -+ .long do_IRQ ! fltrq0 -+ .long do_IRQ ! fltrq1 -+ .long do_IRQ ! GPIO gpioi0 /* F80 */ -+ .long do_IRQ ! gpioi1 -+ .long do_IRQ ! gpioi2 -+ .long do_IRQ ! gpioi3 - #endif - -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/probe.c linux-2.6.17/arch/sh/kernel/cpu/sh4/probe.c ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/probe.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh4/probe.c 2006-07-12 16:54:22.000000000 +0000 -@@ -3,7 +3,7 @@ - * - * CPU Subtype Probing for SH-4. - * -- * Copyright (C) 2001, 2002, 2003, 2004 Paul Mundt -+ * Copyright (C) 2001 - 2005 Paul Mundt - * Copyright (C) 2003 Richard Curnow - * - * This file is subject to the terms and conditions of the GNU General Public -@@ -53,9 +53,6 @@ - cpu_data->dcache.ways = 1; - cpu_data->dcache.linesz = L1_CACHE_BYTES; - -- /* Set the FPU flag, virtually all SH-4's have one */ -- cpu_data->flags |= CPU_HAS_FPU; -- - /* - * Probe the underlying processor version/revision and - * adjust cpu_data setup accordingly. -@@ -63,56 +60,99 @@ - switch (pvr) { - case 0x205: - cpu_data->type = CPU_SH7750; -- cpu_data->flags |= CPU_HAS_P2_FLUSH_BUG | CPU_HAS_PERF_COUNTER; -+ cpu_data->flags |= CPU_HAS_P2_FLUSH_BUG | CPU_HAS_FPU | -+ CPU_HAS_PERF_COUNTER | CPU_HAS_PTEA; - break; - case 0x206: - cpu_data->type = CPU_SH7750S; -- cpu_data->flags |= CPU_HAS_P2_FLUSH_BUG | CPU_HAS_PERF_COUNTER; -+ cpu_data->flags |= CPU_HAS_P2_FLUSH_BUG | CPU_HAS_FPU | -+ CPU_HAS_PERF_COUNTER | CPU_HAS_PTEA; - break; - case 0x1100: - cpu_data->type = CPU_SH7751; -+ cpu_data->flags |= CPU_HAS_FPU | CPU_HAS_PTEA; - break; - case 0x2000: - cpu_data->type = CPU_SH73180; - cpu_data->icache.ways = 4; - cpu_data->dcache.ways = 4; -- cpu_data->flags &= ~CPU_HAS_FPU; -+ -+ /* -+ * XXX: Double check this, none of the SH-4A/SH-4AL processors -+ * should have this, as it's essentially a legacy thing. -+ */ -+ cpu_data->flags |= CPU_HAS_PTEA; -+ break; -+ case 0x2001: -+ case 0x2004: -+ cpu_data->type = CPU_SH7770; -+ cpu_data->icache.ways = 4; -+ cpu_data->dcache.ways = 4; -+ -+ /* Same note as above applies here for PTEA */ -+ cpu_data->flags |= CPU_HAS_FPU | CPU_HAS_PTEA; -+ break; -+ case 0x2006: -+ case 0x200A: -+ if (prr == 0x61) -+ cpu_data->type = CPU_SH7781; -+ else -+ cpu_data->type = CPU_SH7780; -+ -+ cpu_data->icache.ways = 4; -+ cpu_data->dcache.ways = 4; -+ -+ cpu_data->flags |= CPU_HAS_FPU | CPU_HAS_PERF_COUNTER; - break; - case 0x8000: - cpu_data->type = CPU_ST40RA; -+ cpu_data->flags |= CPU_HAS_FPU | CPU_HAS_PTEA; - break; - case 0x8100: - cpu_data->type = CPU_ST40GX1; -+ cpu_data->flags |= CPU_HAS_FPU | CPU_HAS_PTEA; - break; - case 0x700: - cpu_data->type = CPU_SH4_501; - cpu_data->icache.ways = 2; - cpu_data->dcache.ways = 2; -- -- /* No FPU on the SH4-500 series.. */ -- cpu_data->flags &= ~CPU_HAS_FPU; -+ cpu_data->flags |= CPU_HAS_PTEA; - break; - case 0x600: - cpu_data->type = CPU_SH4_202; - cpu_data->icache.ways = 2; - cpu_data->dcache.ways = 2; -+ cpu_data->flags |= CPU_HAS_FPU | CPU_HAS_PTEA; - break; - case 0x500 ... 0x501: - switch (prr) { -- case 0x10: cpu_data->type = CPU_SH7750R; break; -- case 0x11: cpu_data->type = CPU_SH7751R; break; -- case 0x50: cpu_data->type = CPU_SH7760; break; -+ case 0x10: -+ cpu_data->type = CPU_SH7750R; -+ break; -+ case 0x11: -+ cpu_data->type = CPU_SH7751R; -+ break; -+ case 0x50 ... 0x5f: -+ cpu_data->type = CPU_SH7760; -+ break; - } - - cpu_data->icache.ways = 2; - cpu_data->dcache.ways = 2; - -+ cpu_data->flags |= CPU_HAS_FPU | CPU_HAS_PTEA; -+ - break; - default: - cpu_data->type = CPU_SH_NONE; - break; - } - -+#ifdef CONFIG_SH_DIRECT_MAPPED -+ cpu_data->icache.ways = 1; -+ cpu_data->dcache.ways = 1; -+#endif -+ - /* - * On anything that's not a direct-mapped cache, look to the CVR - * for I/D-cache specifics. -@@ -125,6 +165,9 @@ - (cpu_data->icache.way_incr - (1 << 5)); - } - -+ cpu_data->icache.way_size = cpu_data->icache.sets * -+ cpu_data->icache.linesz; -+ - if (cpu_data->dcache.ways > 1) { - size = sizes[(cvr >> 16) & 0xf]; - cpu_data->dcache.way_incr = (size >> 1); -@@ -133,6 +176,9 @@ - (cpu_data->dcache.way_incr - (1 << 5)); - } - -+ cpu_data->dcache.way_size = cpu_data->dcache.sets * -+ cpu_data->dcache.linesz; -+ - return 0; - } - -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/setup-sh7780.c linux-2.6.17/arch/sh/kernel/cpu/sh4/setup-sh7780.c ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/setup-sh7780.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh4/setup-sh7780.c 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1,52 @@ -+/* -+ * SH7780 Setup -+ * -+ * Copyright (C) 2006 Paul Mundt -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/platform_device.h> -+#include <linux/init.h> -+ -+static struct resource rtc_resources[] = { -+ [0] = { -+ .start = 0xffe80000, -+ .end = 0xffe80000 + 0x58 - 1, -+ .flags = IORESOURCE_IO, -+ }, -+ [1] = { -+ /* Period IRQ */ -+ .start = 21, -+ .flags = IORESOURCE_IRQ, -+ }, -+ [2] = { -+ /* Carry IRQ */ -+ .start = 22, -+ .flags = IORESOURCE_IRQ, -+ }, -+ [3] = { -+ /* Alarm IRQ */ -+ .start = 23, -+ .flags = IORESOURCE_IRQ, -+ }, -+}; -+ -+static struct platform_device rtc_device = { -+ .name = "sh-rtc", -+ .id = -1, -+ .num_resources = ARRAY_SIZE(rtc_resources), -+ .resource = rtc_resources, -+}; -+ -+static struct platform_device *sh7780_devices[] __initdata = { -+ &rtc_device, -+}; -+ -+static int __init sh7780_devices_setup(void) -+{ -+ return platform_add_devices(sh7780_devices, -+ ARRAY_SIZE(sh7780_devices)); -+} -+__initcall(sh7780_devices_setup); -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/sq.c linux-2.6.17/arch/sh/kernel/cpu/sh4/sq.c ---- linux-2.6.17-vanilla/arch/sh/kernel/cpu/sh4/sq.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh4/sq.c 2006-07-12 16:54:22.000000000 +0000 -@@ -1,50 +1,53 @@ - /* -- * arch/sh/kernel/cpu/sq.c -+ * arch/sh/kernel/cpu/sh4/sq.c - * - * General management API for SH-4 integrated Store Queues - * -- * Copyright (C) 2001, 2002, 2003, 2004 Paul Mundt -+ * Copyright (C) 2001 - 2006 Paul Mundt - * Copyright (C) 2001, 2002 M. R. Brown - * -- * Some of this code has been adopted directly from the old arch/sh/mm/sq.c -- * hack that was part of the LinuxDC project. For all intents and purposes, -- * this is a completely new interface that really doesn't have much in common -- * with the old zone-based approach at all. In fact, it's only listed here for -- * general completeness. -- * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ - #include <linux/init.h> -+#include <linux/cpu.h> -+#include <linux/bitmap.h> -+#include <linux/sysdev.h> - #include <linux/kernel.h> - #include <linux/module.h> - #include <linux/config.h> - #include <linux/slab.h> --#include <linux/list.h> --#include <linux/proc_fs.h> --#include <linux/miscdevice.h> - #include <linux/vmalloc.h> -- -+#include <linux/mm.h> - #include <asm/io.h> - #include <asm/page.h> --#include <asm/mmu_context.h> -+#include <asm/cacheflush.h> - #include <asm/cpu/sq.h> - --static LIST_HEAD(sq_mapping_list); -+struct sq_mapping; -+ -+struct sq_mapping { -+ const char *name; -+ -+ unsigned long sq_addr; -+ unsigned long addr; -+ unsigned int size; -+ -+ struct sq_mapping *next; -+}; -+ -+static struct sq_mapping *sq_mapping_list; - static DEFINE_SPINLOCK(sq_mapping_lock); -+static kmem_cache_t *sq_cache; -+static unsigned long *sq_bitmap; - --/** -- * sq_flush - Flush (prefetch) the store queue cache -- * @addr: the store queue address to flush -- * -- * Executes a prefetch instruction on the specified store queue cache, -- * so that the cached data is written to physical memory. -- */ --inline void sq_flush(void *addr) --{ -- __asm__ __volatile__ ("pref @%0" : : "r" (addr) : "memory"); --} -+#define store_queue_barrier() \ -+do { \ -+ (void)ctrl_inl(P4SEG_STORE_QUE); \ -+ ctrl_outl(0, P4SEG_STORE_QUE + 0); \ -+ ctrl_outl(0, P4SEG_STORE_QUE + 8); \ -+} while (0); - - /** - * sq_flush_range - Flush (prefetch) a specific SQ range -@@ -57,152 +60,73 @@ - void sq_flush_range(unsigned long start, unsigned int len) - { - volatile unsigned long *sq = (unsigned long *)start; -- unsigned long dummy; - - /* Flush the queues */ - for (len >>= 5; len--; sq += 8) -- sq_flush((void *)sq); -+ prefetchw((void *)sq); - - /* Wait for completion */ -- dummy = ctrl_inl(P4SEG_STORE_QUE); -- -- ctrl_outl(0, P4SEG_STORE_QUE + 0); -- ctrl_outl(0, P4SEG_STORE_QUE + 8); -+ store_queue_barrier(); - } - --static struct sq_mapping *__sq_alloc_mapping(unsigned long virt, unsigned long phys, unsigned long size, const char *name) -+static inline void sq_mapping_list_add(struct sq_mapping *map) - { -- struct sq_mapping *map; -- -- if (virt + size > SQ_ADDRMAX) -- return ERR_PTR(-ENOSPC); -+ struct sq_mapping **p, *tmp; - -- map = kmalloc(sizeof(struct sq_mapping), GFP_KERNEL); -- if (!map) -- return ERR_PTR(-ENOMEM); -+ spin_lock_irq(&sq_mapping_lock); - -- INIT_LIST_HEAD(&map->list); -+ p = &sq_mapping_list; -+ while ((tmp = *p) != NULL) -+ p = &tmp->next; - -- map->sq_addr = virt; -- map->addr = phys; -- map->size = size + 1; -- map->name = name; -+ map->next = tmp; -+ *p = map; - -- list_add(&map->list, &sq_mapping_list); -- -- return map; -+ spin_unlock_irq(&sq_mapping_lock); - } - --static unsigned long __sq_get_next_addr(void) -+static inline void sq_mapping_list_del(struct sq_mapping *map) - { -- if (!list_empty(&sq_mapping_list)) { -- struct list_head *pos, *tmp; -- -- /* -- * Read one off the list head, as it will have the highest -- * mapped allocation. Set the next one up right above it. -- * -- * This is somewhat sub-optimal, as we don't look at -- * gaps between allocations or anything lower then the -- * highest-level allocation. -- * -- * However, in the interest of performance and the general -- * lack of desire to do constant list rebalancing, we don't -- * worry about it. -- */ -- list_for_each_safe(pos, tmp, &sq_mapping_list) { -- struct sq_mapping *entry; -+ struct sq_mapping **p, *tmp; - -- entry = list_entry(pos, typeof(*entry), list); -+ spin_lock_irq(&sq_mapping_lock); - -- return entry->sq_addr + entry->size; -+ for (p = &sq_mapping_list; (tmp = *p); p = &tmp->next) -+ if (tmp == map) { -+ *p = tmp->next; -+ break; - } -- } - -- return P4SEG_STORE_QUE; -+ spin_unlock_irq(&sq_mapping_lock); - } - --/** -- * __sq_remap - Perform a translation from the SQ to a phys addr -- * @map: sq mapping containing phys and store queue addresses. -- * -- * Maps the store queue address specified in the mapping to the physical -- * address specified in the mapping. -- */ --static struct sq_mapping *__sq_remap(struct sq_mapping *map) -+static int __sq_remap(struct sq_mapping *map, unsigned long flags) - { -- unsigned long flags, pteh, ptel; -+#if defined(CONFIG_MMU) - struct vm_struct *vma; -- pgprot_t pgprot; -- -- /* -- * Without an MMU (or with it turned off), this is much more -- * straightforward, as we can just load up each queue's QACR with -- * the physical address appropriately masked. -- */ -- -- ctrl_outl(((map->addr >> 26) << 2) & 0x1c, SQ_QACR0); -- ctrl_outl(((map->addr >> 26) << 2) & 0x1c, SQ_QACR1); -- --#ifdef CONFIG_MMU -- /* -- * With an MMU on the other hand, things are slightly more involved. -- * Namely, we have to have a direct mapping between the SQ addr and -- * the associated physical address in the UTLB by way of setting up -- * a virt<->phys translation by hand. We do this by simply specifying -- * the SQ addr in UTLB.VPN and the associated physical address in -- * UTLB.PPN. -- * -- * Notably, even though this is a special case translation, and some -- * of the configuration bits are meaningless, we're still required -- * to have a valid ASID context in PTEH. -- * -- * We could also probably get by without explicitly setting PTEA, but -- * we do it here just for good measure. -- */ -- spin_lock_irqsave(&sq_mapping_lock, flags); -- -- pteh = map->sq_addr; -- ctrl_outl((pteh & MMU_VPN_MASK) | get_asid(), MMU_PTEH); -- -- ptel = map->addr & PAGE_MASK; -- ctrl_outl(((ptel >> 28) & 0xe) | (ptel & 0x1), MMU_PTEA); -- -- pgprot = pgprot_noncached(PAGE_KERNEL); -- -- ptel &= _PAGE_FLAGS_HARDWARE_MASK; -- ptel |= pgprot_val(pgprot); -- ctrl_outl(ptel, MMU_PTEL); - -- __asm__ __volatile__ ("ldtlb" : : : "memory"); -- -- spin_unlock_irqrestore(&sq_mapping_lock, flags); -- -- /* -- * Next, we need to map ourselves in the kernel page table, so that -- * future accesses after a TLB flush will be handled when we take a -- * page fault. -- * -- * Theoretically we could just do this directly and not worry about -- * setting up the translation by hand ahead of time, but for the -- * cases where we want a one-shot SQ mapping followed by a quick -- * writeout before we hit the TLB flush, we do it anyways. This way -- * we at least save ourselves the initial page fault overhead. -- */ - vma = __get_vm_area(map->size, VM_ALLOC, map->sq_addr, SQ_ADDRMAX); - if (!vma) -- return ERR_PTR(-ENOMEM); -+ return -ENOMEM; - - vma->phys_addr = map->addr; - - if (remap_area_pages((unsigned long)vma->addr, vma->phys_addr, -- map->size, pgprot_val(pgprot))) { -+ map->size, flags)) { - vunmap(vma->addr); -- return NULL; -+ return -EAGAIN; - } --#endif /* CONFIG_MMU */ -+#else -+ /* -+ * Without an MMU (or with it turned off), this is much more -+ * straightforward, as we can just load up each queue's QACR with -+ * the physical address appropriately masked. -+ */ -+ ctrl_outl(((map->addr >> 26) << 2) & 0x1c, SQ_QACR0); -+ ctrl_outl(((map->addr >> 26) << 2) & 0x1c, SQ_QACR1); -+#endif - -- return map; -+ return 0; - } - - /** -@@ -210,42 +134,65 @@ - * @phys: Physical address of mapping. - * @size: Length of mapping. - * @name: User invoking mapping. -+ * @flags: Protection flags. - * - * Remaps the physical address @phys through the next available store queue - * address of @size length. @name is logged at boot time as well as through -- * the procfs interface. -- * -- * A pre-allocated and filled sq_mapping pointer is returned, and must be -- * cleaned up with a call to sq_unmap() when the user is done with the -- * mapping. -+ * the sysfs interface. - */ --struct sq_mapping *sq_remap(unsigned long phys, unsigned int size, const char *name) -+unsigned long sq_remap(unsigned long phys, unsigned int size, -+ const char *name, unsigned long flags) - { - struct sq_mapping *map; -- unsigned long virt, end; -+ unsigned long end; - unsigned int psz; -+ int ret, page; - - /* Don't allow wraparound or zero size */ - end = phys + size - 1; -- if (!size || end < phys) -- return NULL; -+ if (unlikely(!size || end < phys)) -+ return -EINVAL; - /* Don't allow anyone to remap normal memory.. */ -- if (phys < virt_to_phys(high_memory)) -- return NULL; -+ if (unlikely(phys < virt_to_phys(high_memory))) -+ return -EINVAL; - - phys &= PAGE_MASK; -+ size = PAGE_ALIGN(end + 1) - phys; -+ -+ map = kmem_cache_alloc(sq_cache, GFP_KERNEL); -+ if (unlikely(!map)) -+ return -ENOMEM; -+ -+ map->addr = phys; -+ map->size = size; -+ map->name = name; -+ -+ page = bitmap_find_free_region(sq_bitmap, 0x04000000, -+ get_order(map->size)); -+ if (unlikely(page < 0)) { -+ ret = -ENOSPC; -+ goto out; -+ } -+ -+ map->sq_addr = P4SEG_STORE_QUE + (page << PAGE_SHIFT); -+ -+ ret = __sq_remap(map, flags); -+ if (unlikely(ret != 0)) -+ goto out; -+ -+ psz = (size + (PAGE_SIZE - 1)) >> PAGE_SHIFT; -+ pr_info("sqremap: %15s [%4d page%s] va 0x%08lx pa 0x%08lx\n", -+ likely(map->name) ? map->name : "???", -+ psz, psz == 1 ? " " : "s", -+ map->sq_addr, map->addr); -+ -+ sq_mapping_list_add(map); - -- size = PAGE_ALIGN(end + 1) - phys; -- virt = __sq_get_next_addr(); -- psz = (size + (PAGE_SIZE - 1)) / PAGE_SIZE; -- map = __sq_alloc_mapping(virt, phys, size, name); -- -- printk("sqremap: %15s [%4d page%s] va 0x%08lx pa 0x%08lx\n", -- map->name ? map->name : "???", -- psz, psz == 1 ? " " : "s", -- map->sq_addr, map->addr); -+ return map->sq_addr; - -- return __sq_remap(map); -+out: -+ kmem_cache_free(sq_cache, map); -+ return ret; - } - - /** -@@ -256,185 +203,196 @@ - * sq_remap(). Also frees up the pte that was previously inserted into - * the kernel page table and discards the UTLB translation. - */ --void sq_unmap(struct sq_mapping *map) -+void sq_unmap(unsigned long vaddr) - { -- if (map->sq_addr > (unsigned long)high_memory) -- vfree((void *)(map->sq_addr & PAGE_MASK)); -+ struct sq_mapping **p, *map; -+ struct vm_struct *vma; -+ int page; - -- list_del(&map->list); -- kfree(map); --} -+ for (p = &sq_mapping_list; (map = *p); p = &map->next) -+ if (map->sq_addr == vaddr) -+ break; -+ -+ if (unlikely(!map)) { -+ printk("%s: bad store queue address 0x%08lx\n", -+ __FUNCTION__, vaddr); -+ return; -+ } - --/** -- * sq_clear - Clear a store queue range -- * @addr: Address to start clearing from. -- * @len: Length to clear. -- * -- * A quick zero-fill implementation for clearing out memory that has been -- * remapped through the store queues. -- */ --void sq_clear(unsigned long addr, unsigned int len) --{ -- int i; -+ page = (map->sq_addr - P4SEG_STORE_QUE) >> PAGE_SHIFT; -+ bitmap_release_region(sq_bitmap, page, get_order(map->size)); - -- /* Clear out both queues linearly */ -- for (i = 0; i < 8; i++) { -- ctrl_outl(0, addr + i + 0); -- ctrl_outl(0, addr + i + 8); -+ vma = remove_vm_area((void *)(map->sq_addr & PAGE_MASK)); -+ if (!vma) { -+ printk(KERN_ERR "%s: bad address 0x%08lx\n", -+ __FUNCTION__, map->sq_addr); -+ return; - } - -- sq_flush_range(addr, len); -+ sq_mapping_list_del(map); -+ -+ kmem_cache_free(sq_cache, map); - } - --/** -- * sq_vma_unmap - Unmap a VMA range -- * @area: VMA containing range. -- * @addr: Start of range. -- * @len: Length of range. -- * -- * Searches the sq_mapping_list for a mapping matching the sq addr @addr, -- * and subsequently frees up the entry. Further cleanup is done by generic -- * code. -+/* -+ * Needlessly complex sysfs interface. Unfortunately it doesn't seem like -+ * there is any other easy way to add things on a per-cpu basis without -+ * putting the directory entries somewhere stupid and having to create -+ * links in sysfs by hand back in to the per-cpu directories. -+ * -+ * Some day we may want to have an additional abstraction per store -+ * queue, but considering the kobject hell we already have to deal with, -+ * it's simply not worth the trouble. - */ --static void sq_vma_unmap(struct vm_area_struct *area, -- unsigned long addr, size_t len) --{ -- struct list_head *pos, *tmp; -+static struct kobject *sq_kobject[NR_CPUS]; - -- list_for_each_safe(pos, tmp, &sq_mapping_list) { -- struct sq_mapping *entry; -+struct sq_sysfs_attr { -+ struct attribute attr; -+ ssize_t (*show)(char *buf); -+ ssize_t (*store)(const char *buf, size_t count); -+}; - -- entry = list_entry(pos, typeof(*entry), list); -+#define to_sq_sysfs_attr(attr) container_of(attr, struct sq_sysfs_attr, attr) - -- if (entry->sq_addr == addr) { -- /* -- * We could probably get away without doing the tlb flush -- * here, as generic code should take care of most of this -- * when unmapping the rest of the VMA range for us. Leave -- * it in for added sanity for the time being.. -- */ -- __flush_tlb_page(get_asid(), entry->sq_addr & PAGE_MASK); -+static ssize_t sq_sysfs_show(struct kobject *kobj, struct attribute *attr, -+ char *buf) -+{ -+ struct sq_sysfs_attr *sattr = to_sq_sysfs_attr(attr); - -- list_del(&entry->list); -- kfree(entry); -+ if (likely(sattr->show)) -+ return sattr->show(buf); - -- return; -- } -- } -+ return -EIO; - } - --/** -- * sq_vma_sync - Sync a VMA range -- * @area: VMA containing range. -- * @start: Start of range. -- * @len: Length of range. -- * @flags: Additional flags. -- * -- * Synchronizes an sq mapped range by flushing the store queue cache for -- * the duration of the mapping. -- * -- * Used internally for user mappings, which must use msync() to prefetch -- * the store queue cache. -- */ --static int sq_vma_sync(struct vm_area_struct *area, -- unsigned long start, size_t len, unsigned int flags) -+static ssize_t sq_sysfs_store(struct kobject *kobj, struct attribute *attr, -+ const char *buf, size_t count) - { -- sq_flush_range(start, len); -+ struct sq_sysfs_attr *sattr = to_sq_sysfs_attr(attr); - -- return 0; -+ if (likely(sattr->store)) -+ return sattr->store(buf, count); -+ -+ return -EIO; - } - --static struct vm_operations_struct sq_vma_ops = { -- .unmap = sq_vma_unmap, -- .sync = sq_vma_sync, --}; -+static ssize_t mapping_show(char *buf) -+{ -+ struct sq_mapping **list, *entry; -+ char *p = buf; - --/** -- * sq_mmap - mmap() for /dev/cpu/sq -- * @file: unused. -- * @vma: VMA to remap. -- * -- * Remap the specified vma @vma through the store queues, and setup associated -- * information for the new mapping. Also build up the page tables for the new -- * area. -- */ --static int sq_mmap(struct file *file, struct vm_area_struct *vma) -+ for (list = &sq_mapping_list; (entry = *list); list = &entry->next) -+ p += sprintf(p, "%08lx-%08lx [%08lx]: %s\n", -+ entry->sq_addr, entry->sq_addr + entry->size, -+ entry->addr, entry->name); -+ -+ return p - buf; -+} -+ -+static ssize_t mapping_store(const char *buf, size_t count) - { -- unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; -- unsigned long size = vma->vm_end - vma->vm_start; -- struct sq_mapping *map; -+ unsigned long base = 0, len = 0; - -- /* -- * We're not interested in any arbitrary virtual address that has -- * been stuck in the VMA, as we already know what addresses we -- * want. Save off the size, and reposition the VMA to begin at -- * the next available sq address. -- */ -- vma->vm_start = __sq_get_next_addr(); -- vma->vm_end = vma->vm_start + size; -+ sscanf(buf, "%lx %lx", &base, &len); -+ if (!base) -+ return -EIO; - -- vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); -+ if (likely(len)) { -+ int ret = sq_remap(base, len, "Userspace", -+ pgprot_val(PAGE_SHARED)); -+ if (ret < 0) -+ return ret; -+ } else -+ sq_unmap(base); - -- vma->vm_flags |= VM_IO | VM_RESERVED; -+ return count; -+} - -- map = __sq_alloc_mapping(vma->vm_start, offset, size, "Userspace"); -+static struct sq_sysfs_attr mapping_attr = -+ __ATTR(mapping, 0644, mapping_show, mapping_store); - -- if (io_remap_pfn_range(vma, map->sq_addr, map->addr >> PAGE_SHIFT, -- size, vma->vm_page_prot)) -- return -EAGAIN; -+static struct attribute *sq_sysfs_attrs[] = { -+ &mapping_attr.attr, -+ NULL, -+}; - -- vma->vm_ops = &sq_vma_ops; -+static struct sysfs_ops sq_sysfs_ops = { -+ .show = sq_sysfs_show, -+ .store = sq_sysfs_store, -+}; - -- return 0; --} -+static struct kobj_type ktype_percpu_entry = { -+ .sysfs_ops = &sq_sysfs_ops, -+ .default_attrs = sq_sysfs_attrs, -+}; - --#ifdef CONFIG_PROC_FS --static int sq_mapping_read_proc(char *buf, char **start, off_t off, -- int len, int *eof, void *data) -+static int __devinit sq_sysdev_add(struct sys_device *sysdev) - { -- struct list_head *pos; -- char *p = buf; -+ unsigned int cpu = sysdev->id; -+ struct kobject *kobj; - -- list_for_each_prev(pos, &sq_mapping_list) { -- struct sq_mapping *entry; -+ sq_kobject[cpu] = kzalloc(sizeof(struct kobject), GFP_KERNEL); -+ if (unlikely(!sq_kobject[cpu])) -+ return -ENOMEM; - -- entry = list_entry(pos, typeof(*entry), list); -+ kobj = sq_kobject[cpu]; -+ kobj->parent = &sysdev->kobj; -+ kobject_set_name(kobj, "%s", "sq"); -+ kobj->ktype = &ktype_percpu_entry; - -- p += sprintf(p, "%08lx-%08lx [%08lx]: %s\n", entry->sq_addr, -- entry->sq_addr + entry->size - 1, entry->addr, -- entry->name); -- } -- -- return p - buf; -+ return kobject_register(kobj); - } --#endif - --static struct file_operations sq_fops = { -- .owner = THIS_MODULE, -- .mmap = sq_mmap, --}; -+static int __devexit sq_sysdev_remove(struct sys_device *sysdev) -+{ -+ unsigned int cpu = sysdev->id; -+ struct kobject *kobj = sq_kobject[cpu]; -+ -+ kobject_unregister(kobj); -+ return 0; -+} - --static struct miscdevice sq_dev = { -- .minor = STORE_QUEUE_MINOR, -- .name = "sq", -- .devfs_name = "cpu/sq", -- .fops = &sq_fops, -+static struct sysdev_driver sq_sysdev_driver = { -+ .add = sq_sysdev_add, -+ .remove = __devexit_p(sq_sysdev_remove), - }; - - static int __init sq_api_init(void) - { -+ unsigned int nr_pages = 0x04000000 >> PAGE_SHIFT; -+ unsigned int size = (nr_pages + (BITS_PER_LONG - 1)) / BITS_PER_LONG; -+ int ret = -ENOMEM; -+ - printk(KERN_NOTICE "sq: Registering store queue API.\n"); - --#ifdef CONFIG_PROC_FS -- create_proc_read_entry("sq_mapping", 0, 0, sq_mapping_read_proc, 0); --#endif -+ sq_cache = kmem_cache_create("store_queue_cache", -+ sizeof(struct sq_mapping), 0, 0, -+ NULL, NULL); -+ if (unlikely(!sq_cache)) -+ return ret; -+ -+ sq_bitmap = kzalloc(size, GFP_KERNEL); -+ if (unlikely(!sq_bitmap)) -+ goto out; -+ -+ ret = sysdev_driver_register(&cpu_sysdev_class, &sq_sysdev_driver); -+ if (unlikely(ret != 0)) -+ goto out; - -- return misc_register(&sq_dev); -+ return 0; -+ -+out: -+ kfree(sq_bitmap); -+ kmem_cache_destroy(sq_cache); -+ -+ return ret; - } - - static void __exit sq_api_exit(void) - { -- misc_deregister(&sq_dev); -+ sysdev_driver_unregister(&cpu_sysdev_class, &sq_sysdev_driver); -+ kfree(sq_bitmap); -+ kmem_cache_destroy(sq_cache); - } - - module_init(sq_api_init); -@@ -443,11 +401,7 @@ - MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>, M. R. Brown <mrbrown@0xd6.org>"); - MODULE_DESCRIPTION("Simple API for SH-4 integrated Store Queues"); - MODULE_LICENSE("GPL"); --MODULE_ALIAS_MISCDEV(STORE_QUEUE_MINOR); - - EXPORT_SYMBOL(sq_remap); - EXPORT_SYMBOL(sq_unmap); --EXPORT_SYMBOL(sq_clear); --EXPORT_SYMBOL(sq_flush); - EXPORT_SYMBOL(sq_flush_range); -- -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/early_printk.c linux-2.6.17/arch/sh/kernel/early_printk.c ---- linux-2.6.17-vanilla/arch/sh/kernel/early_printk.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/early_printk.c 2006-07-12 16:54:22.000000000 +0000 -@@ -59,34 +59,42 @@ - #endif - - #ifdef CONFIG_EARLY_SCIF_CONSOLE -+#include <linux/serial_core.h> -+#include "../../../drivers/serial/sh-sci.h" -+ -+#ifdef CONFIG_CPU_SH4 - #define SCIF_REG 0xffe80000 -+#elif defined(CONFIG_CPU_SUBTYPE_SH72060) -+#define SCIF_REG 0xfffe9800 -+#else -+#error "Undefined SCIF for this subtype" -+#endif -+ -+static struct uart_port scif_port = { -+ .mapbase = SCIF_REG, -+ .membase = (char *)SCIF_REG, -+}; - - static void scif_sercon_putc(int c) - { -- while (!(ctrl_inw(SCIF_REG + 0x10) & 0x20)) ; -+ while (((sci_in(&scif_port, SCFDR) & 0x1f00 >> 8) == 16)) -+ ; -+ -+ sci_out(&scif_port, SCxTDR, c); -+ sci_in(&scif_port, SCxSR); -+ sci_out(&scif_port, SCxSR, 0xf3 & ~(0x20 | 0x40)); - -- ctrl_outb(c, SCIF_REG + 12); -- ctrl_outw((ctrl_inw(SCIF_REG + 0x10) & 0x9f), SCIF_REG + 0x10); -+ while ((sci_in(&scif_port, SCxSR) & 0x40) == 0); -+ ; - - if (c == '\n') - scif_sercon_putc('\r'); - } - --static void scif_sercon_flush(void) --{ -- ctrl_outw((ctrl_inw(SCIF_REG + 0x10) & 0xbf), SCIF_REG + 0x10); -- -- while (!(ctrl_inw(SCIF_REG + 0x10) & 0x40)) ; -- -- ctrl_outw((ctrl_inw(SCIF_REG + 0x10) & 0xbf), SCIF_REG + 0x10); --} -- - static void scif_sercon_write(struct console *con, const char *s, unsigned count) - { - while (count-- > 0) - scif_sercon_putc(*s++); -- -- scif_sercon_flush(); - } - - static int __init scif_sercon_setup(struct console *con, char *options) -@@ -124,7 +132,7 @@ - - void __init enable_early_printk(void) - { --#ifdef CONFIG_EARLY_SCIF_CONSOLE -+#if defined(CONFIG_EARLY_SCIF_CONSOLE) && defined(CONFIG_CPU_SH4) - scif_sercon_init(115200); - #endif - register_console(&early_console); -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/entry.S linux-2.6.17/arch/sh/kernel/entry.S ---- linux-2.6.17-vanilla/arch/sh/kernel/entry.S 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/entry.S 2006-07-12 16:54:22.000000000 +0000 -@@ -19,24 +19,6 @@ - #include <asm/cpu/mmu_context.h> - #include <asm/unistd.h> - --#if !defined(CONFIG_NFSD) && !defined(CONFIG_NFSD_MODULE) --#define sys_nfsservctl sys_ni_syscall --#endif -- --#if !defined(CONFIG_MMU) --#define sys_madvise sys_ni_syscall --#define sys_readahead sys_ni_syscall --#define sys_mprotect sys_ni_syscall --#define sys_msync sys_ni_syscall --#define sys_mlock sys_ni_syscall --#define sys_munlock sys_ni_syscall --#define sys_mlockall sys_ni_syscall --#define sys_munlockall sys_ni_syscall --#define sys_mremap sys_ni_syscall --#define sys_mincore sys_ni_syscall --#define sys_remap_file_pages sys_ni_syscall --#endif -- - ! NOTE: - ! GNU as (as of 2.9.1) changes bf/s into bt/s and bra, when the address - ! to be jumped is too far, but it causes illegal slot exception. -@@ -327,7 +309,7 @@ - .align 2 - ret_from_exception: - preempt_stop() --ret_from_irq: -+ENTRY(ret_from_irq) - ! - mov #OFF_SR, r0 - mov.l @(r0,r15), r0 ! get status register -@@ -645,7 +627,7 @@ - ! - #if defined(CONFIG_KGDB_NMI) - ! Clear in_nmi -- mov.l 4f, k0 -+ mov.l 6f, k0 - mov #0, k1 - mov.b k1, @k0 - #endif -@@ -723,7 +705,7 @@ - ! - ! - .align 2 --handle_exception: -+ENTRY(handle_exception) - ! Using k0, k1 for scratch registers (r0_bank1, r1_bank), - ! save all registers onto stack. - ! -@@ -839,300 +821,3 @@ - rts - nop - -- .data --ENTRY(sys_call_table) -- .long sys_ni_syscall /* 0 - old "setup()" system call*/ -- .long sys_exit -- .long sys_fork -- .long sys_read -- .long sys_write -- .long sys_open /* 5 */ -- .long sys_close -- .long sys_waitpid -- .long sys_creat -- .long sys_link -- .long sys_unlink /* 10 */ -- .long sys_execve -- .long sys_chdir -- .long sys_time -- .long sys_mknod -- .long sys_chmod /* 15 */ -- .long sys_lchown16 -- .long sys_ni_syscall /* old break syscall holder */ -- .long sys_stat -- .long sys_lseek -- .long sys_getpid /* 20 */ -- .long sys_mount -- .long sys_oldumount -- .long sys_setuid16 -- .long sys_getuid16 -- .long sys_stime /* 25 */ -- .long sys_ptrace -- .long sys_alarm -- .long sys_fstat -- .long sys_pause -- .long sys_utime /* 30 */ -- .long sys_ni_syscall /* old stty syscall holder */ -- .long sys_ni_syscall /* old gtty syscall holder */ -- .long sys_access -- .long sys_nice -- .long sys_ni_syscall /* 35 */ /* old ftime syscall holder */ -- .long sys_sync -- .long sys_kill -- .long sys_rename -- .long sys_mkdir -- .long sys_rmdir /* 40 */ -- .long sys_dup -- .long sys_pipe -- .long sys_times -- .long sys_ni_syscall /* old prof syscall holder */ -- .long sys_brk /* 45 */ -- .long sys_setgid16 -- .long sys_getgid16 -- .long sys_signal -- .long sys_geteuid16 -- .long sys_getegid16 /* 50 */ -- .long sys_acct -- .long sys_umount /* recycled never used phys() */ -- .long sys_ni_syscall /* old lock syscall holder */ -- .long sys_ioctl -- .long sys_fcntl /* 55 */ -- .long sys_ni_syscall /* old mpx syscall holder */ -- .long sys_setpgid -- .long sys_ni_syscall /* old ulimit syscall holder */ -- .long sys_ni_syscall /* sys_olduname */ -- .long sys_umask /* 60 */ -- .long sys_chroot -- .long sys_ustat -- .long sys_dup2 -- .long sys_getppid -- .long sys_getpgrp /* 65 */ -- .long sys_setsid -- .long sys_sigaction -- .long sys_sgetmask -- .long sys_ssetmask -- .long sys_setreuid16 /* 70 */ -- .long sys_setregid16 -- .long sys_sigsuspend -- .long sys_sigpending -- .long sys_sethostname -- .long sys_setrlimit /* 75 */ -- .long sys_old_getrlimit -- .long sys_getrusage -- .long sys_gettimeofday -- .long sys_settimeofday -- .long sys_getgroups16 /* 80 */ -- .long sys_setgroups16 -- .long sys_ni_syscall /* sys_oldselect */ -- .long sys_symlink -- .long sys_lstat -- .long sys_readlink /* 85 */ -- .long sys_uselib -- .long sys_swapon -- .long sys_reboot -- .long old_readdir -- .long old_mmap /* 90 */ -- .long sys_munmap -- .long sys_truncate -- .long sys_ftruncate -- .long sys_fchmod -- .long sys_fchown16 /* 95 */ -- .long sys_getpriority -- .long sys_setpriority -- .long sys_ni_syscall /* old profil syscall holder */ -- .long sys_statfs -- .long sys_fstatfs /* 100 */ -- .long sys_ni_syscall /* ioperm */ -- .long sys_socketcall -- .long sys_syslog -- .long sys_setitimer -- .long sys_getitimer /* 105 */ -- .long sys_newstat -- .long sys_newlstat -- .long sys_newfstat -- .long sys_uname -- .long sys_ni_syscall /* 110 */ /* iopl */ -- .long sys_vhangup -- .long sys_ni_syscall /* idle */ -- .long sys_ni_syscall /* vm86old */ -- .long sys_wait4 -- .long sys_swapoff /* 115 */ -- .long sys_sysinfo -- .long sys_ipc -- .long sys_fsync -- .long sys_sigreturn -- .long sys_clone /* 120 */ -- .long sys_setdomainname -- .long sys_newuname -- .long sys_ni_syscall /* sys_modify_ldt */ -- .long sys_adjtimex -- .long sys_mprotect /* 125 */ -- .long sys_sigprocmask -- .long sys_ni_syscall /* old "create_module" */ -- .long sys_init_module -- .long sys_delete_module -- .long sys_ni_syscall /* 130: old "get_kernel_syms" */ -- .long sys_quotactl -- .long sys_getpgid -- .long sys_fchdir -- .long sys_bdflush -- .long sys_sysfs /* 135 */ -- .long sys_personality -- .long sys_ni_syscall /* for afs_syscall */ -- .long sys_setfsuid16 -- .long sys_setfsgid16 -- .long sys_llseek /* 140 */ -- .long sys_getdents -- .long sys_select -- .long sys_flock -- .long sys_msync -- .long sys_readv /* 145 */ -- .long sys_writev -- .long sys_getsid -- .long sys_fdatasync -- .long sys_sysctl -- .long sys_mlock /* 150 */ -- .long sys_munlock -- .long sys_mlockall -- .long sys_munlockall -- .long sys_sched_setparam -- .long sys_sched_getparam /* 155 */ -- .long sys_sched_setscheduler -- .long sys_sched_getscheduler -- .long sys_sched_yield -- .long sys_sched_get_priority_max -- .long sys_sched_get_priority_min /* 160 */ -- .long sys_sched_rr_get_interval -- .long sys_nanosleep -- .long sys_mremap -- .long sys_setresuid16 -- .long sys_getresuid16 /* 165 */ -- .long sys_ni_syscall /* vm86 */ -- .long sys_ni_syscall /* old "query_module" */ -- .long sys_poll -- .long sys_nfsservctl -- .long sys_setresgid16 /* 170 */ -- .long sys_getresgid16 -- .long sys_prctl -- .long sys_rt_sigreturn -- .long sys_rt_sigaction -- .long sys_rt_sigprocmask /* 175 */ -- .long sys_rt_sigpending -- .long sys_rt_sigtimedwait -- .long sys_rt_sigqueueinfo -- .long sys_rt_sigsuspend -- .long sys_pread_wrapper /* 180 */ -- .long sys_pwrite_wrapper -- .long sys_chown16 -- .long sys_getcwd -- .long sys_capget -- .long sys_capset /* 185 */ -- .long sys_sigaltstack -- .long sys_sendfile -- .long sys_ni_syscall /* streams1 */ -- .long sys_ni_syscall /* streams2 */ -- .long sys_vfork /* 190 */ -- .long sys_getrlimit -- .long sys_mmap2 -- .long sys_truncate64 -- .long sys_ftruncate64 -- .long sys_stat64 /* 195 */ -- .long sys_lstat64 -- .long sys_fstat64 -- .long sys_lchown -- .long sys_getuid -- .long sys_getgid /* 200 */ -- .long sys_geteuid -- .long sys_getegid -- .long sys_setreuid -- .long sys_setregid -- .long sys_getgroups /* 205 */ -- .long sys_setgroups -- .long sys_fchown -- .long sys_setresuid -- .long sys_getresuid -- .long sys_setresgid /* 210 */ -- .long sys_getresgid -- .long sys_chown -- .long sys_setuid -- .long sys_setgid -- .long sys_setfsuid /* 215 */ -- .long sys_setfsgid -- .long sys_pivot_root -- .long sys_mincore -- .long sys_madvise -- .long sys_getdents64 /* 220 */ -- .long sys_fcntl64 -- .long sys_ni_syscall /* reserved for TUX */ -- .long sys_ni_syscall /* Reserved for Security */ -- .long sys_gettid -- .long sys_readahead /* 225 */ -- .long sys_setxattr -- .long sys_lsetxattr -- .long sys_fsetxattr -- .long sys_getxattr -- .long sys_lgetxattr /* 230 */ -- .long sys_fgetxattr -- .long sys_listxattr -- .long sys_llistxattr -- .long sys_flistxattr -- .long sys_removexattr /* 235 */ -- .long sys_lremovexattr -- .long sys_fremovexattr -- .long sys_tkill -- .long sys_sendfile64 -- .long sys_futex /* 240 */ -- .long sys_sched_setaffinity -- .long sys_sched_getaffinity -- .long sys_ni_syscall -- .long sys_ni_syscall -- .long sys_io_setup /* 245 */ -- .long sys_io_destroy -- .long sys_io_getevents -- .long sys_io_submit -- .long sys_io_cancel -- .long sys_fadvise64 /* 250 */ -- .long sys_ni_syscall -- .long sys_exit_group -- .long sys_lookup_dcookie -- .long sys_epoll_create -- .long sys_epoll_ctl /* 255 */ -- .long sys_epoll_wait -- .long sys_remap_file_pages -- .long sys_set_tid_address -- .long sys_timer_create -- .long sys_timer_settime /* 260 */ -- .long sys_timer_gettime -- .long sys_timer_getoverrun -- .long sys_timer_delete -- .long sys_clock_settime -- .long sys_clock_gettime /* 265 */ -- .long sys_clock_getres -- .long sys_clock_nanosleep -- .long sys_statfs64 -- .long sys_fstatfs64 -- .long sys_tgkill /* 270 */ -- .long sys_utimes -- .long sys_fadvise64_64_wrapper -- .long sys_ni_syscall /* Reserved for vserver */ -- .long sys_ni_syscall /* Reserved for mbind */ -- .long sys_ni_syscall /* 275 - get_mempolicy */ -- .long sys_ni_syscall /* set_mempolicy */ -- .long sys_mq_open -- .long sys_mq_unlink -- .long sys_mq_timedsend -- .long sys_mq_timedreceive /* 280 */ -- .long sys_mq_notify -- .long sys_mq_getsetattr -- .long sys_ni_syscall /* Reserved for kexec */ -- .long sys_waitid -- .long sys_add_key /* 285 */ -- .long sys_request_key -- .long sys_keyctl -- .long sys_ioprio_set -- .long sys_ioprio_get -- .long sys_inotify_init /* 290 */ -- .long sys_inotify_add_watch -- .long sys_inotify_rm_watch -- --/* End of entry.S */ -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/head.S linux-2.6.17/arch/sh/kernel/head.S ---- linux-2.6.17-vanilla/arch/sh/kernel/head.S 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/head.S 2006-07-12 16:54:22.000000000 +0000 -@@ -12,6 +12,17 @@ - */ - #include <linux/linkage.h> - -+#ifdef CONFIG_CPU_SH4A -+#define SYNCO() synco -+ -+#define PREFI(label, reg) \ -+ mov.l label, reg; \ -+ prefi @reg -+#else -+#define SYNCO() -+#define PREFI(label, reg) -+#endif -+ - .section .empty_zero_page, "aw" - ENTRY(empty_zero_page) - .long 1 /* MOUNT_ROOT_RDONLY */ -@@ -42,6 +53,17 @@ - ! Initialize global interrupt mask - mov #0, r0 - ldc r0, r6_bank -+ -+ /* -+ * Prefetch if possible to reduce cache miss penalty. -+ * -+ * We do this early on for SH-4A as a micro-optimization, -+ * as later on we will have speculative execution enabled -+ * and this will become less of an issue. -+ */ -+ PREFI(5f, r0) -+ PREFI(6f, r0) -+ - ! - mov.l 2f, r0 - mov r0, r15 ! Set initial r15 (stack pointer) -@@ -49,11 +71,7 @@ - shll8 r1 ! r1 = 8192 - sub r1, r0 ! - ldc r0, r7_bank ! ... and initial thread_info -- ! -- ! Additional CPU initialization -- mov.l 6f, r0 -- jsr @r0 -- nop -+ - ! Clear BSS area - mov.l 3f, r1 - add #4, r1 -@@ -62,6 +80,14 @@ - 9: cmp/hs r2, r1 - bf/s 9b ! while (r1 < r2) - mov.l r0,@-r2 -+ -+ ! Additional CPU initialization -+ mov.l 6f, r0 -+ jsr @r0 -+ nop -+ -+ SYNCO() ! Wait for pending instructions.. -+ - ! Start kernel - mov.l 5f, r0 - jmp @r0 -@@ -69,7 +95,7 @@ - - .balign 4 - 1: .long 0x400080F0 ! MD=1, RB=0, BL=0, FD=1, IMASK=0xF --2: .long stack -+2: .long init_thread_union+8192 - 3: .long __bss_start - 4: .long _end - 5: .long start_kernel -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/kgdb_stub.c linux-2.6.17/arch/sh/kernel/kgdb_stub.c ---- linux-2.6.17-vanilla/arch/sh/kernel/kgdb_stub.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/kgdb_stub.c 2006-07-12 16:54:22.000000000 +0000 -@@ -101,16 +101,17 @@ - #include <linux/linkage.h> - #include <linux/init.h> - -+#ifdef CONFIG_SH_KGDB_CONSOLE -+#include <linux/console.h> -+#endif -+ - #include <asm/system.h> - #include <asm/current.h> - #include <asm/signal.h> - #include <asm/pgtable.h> - #include <asm/ptrace.h> - #include <asm/kgdb.h> -- --#ifdef CONFIG_SH_KGDB_CONSOLE --#include <linux/console.h> --#endif -+#include <asm/io.h> - - /* Function pointers for linkage */ - kgdb_debug_hook_t *kgdb_debug_hook; -@@ -240,7 +241,6 @@ - /* Misc static */ - static int stepped_address; - static short stepped_opcode; --static const char hexchars[] = "0123456789abcdef"; - static char in_buffer[BUFMAX]; - static char out_buffer[OUTBUFMAX]; - -@@ -253,29 +253,6 @@ - #define BUF_THREAD_ID_SIZE 16 - #endif - --/* Return addr as a real volatile address */ --static inline unsigned int ctrl_inl(const unsigned long addr) --{ -- return *(volatile unsigned long *) addr; --} -- --/* Correctly set *addr using volatile */ --static inline void ctrl_outl(const unsigned int b, unsigned long addr) --{ -- *(volatile unsigned long *) addr = b; --} -- --/* Get high hex bits */ --static char highhex(const int x) --{ -- return hexchars[(x >> 4) & 0xf]; --} -- --/* Get low hex bits */ --static char lowhex(const int x) --{ -- return hexchars[x & 0xf]; --} - - /* Convert ch to hex */ - static int hex(const char ch) -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/machine_kexec.c linux-2.6.17/arch/sh/kernel/machine_kexec.c ---- linux-2.6.17-vanilla/arch/sh/kernel/machine_kexec.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/machine_kexec.c 2006-07-12 16:54:22.000000000 +0000 -@@ -27,7 +27,7 @@ - - const extern unsigned char relocate_new_kernel[]; - const extern unsigned int relocate_new_kernel_size; --extern void *gdb_vbr_vector; -+extern void *gdb_vbr_vector; - - /* - * Provide a dummy crash_notes definition while crash dump arrives to ppc. -@@ -78,7 +78,7 @@ - */ - NORET_TYPE void machine_kexec(struct kimage *image) - { -- -+ - unsigned long page_list; - unsigned long reboot_code_buffer; - unsigned long vbr_reg; -@@ -87,7 +87,7 @@ - #if defined(CONFIG_SH_STANDARD_BIOS) - vbr_reg = ((unsigned long )gdb_vbr_vector) - 0x100; - #else -- vbr_reg = 0x80000000; // dummy -+ vbr_reg = 0x80000000; // dummy - #endif - /* Interrupts aren't acceptable while we reboot */ - local_irq_disable(); -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/pm.c linux-2.6.17/arch/sh/kernel/pm.c ---- linux-2.6.17-vanilla/arch/sh/kernel/pm.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/pm.c 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1,88 @@ -+/* -+ * Generic Power Management Routine -+ * -+ * Copyright (c) 2006 Andriy Skulysh <askulsyh@gmail.com> -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License. -+ */ -+#include <linux/suspend.h> -+#include <linux/delay.h> -+#include <linux/gfp.h> -+#include <asm/freq.h> -+#include <asm/io.h> -+#include <asm/watchdog.h> -+#include <asm/pm.h> -+ -+#define INTR_OFFSET 0x600 -+ -+#define STBCR 0xffffff82 -+#define STBCR2 0xffffff88 -+ -+#define STBCR_STBY 0x80 -+#define STBCR_MSTP2 0x04 -+ -+#define MCR 0xffffff68 -+#define RTCNT 0xffffff70 -+ -+#define MCR_RMODE 2 -+#define MCR_RFSH 4 -+ -+void pm_enter(void) -+{ -+ u8 stbcr, csr; -+ u16 frqcr, mcr; -+ u32 vbr_new, vbr_old; -+ -+ set_bl_bit(); -+ -+ /* set wdt */ -+ csr = sh_wdt_read_csr(); -+ csr &= ~WTCSR_TME; -+ csr |= WTCSR_CKS_4096; -+ sh_wdt_write_csr(csr); -+ csr = sh_wdt_read_csr(); -+ sh_wdt_write_cnt(0); -+ -+ /* disable PLL1 */ -+ frqcr = ctrl_inw(FRQCR); -+ frqcr &= ~(FRQCR_PLLEN | FRQCR_PSTBY); -+ ctrl_outw(frqcr, FRQCR); -+ -+ /* enable standby */ -+ stbcr = ctrl_inb(STBCR); -+ ctrl_outb(stbcr | STBCR_STBY | STBCR_MSTP2, STBCR); -+ -+ /* set self-refresh */ -+ mcr = ctrl_inw(MCR); -+ ctrl_outw(mcr & ~MCR_RFSH, MCR); -+ -+ /* set interrupt handler */ -+ asm volatile("stc vbr, %0" : "=r" (vbr_old)); -+ vbr_new = get_zeroed_page(GFP_ATOMIC); -+ udelay(50); -+ memcpy((void*)(vbr_new + INTR_OFFSET), -+ &wakeup_start, &wakeup_end - &wakeup_start); -+ asm volatile("ldc %0, vbr" : : "r" (vbr_new)); -+ -+ ctrl_outw(0, RTCNT); -+ ctrl_outw(mcr | MCR_RFSH | MCR_RMODE, MCR); -+ -+ cpu_sleep(); -+ -+ asm volatile("ldc %0, vbr" : : "r" (vbr_old)); -+ -+ free_page(vbr_new); -+ -+ /* enable PLL1 */ -+ frqcr = ctrl_inw(FRQCR); -+ frqcr |= FRQCR_PSTBY; -+ ctrl_outw(frqcr, FRQCR); -+ udelay(50); -+ frqcr |= FRQCR_PLLEN; -+ ctrl_outw(frqcr, FRQCR); -+ -+ ctrl_outb(stbcr, STBCR); -+ -+ clear_bl_bit(); -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/process.c linux-2.6.17/arch/sh/kernel/process.c ---- linux-2.6.17-vanilla/arch/sh/kernel/process.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/process.c 2006-07-12 16:54:22.000000000 +0000 -@@ -227,13 +227,13 @@ - return fpvalid; - } - --/* -+/* - * Capture the user space registers if the task is not running (in user space) - */ - int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs) - { - struct pt_regs ptregs; -- -+ - ptregs = *task_pt_regs(tsk); - elf_core_copy_regs(regs, &ptregs); - -@@ -262,6 +262,7 @@ - unsigned long unused, - struct task_struct *p, struct pt_regs *regs) - { -+ struct thread_info *ti = task_thread_info(p); - struct pt_regs *childregs; - #if defined(CONFIG_SH_FPU) - struct task_struct *tsk = current; -@@ -276,8 +277,10 @@ - - if (user_mode(regs)) { - childregs->regs[15] = usp; -+ ti->addr_limit = USER_DS; - } else { - childregs->regs[15] = (unsigned long)task_stack_page(p) + THREAD_SIZE; -+ ti->addr_limit = KERNEL_DS; - } - if (clone_flags & CLONE_SETTLS) { - childregs->gbr = childregs->regs[0]; -@@ -345,7 +348,7 @@ - - /* - * Restore the kernel mode register -- * k7 (r7_bank1) -+ * k7 (r7_bank1) - */ - asm volatile("ldc %0, r7_bank" - : /* no output */ -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/ptrace.c linux-2.6.17/arch/sh/kernel/ptrace.c ---- linux-2.6.17-vanilla/arch/sh/kernel/ptrace.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/ptrace.c 2006-07-12 16:54:22.000000000 +0000 -@@ -225,7 +225,6 @@ - - case PTRACE_SETDSPREGS: { - unsigned long dp; -- int i; - - ret = -EIO; - dp = ((unsigned long) child) + THREAD_SIZE - -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/relocate_kernel.S linux-2.6.17/arch/sh/kernel/relocate_kernel.S ---- linux-2.6.17-vanilla/arch/sh/kernel/relocate_kernel.S 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/relocate_kernel.S 2006-07-12 16:54:22.000000000 +0000 -@@ -12,8 +12,8 @@ - #include <linux/linkage.h> - - #define PAGE_SIZE 4096 /* must be same value as in <asm/page.h> */ -- -- -+ -+ - .globl relocate_new_kernel - relocate_new_kernel: - /* r4 = indirection_page */ -@@ -30,43 +30,43 @@ - - bra 1f - mov r4,r0 /* cmd = indirection_page */ --0: -- mov.l @r4+,r0 /* cmd = *ind++ */ -+0: -+ mov.l @r4+,r0 /* cmd = *ind++ */ - - 1: /* addr = (cmd | 0xa0000000) & 0xfffffff0 */ - mov r0,r2 - or r9,r2 - mov #-16,r1 -- and r1,r2 -+ and r1,r2 - - /* if(cmd & IND_DESTINATION) dst = addr */ -- tst #1,r0 -+ tst #1,r0 - bt 2f -- bra 0b -- mov r2,r5 -+ bra 0b -+ mov r2,r5 - - 2: /* else if(cmd & IND_INDIRECTION) ind = addr */ -- tst #2,r0 -+ tst #2,r0 - bt 3f -- bra 0b -- mov r2,r4 -+ bra 0b -+ mov r2,r4 - - 3: /* else if(cmd & IND_DONE) goto 6 */ -- tst #4,r0 -+ tst #4,r0 - bt 4f - bra 6f - nop - - 4: /* else if(cmd & IND_SOURCE) memcpy(dst,addr,PAGE_SIZE) */ -- tst #8,r0 -+ tst #8,r0 - bt 0b - -- mov r8,r3 -- shlr2 r3 -- shlr2 r3 --5: -+ mov r8,r3 -+ shlr2 r3 -+ shlr2 r3 -+5: - dt r3 -- mov.l @r2+,r1 /* 16n+0 */ -+ mov.l @r2+,r1 /* 16n+0 */ - mov.l r1,@r5 - add #4,r5 - mov.l @r2+,r1 /* 16n+4 */ -@@ -79,7 +79,7 @@ - mov.l r1,@r5 - add #4,r5 - bf 5b -- -+ - bra 0b - nop - 6: -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/semaphore.c linux-2.6.17/arch/sh/kernel/semaphore.c ---- linux-2.6.17-vanilla/arch/sh/kernel/semaphore.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/semaphore.c 2006-07-12 16:54:22.000000000 +0000 -@@ -14,7 +14,7 @@ - #include <asm/semaphore.h> - #include <asm/semaphore-helper.h> - --spinlock_t semaphore_wake_lock; -+DEFINE_SPINLOCK(semaphore_wake_lock); - - /* - * Semaphores are implemented using a two-way counter: -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/setup.c linux-2.6.17/arch/sh/kernel/setup.c ---- linux-2.6.17-vanilla/arch/sh/kernel/setup.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/setup.c 2006-07-12 16:54:22.000000000 +0000 -@@ -493,7 +493,7 @@ - * unified cache on the SH-2 and SH-3, as well as the harvard - * style cache on the SH-4. - */ -- if (test_bit(SH_CACHE_COMBINED, &(boot_cpu_data.icache.flags))) { -+ if (boot_cpu_data.icache.flags & SH_CACHE_COMBINED) { - seq_printf(m, "unified\n"); - show_cacheinfo(m, "cache", boot_cpu_data.icache); - } else { -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/sh_ksyms.c linux-2.6.17/arch/sh/kernel/sh_ksyms.c ---- linux-2.6.17-vanilla/arch/sh/kernel/sh_ksyms.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/sh_ksyms.c 2006-07-12 16:54:22.000000000 +0000 -@@ -28,21 +28,11 @@ - - /* platform dependent support */ - EXPORT_SYMBOL(dump_fpu); --EXPORT_SYMBOL(iounmap); --EXPORT_SYMBOL(enable_irq); --EXPORT_SYMBOL(disable_irq); --EXPORT_SYMBOL(probe_irq_mask); - EXPORT_SYMBOL(kernel_thread); --EXPORT_SYMBOL(disable_irq_nosync); - EXPORT_SYMBOL(irq_desc); - EXPORT_SYMBOL(no_irq_type); - --EXPORT_SYMBOL(strstr); - EXPORT_SYMBOL(strlen); --EXPORT_SYMBOL(strnlen); --EXPORT_SYMBOL(strchr); --EXPORT_SYMBOL(strcat); --EXPORT_SYMBOL(strncat); - - /* PCI exports */ - #ifdef CONFIG_PCI -@@ -53,13 +43,8 @@ - /* mem exports */ - EXPORT_SYMBOL(memchr); - EXPORT_SYMBOL(memcpy); --EXPORT_SYMBOL(memcpy_fromio); --EXPORT_SYMBOL(memcpy_toio); - EXPORT_SYMBOL(memset); --EXPORT_SYMBOL(memset_io); - EXPORT_SYMBOL(memmove); --EXPORT_SYMBOL(memcmp); --EXPORT_SYMBOL(memscan); - EXPORT_SYMBOL(__copy_user); - EXPORT_SYMBOL(boot_cpu_data); - -@@ -101,6 +86,7 @@ - EXPORT_SYMBOL(flush_cache_range); - EXPORT_SYMBOL(flush_dcache_page); - EXPORT_SYMBOL(__flush_purge_region); -+EXPORT_SYMBOL(clear_user_page); - #endif - - #if defined(CONFIG_SH7705_CACHE_32KB) -@@ -117,7 +103,12 @@ - EXPORT_SYMBOL(synchronize_irq); - #endif - -+#ifdef CONFIG_PM -+EXPORT_SYMBOL(pm_suspend); -+#endif -+ - EXPORT_SYMBOL(csum_partial); -+#ifdef CONFIG_IPV6 - EXPORT_SYMBOL(csum_ipv6_magic); --EXPORT_SYMBOL(consistent_sync); -+#endif - EXPORT_SYMBOL(clear_page); -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/sys_sh.c linux-2.6.17/arch/sh/kernel/sys_sh.c ---- linux-2.6.17-vanilla/arch/sh/kernel/sys_sh.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/sys_sh.c 2006-07-12 16:54:22.000000000 +0000 -@@ -21,7 +21,7 @@ - #include <linux/mman.h> - #include <linux/file.h> - #include <linux/utsname.h> -- -+#include <asm/cacheflush.h> - #include <asm/uaccess.h> - #include <asm/ipc.h> - -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/syscalls.S linux-2.6.17/arch/sh/kernel/syscalls.S ---- linux-2.6.17-vanilla/arch/sh/kernel/syscalls.S 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/syscalls.S 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1,354 @@ -+/* -+ * arch/sh/kernel/syscalls.S -+ * -+ * System call table for SuperH -+ * -+ * Copyright (C) 1999, 2000, 2002 Niibe Yutaka -+ * Copyright (C) 2003 Paul Mundt -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * -+ */ -+ -+#include <linux/sys.h> -+#include <linux/linkage.h> -+#include <linux/config.h> -+ -+#if !defined(CONFIG_NFSD) && !defined(CONFIG_NFSD_MODULE) -+#define sys_nfsservctl sys_ni_syscall -+#endif -+ -+#if !defined(CONFIG_MMU) -+#define sys_madvise sys_ni_syscall -+#define sys_readahead sys_ni_syscall -+#define sys_mprotect sys_ni_syscall -+#define sys_msync sys_ni_syscall -+#define sys_mlock sys_ni_syscall -+#define sys_munlock sys_ni_syscall -+#define sys_mlockall sys_ni_syscall -+#define sys_munlockall sys_ni_syscall -+#define sys_mremap sys_ni_syscall -+#define sys_mincore sys_ni_syscall -+#define sys_remap_file_pages sys_ni_syscall -+#endif -+ -+ .data -+ENTRY(sys_call_table) -+ .long sys_ni_syscall /* 0 - old "setup()" system call*/ -+ .long sys_exit -+ .long sys_fork -+ .long sys_read -+ .long sys_write -+ .long sys_open /* 5 */ -+ .long sys_close -+ .long sys_waitpid -+ .long sys_creat -+ .long sys_link -+ .long sys_unlink /* 10 */ -+ .long sys_execve -+ .long sys_chdir -+ .long sys_time -+ .long sys_mknod -+ .long sys_chmod /* 15 */ -+ .long sys_lchown16 -+ .long sys_ni_syscall /* old break syscall holder */ -+ .long sys_stat -+ .long sys_lseek -+ .long sys_getpid /* 20 */ -+ .long sys_mount -+ .long sys_oldumount -+ .long sys_setuid16 -+ .long sys_getuid16 -+ .long sys_stime /* 25 */ -+ .long sys_ptrace -+ .long sys_alarm -+ .long sys_fstat -+ .long sys_pause -+ .long sys_utime /* 30 */ -+ .long sys_ni_syscall /* old stty syscall holder */ -+ .long sys_ni_syscall /* old gtty syscall holder */ -+ .long sys_access -+ .long sys_nice -+ .long sys_ni_syscall /* 35 */ /* old ftime syscall holder */ -+ .long sys_sync -+ .long sys_kill -+ .long sys_rename -+ .long sys_mkdir -+ .long sys_rmdir /* 40 */ -+ .long sys_dup -+ .long sys_pipe -+ .long sys_times -+ .long sys_ni_syscall /* old prof syscall holder */ -+ .long sys_brk /* 45 */ -+ .long sys_setgid16 -+ .long sys_getgid16 -+ .long sys_signal -+ .long sys_geteuid16 -+ .long sys_getegid16 /* 50 */ -+ .long sys_acct -+ .long sys_umount /* recycled never used phys() */ -+ .long sys_ni_syscall /* old lock syscall holder */ -+ .long sys_ioctl -+ .long sys_fcntl /* 55 */ -+ .long sys_ni_syscall /* old mpx syscall holder */ -+ .long sys_setpgid -+ .long sys_ni_syscall /* old ulimit syscall holder */ -+ .long sys_ni_syscall /* sys_olduname */ -+ .long sys_umask /* 60 */ -+ .long sys_chroot -+ .long sys_ustat -+ .long sys_dup2 -+ .long sys_getppid -+ .long sys_getpgrp /* 65 */ -+ .long sys_setsid -+ .long sys_sigaction -+ .long sys_sgetmask -+ .long sys_ssetmask -+ .long sys_setreuid16 /* 70 */ -+ .long sys_setregid16 -+ .long sys_sigsuspend -+ .long sys_sigpending -+ .long sys_sethostname -+ .long sys_setrlimit /* 75 */ -+ .long sys_old_getrlimit -+ .long sys_getrusage -+ .long sys_gettimeofday -+ .long sys_settimeofday -+ .long sys_getgroups16 /* 80 */ -+ .long sys_setgroups16 -+ .long sys_ni_syscall /* sys_oldselect */ -+ .long sys_symlink -+ .long sys_lstat -+ .long sys_readlink /* 85 */ -+ .long sys_uselib -+ .long sys_swapon -+ .long sys_reboot -+ .long old_readdir -+ .long old_mmap /* 90 */ -+ .long sys_munmap -+ .long sys_truncate -+ .long sys_ftruncate -+ .long sys_fchmod -+ .long sys_fchown16 /* 95 */ -+ .long sys_getpriority -+ .long sys_setpriority -+ .long sys_ni_syscall /* old profil syscall holder */ -+ .long sys_statfs -+ .long sys_fstatfs /* 100 */ -+ .long sys_ni_syscall /* ioperm */ -+ .long sys_socketcall -+ .long sys_syslog -+ .long sys_setitimer -+ .long sys_getitimer /* 105 */ -+ .long sys_newstat -+ .long sys_newlstat -+ .long sys_newfstat -+ .long sys_uname -+ .long sys_ni_syscall /* 110 */ /* iopl */ -+ .long sys_vhangup -+ .long sys_ni_syscall /* idle */ -+ .long sys_ni_syscall /* vm86old */ -+ .long sys_wait4 -+ .long sys_swapoff /* 115 */ -+ .long sys_sysinfo -+ .long sys_ipc -+ .long sys_fsync -+ .long sys_sigreturn -+ .long sys_clone /* 120 */ -+ .long sys_setdomainname -+ .long sys_newuname -+ .long sys_ni_syscall /* sys_modify_ldt */ -+ .long sys_adjtimex -+ .long sys_mprotect /* 125 */ -+ .long sys_sigprocmask -+ .long sys_ni_syscall /* old "create_module" */ -+ .long sys_init_module -+ .long sys_delete_module -+ .long sys_ni_syscall /* 130: old "get_kernel_syms" */ -+ .long sys_quotactl -+ .long sys_getpgid -+ .long sys_fchdir -+ .long sys_bdflush -+ .long sys_sysfs /* 135 */ -+ .long sys_personality -+ .long sys_ni_syscall /* for afs_syscall */ -+ .long sys_setfsuid16 -+ .long sys_setfsgid16 -+ .long sys_llseek /* 140 */ -+ .long sys_getdents -+ .long sys_select -+ .long sys_flock -+ .long sys_msync -+ .long sys_readv /* 145 */ -+ .long sys_writev -+ .long sys_getsid -+ .long sys_fdatasync -+ .long sys_sysctl -+ .long sys_mlock /* 150 */ -+ .long sys_munlock -+ .long sys_mlockall -+ .long sys_munlockall -+ .long sys_sched_setparam -+ .long sys_sched_getparam /* 155 */ -+ .long sys_sched_setscheduler -+ .long sys_sched_getscheduler -+ .long sys_sched_yield -+ .long sys_sched_get_priority_max -+ .long sys_sched_get_priority_min /* 160 */ -+ .long sys_sched_rr_get_interval -+ .long sys_nanosleep -+ .long sys_mremap -+ .long sys_setresuid16 -+ .long sys_getresuid16 /* 165 */ -+ .long sys_ni_syscall /* vm86 */ -+ .long sys_ni_syscall /* old "query_module" */ -+ .long sys_poll -+ .long sys_nfsservctl -+ .long sys_setresgid16 /* 170 */ -+ .long sys_getresgid16 -+ .long sys_prctl -+ .long sys_rt_sigreturn -+ .long sys_rt_sigaction -+ .long sys_rt_sigprocmask /* 175 */ -+ .long sys_rt_sigpending -+ .long sys_rt_sigtimedwait -+ .long sys_rt_sigqueueinfo -+ .long sys_rt_sigsuspend -+ .long sys_pread_wrapper /* 180 */ -+ .long sys_pwrite_wrapper -+ .long sys_chown16 -+ .long sys_getcwd -+ .long sys_capget -+ .long sys_capset /* 185 */ -+ .long sys_sigaltstack -+ .long sys_sendfile -+ .long sys_ni_syscall /* streams1 */ -+ .long sys_ni_syscall /* streams2 */ -+ .long sys_vfork /* 190 */ -+ .long sys_getrlimit -+ .long sys_mmap2 -+ .long sys_truncate64 -+ .long sys_ftruncate64 -+ .long sys_stat64 /* 195 */ -+ .long sys_lstat64 -+ .long sys_fstat64 -+ .long sys_lchown -+ .long sys_getuid -+ .long sys_getgid /* 200 */ -+ .long sys_geteuid -+ .long sys_getegid -+ .long sys_setreuid -+ .long sys_setregid -+ .long sys_getgroups /* 205 */ -+ .long sys_setgroups -+ .long sys_fchown -+ .long sys_setresuid -+ .long sys_getresuid -+ .long sys_setresgid /* 210 */ -+ .long sys_getresgid -+ .long sys_chown -+ .long sys_setuid -+ .long sys_setgid -+ .long sys_setfsuid /* 215 */ -+ .long sys_setfsgid -+ .long sys_pivot_root -+ .long sys_mincore -+ .long sys_madvise -+ .long sys_getdents64 /* 220 */ -+ .long sys_fcntl64 -+ .long sys_ni_syscall /* reserved for TUX */ -+ .long sys_ni_syscall /* Reserved for Security */ -+ .long sys_gettid -+ .long sys_readahead /* 225 */ -+ .long sys_setxattr -+ .long sys_lsetxattr -+ .long sys_fsetxattr -+ .long sys_getxattr -+ .long sys_lgetxattr /* 230 */ -+ .long sys_fgetxattr -+ .long sys_listxattr -+ .long sys_llistxattr -+ .long sys_flistxattr -+ .long sys_removexattr /* 235 */ -+ .long sys_lremovexattr -+ .long sys_fremovexattr -+ .long sys_tkill -+ .long sys_sendfile64 -+ .long sys_futex /* 240 */ -+ .long sys_sched_setaffinity -+ .long sys_sched_getaffinity -+ .long sys_ni_syscall -+ .long sys_ni_syscall -+ .long sys_io_setup /* 245 */ -+ .long sys_io_destroy -+ .long sys_io_getevents -+ .long sys_io_submit -+ .long sys_io_cancel -+ .long sys_fadvise64 /* 250 */ -+ .long sys_ni_syscall -+ .long sys_exit_group -+ .long sys_lookup_dcookie -+ .long sys_epoll_create -+ .long sys_epoll_ctl /* 255 */ -+ .long sys_epoll_wait -+ .long sys_remap_file_pages -+ .long sys_set_tid_address -+ .long sys_timer_create -+ .long sys_timer_settime /* 260 */ -+ .long sys_timer_gettime -+ .long sys_timer_getoverrun -+ .long sys_timer_delete -+ .long sys_clock_settime -+ .long sys_clock_gettime /* 265 */ -+ .long sys_clock_getres -+ .long sys_clock_nanosleep -+ .long sys_statfs64 -+ .long sys_fstatfs64 -+ .long sys_tgkill /* 270 */ -+ .long sys_utimes -+ .long sys_fadvise64_64_wrapper -+ .long sys_ni_syscall /* Reserved for vserver */ -+ .long sys_ni_syscall /* Reserved for mbind */ -+ .long sys_ni_syscall /* 275 - get_mempolicy */ -+ .long sys_ni_syscall /* set_mempolicy */ -+ .long sys_mq_open -+ .long sys_mq_unlink -+ .long sys_mq_timedsend -+ .long sys_mq_timedreceive /* 280 */ -+ .long sys_mq_notify -+ .long sys_mq_getsetattr -+ .long sys_kexec_load -+ .long sys_waitid -+ .long sys_add_key /* 285 */ -+ .long sys_request_key -+ .long sys_keyctl -+ .long sys_ioprio_set -+ .long sys_ioprio_get -+ .long sys_inotify_init /* 290 */ -+ .long sys_inotify_add_watch -+ .long sys_inotify_rm_watch -+ .long sys_migrate_pages -+ .long sys_openat -+ .long sys_mkdirat /* 295 */ -+ .long sys_mknodat -+ .long sys_fchownat -+ .long sys_futimesat -+ .long sys_fstatat64 -+ .long sys_unlinkat /* 300 */ -+ .long sys_renameat -+ .long sys_linkat -+ .long sys_symlinkat -+ .long sys_readlinkat -+ .long sys_fchmodat /* 305 */ -+ .long sys_faccessat -+ .long sys_ni_syscall /* Reserved for pselect6 */ -+ .long sys_ni_syscall /* Reserved for ppoll */ -+ .long sys_unshare -+ .long sys_set_robust_list /* 310 */ -+ .long sys_get_robust_list -+ .long sys_splice -+ .long sys_sync_file_range -+ .long sys_tee -+ .long sys_vmsplice /* 315 */ -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/time.c linux-2.6.17/arch/sh/kernel/time.c ---- linux-2.6.17-vanilla/arch/sh/kernel/time.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/time.c 2006-07-12 16:54:22.000000000 +0000 -@@ -30,11 +30,11 @@ - /* XXX: Can we initialize this in a routine somewhere? Dreamcast doesn't want - * these routines anywhere... */ - #ifdef CONFIG_SH_RTC --void (*rtc_get_time)(struct timespec *) = sh_rtc_gettimeofday; --int (*rtc_set_time)(const time_t) = sh_rtc_settimeofday; -+void (*rtc_sh_get_time)(struct timespec *) = sh_rtc_gettimeofday; -+int (*rtc_sh_set_time)(const time_t) = sh_rtc_settimeofday; - #else --void (*rtc_get_time)(struct timespec *); --int (*rtc_set_time)(const time_t); -+void (*rtc_sh_get_time)(struct timespec *); -+int (*rtc_sh_set_time)(const time_t); - #endif - - /* -@@ -136,7 +136,7 @@ - xtime.tv_sec > last_rtc_update + 660 && - (xtime.tv_nsec / 1000) >= 500000 - ((unsigned) TICK_SIZE) / 2 && - (xtime.tv_nsec / 1000) <= 500000 + ((unsigned) TICK_SIZE) / 2) { -- if (rtc_set_time(xtime.tv_sec) == 0) -+ if (rtc_sh_set_time(xtime.tv_sec) == 0) - last_rtc_update = xtime.tv_sec; - else - /* do it again in 60s */ -@@ -144,8 +144,33 @@ - } - } - -+#ifdef CONFIG_PM -+int timer_suspend(struct sys_device *dev, pm_message_t state) -+{ -+ struct sys_timer *sys_timer = container_of(dev, struct sys_timer, dev); -+ -+ sys_timer->ops->stop(); -+ -+ return 0; -+} -+ -+int timer_resume(struct sys_device *dev) -+{ -+ struct sys_timer *sys_timer = container_of(dev, struct sys_timer, dev); -+ -+ sys_timer->ops->start(); -+ -+ return 0; -+} -+#else -+#define timer_suspend NULL -+#define timer_resume NULL -+#endif -+ - static struct sysdev_class timer_sysclass = { - set_kset_name("timer"), -+ .suspend = timer_suspend, -+ .resume = timer_resume, - }; - - static int __init timer_init_sysfs(void) -@@ -169,8 +194,8 @@ - - clk_init(); - -- if (rtc_get_time) { -- rtc_get_time(&xtime); -+ if (rtc_sh_get_time) { -+ rtc_sh_get_time(&xtime); - } else { - xtime.tv_sec = mktime(2000, 1, 1, 0, 0, 0); - xtime.tv_nsec = 0; -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/timers/CVS/Entries linux-2.6.17/arch/sh/kernel/timers/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/kernel/timers/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/timers/CVS/Entries 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.1/Sat Mar 26 20:25:36 2005/-ko/ -+/timer.c/1.1/Sat Mar 26 20:25:36 2005/-ko/ -+/timer-tmu.c/1.4/Sat Jul 8 20:16:10 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/timers/CVS/Repository linux-2.6.17/arch/sh/kernel/timers/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/kernel/timers/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/timers/CVS/Repository 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/kernel/timers -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/timers/CVS/Root linux-2.6.17/arch/sh/kernel/timers/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/kernel/timers/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/timers/CVS/Root 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/timers/timer-tmu.c linux-2.6.17/arch/sh/kernel/timers/timer-tmu.c ---- linux-2.6.17-vanilla/arch/sh/kernel/timers/timer-tmu.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/timers/timer-tmu.c 2006-07-12 16:54:22.000000000 +0000 -@@ -132,17 +132,17 @@ - ctrl_outl(0xffffffff, TMU0_TCOR); - ctrl_outl(0xffffffff, TMU0_TCNT); - -- rtc_get_time(&ts2); -+ rtc_sh_get_time(&ts2); - - do { -- rtc_get_time(&ts1); -+ rtc_sh_get_time(&ts1); - } while (ts1.tv_nsec == ts2.tv_nsec && ts1.tv_sec == ts2.tv_sec); - - /* actually start the timer */ - ctrl_outb(TMU_TSTR_INIT, TMU_TSTR); - - do { -- rtc_get_time(&ts2); -+ rtc_sh_get_time(&ts2); - } while (ts1.tv_nsec == ts2.tv_nsec && ts1.tv_sec == ts2.tv_sec); - - freq = 0xffffffff - ctrl_inl(TMU0_TCNT); -@@ -188,6 +188,18 @@ - .ops = &tmu_clk_ops, - }; - -+static int tmu_timer_start(void) -+{ -+ ctrl_outb(TMU_TSTR_INIT, TMU_TSTR); -+ return 0; -+} -+ -+static int tmu_timer_stop(void) -+{ -+ ctrl_outb(0, TMU_TSTR); -+ return 0; -+} -+ - static int tmu_timer_init(void) - { - unsigned long interval; -@@ -197,7 +209,7 @@ - tmu0_clk.parent = clk_get("module_clk"); - - /* Start TMU0 */ -- ctrl_outb(0, TMU_TSTR); -+ tmu_timer_stop(); - #if !defined(CONFIG_CPU_SUBTYPE_SH7300) && !defined(CONFIG_CPU_SUBTYPE_SH7760) - ctrl_outb(TMU_TOCR_INIT, TMU_TOCR); - #endif -@@ -211,13 +223,15 @@ - ctrl_outl(interval, TMU0_TCOR); - ctrl_outl(interval, TMU0_TCNT); - -- ctrl_outb(TMU_TSTR_INIT, TMU_TSTR); -+ tmu_timer_start(); - - return 0; - } - - struct sys_timer_ops tmu_timer_ops = { - .init = tmu_timer_init, -+ .start = tmu_timer_start, -+ .stop = tmu_timer_stop, - .get_frequency = tmu_timer_get_frequency, - .get_offset = tmu_timer_get_offset, - }; -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/traps.c linux-2.6.17/arch/sh/kernel/traps.c ---- linux-2.6.17-vanilla/arch/sh/kernel/traps.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/traps.c 2006-07-12 16:54:22.000000000 +0000 -@@ -37,40 +37,15 @@ - - #ifdef CONFIG_SH_KGDB - #include <asm/kgdb.h> --#define CHK_REMOTE_DEBUG(regs) \ --{ \ -- if ((kgdb_debug_hook != (kgdb_debug_hook_t *) NULL) && (!user_mode(regs))) \ -- { \ -- (*kgdb_debug_hook)(regs); \ -- } \ -+#define CHK_REMOTE_DEBUG(regs) \ -+{ \ -+ if (kgdb_debug_hook && !user_mode(regs))\ -+ (*kgdb_debug_hook)(regs); \ - } - #else - #define CHK_REMOTE_DEBUG(regs) - #endif - --#define DO_ERROR(trapnr, signr, str, name, tsk) \ --asmlinkage void do_##name(unsigned long r4, unsigned long r5, \ -- unsigned long r6, unsigned long r7, \ -- struct pt_regs regs) \ --{ \ -- unsigned long error_code; \ -- \ -- /* Check if it's a DSP instruction */ \ -- if (is_dsp_inst(®s)) { \ -- /* Enable DSP mode, and restart instruction. */ \ -- regs.sr |= SR_DSP; \ -- return; \ -- } \ -- \ -- asm volatile("stc r2_bank, %0": "=r" (error_code)); \ -- local_irq_enable(); \ -- tsk->thread.error_code = error_code; \ -- tsk->thread.trap_no = trapnr; \ -- CHK_REMOTE_DEBUG(®s); \ -- force_sig(signr, tsk); \ -- die_if_no_fixup(str,®s,error_code); \ --} -- - #ifdef CONFIG_CPU_SH2 - #define TRAP_RESERVED_INST 4 - #define TRAP_ILLEGAL_SLOT_INST 6 -@@ -87,7 +62,7 @@ - #define VMALLOC_OFFSET (8*1024*1024) - #define MODULE_RANGE (8*1024*1024) - --spinlock_t die_lock; -+DEFINE_SPINLOCK(die_lock); - - void die(const char * str, struct pt_regs * regs, long err) - { -@@ -576,8 +551,117 @@ - #define is_dsp_inst(regs) (0) - #endif /* CONFIG_SH_DSP */ - --DO_ERROR(TRAP_RESERVED_INST, SIGILL, "reserved instruction", reserved_inst, current) --DO_ERROR(TRAP_ILLEGAL_SLOT_INST, SIGILL, "illegal slot instruction", illegal_slot_inst, current) -+extern int do_fpu_inst(unsigned short, struct pt_regs*); -+ -+asmlinkage void do_reserved_inst(unsigned long r4, unsigned long r5, -+ unsigned long r6, unsigned long r7, -+ struct pt_regs regs) -+{ -+ unsigned long error_code; -+ struct task_struct *tsk = current; -+ -+#ifdef CONFIG_SH_FPU_EMU -+ unsigned short inst; -+ int err; -+ -+ get_user(inst, (unsigned short*)regs.pc); -+ -+ err = do_fpu_inst(inst, ®s); -+ if (!err) { -+ regs.pc += 2; -+ return; -+ } -+ /* not a FPU inst. */ -+#endif -+ -+#ifdef CONFIG_SH_DSP -+ /* Check if it's a DSP instruction */ -+ if (is_dsp_inst(®s)) { -+ /* Enable DSP mode, and restart instruction. */ -+ regs.sr |= SR_DSP; -+ return; -+ } -+#endif -+ -+ asm volatile("stc r2_bank, %0": "=r" (error_code)); -+ local_irq_enable(); -+ tsk->thread.error_code = error_code; -+ tsk->thread.trap_no = TRAP_RESERVED_INST; -+ CHK_REMOTE_DEBUG(®s); -+ force_sig(SIGILL, tsk); -+ die_if_no_fixup("reserved instruction", ®s, error_code); -+} -+ -+#ifdef CONFIG_SH_FPU_EMU -+static int emulate_branch(unsigned short inst, struct pt_regs* regs) -+{ -+ /* -+ * bfs: 8fxx: PC+=d*2+4; -+ * bts: 8dxx: PC+=d*2+4; -+ * bra: axxx: PC+=D*2+4; -+ * bsr: bxxx: PC+=D*2+4 after PR=PC+4; -+ * braf:0x23: PC+=Rn*2+4; -+ * bsrf:0x03: PC+=Rn*2+4 after PR=PC+4; -+ * jmp: 4x2b: PC=Rn; -+ * jsr: 4x0b: PC=Rn after PR=PC+4; -+ * rts: 000b: PC=PR; -+ */ -+ if ((inst & 0xfd00) == 0x8d00) { -+ regs->pc += SH_PC_8BIT_OFFSET(inst); -+ return 0; -+ } -+ -+ if ((inst & 0xe000) == 0xa000) { -+ regs->pc += SH_PC_12BIT_OFFSET(inst); -+ return 0; -+ } -+ -+ if ((inst & 0xf0df) == 0x0003) { -+ regs->pc += regs->regs[(inst & 0x0f00) >> 8] + 4; -+ return 0; -+ } -+ -+ if ((inst & 0xf0df) == 0x400b) { -+ regs->pc = regs->regs[(inst & 0x0f00) >> 8]; -+ return 0; -+ } -+ -+ if ((inst & 0xffff) == 0x000b) { -+ regs->pc = regs->pr; -+ return 0; -+ } -+ -+ return 1; -+} -+#endif -+ -+asmlinkage void do_illegal_slot_inst(unsigned long r4, unsigned long r5, -+ unsigned long r6, unsigned long r7, -+ struct pt_regs regs) -+{ -+ unsigned long error_code; -+ struct task_struct *tsk = current; -+#ifdef CONFIG_SH_FPU_EMU -+ unsigned short inst; -+ -+ get_user(inst, (unsigned short *)regs.pc + 1); -+ if (!do_fpu_inst(inst, ®s)) { -+ get_user(inst, (unsigned short *)regs.pc); -+ if (!emulate_branch(inst, ®s)) -+ return; -+ /* fault in branch.*/ -+ } -+ /* not a FPU inst. */ -+#endif -+ -+ asm volatile("stc r2_bank, %0": "=r" (error_code)); -+ local_irq_enable(); -+ tsk->thread.error_code = error_code; -+ tsk->thread.trap_no = TRAP_RESERVED_INST; -+ CHK_REMOTE_DEBUG(®s); -+ force_sig(SIGILL, tsk); -+ die_if_no_fixup("illegal slot instruction", ®s, error_code); -+} - - asmlinkage void do_exception_error(unsigned long r4, unsigned long r5, - unsigned long r6, unsigned long r7, -@@ -635,14 +719,16 @@ - exception_handling_table[TRAP_ILLEGAL_SLOT_INST] - = (void *)do_illegal_slot_inst; - --#ifdef CONFIG_CPU_SH4 -- if (!(cpu_data->flags & CPU_HAS_FPU)) { -- /* For SH-4 lacking an FPU, treat floating point instructions -- as reserved. */ -- /* entry 64 corresponds to EXPEVT=0x800 */ -- exception_handling_table[64] = (void *)do_reserved_inst; -- exception_handling_table[65] = (void *)do_illegal_slot_inst; -- } -+#if defined(CONFIG_CPU_SH4) && !defined(CONFIG_SH_FPU) || \ -+ defined(CONFIG_SH_FPU_EMU) -+ /* -+ * For SH-4 lacking an FPU, treat floating point instructions as -+ * reserved. They'll be handled in the math-emu case, or faulted on -+ * otherwise. -+ */ -+ /* entry 64 corresponds to EXPEVT=0x800 */ -+ exception_handling_table[64] = (void *)do_reserved_inst; -+ exception_handling_table[65] = (void *)do_illegal_slot_inst; - #endif - - /* Setup VBR for boot cpu */ -diff -ruN linux-2.6.17-vanilla/arch/sh/kernel/vmlinux.lds.S linux-2.6.17/arch/sh/kernel/vmlinux.lds.S ---- linux-2.6.17-vanilla/arch/sh/kernel/vmlinux.lds.S 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/kernel/vmlinux.lds.S 2006-07-12 16:54:22.000000000 +0000 -@@ -63,8 +63,6 @@ - - . = ALIGN(8192); /* init_task */ - .data.init_task : { *(.data.init_task) } -- /* stack */ -- .stack : { stack = .; _stack = .; } - - . = ALIGN(4096); /* Init code and data */ - __init_begin = .; -diff -ruN linux-2.6.17-vanilla/arch/sh/lib/CVS/Entries linux-2.6.17/arch/sh/lib/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/lib/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/lib/CVS/Entries 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1,13 @@ -+/Makefile/1.9/Tue Jun 29 01:59:02 2004/-ko/ -+/checksum.S/1.3/Fri Sep 2 23:02:18 2005/-ko/ -+/delay.c/1.5/Mon Aug 29 21:01:18 2005/-ko/ -+/div64-generic.c/1.2/Sat Sep 6 00:27:16 2003// -+/div64.S/1.2/Sat Jul 19 22:56:20 2003// -+/memchr.S/1.2/Wed Apr 7 20:18:39 2004/-ko/ -+/memcpy-sh4.S/1.1/Tue Jun 29 01:59:02 2004/-ko/ -+/memcpy.S/1.2/Wed Apr 7 20:18:39 2004/-ko/ -+/memmove.S/1.4/Tue Apr 20 13:06:06 2004/-ko/ -+/memset.S/1.3/Mon Jul 25 00:55:36 2005/-ko/ -+/strlen.S/1.2/Wed Apr 7 20:18:39 2004/-ko/ -+/udivdi3.c/1.2/Sat Jul 19 22:56:20 2003// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/lib/CVS/Repository linux-2.6.17/arch/sh/lib/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/lib/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/lib/CVS/Repository 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/lib -diff -ruN linux-2.6.17-vanilla/arch/sh/lib/CVS/Root linux-2.6.17/arch/sh/lib/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/lib/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/lib/CVS/Root 2006-07-12 16:54:22.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/lib/checksum.S linux-2.6.17/arch/sh/lib/checksum.S ---- linux-2.6.17-vanilla/arch/sh/lib/checksum.S 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/lib/checksum.S 2006-07-12 16:54:22.000000000 +0000 -@@ -202,8 +202,9 @@ - cmp/pz r6 ! Jump if we had at least two bytes. - bt/s 1f - clrt -+ add #2,r6 ! r6 was < 2. Deal with it. - bra 4f -- add #2,r6 ! r6 was < 2. Deal with it. -+ mov r6,r2 - - 3: ! Handle different src and dest alignments. - ! This is not common, so simple byte by byte copy will do. -diff -ruN linux-2.6.17-vanilla/arch/sh/lib/memcpy-sh4.S linux-2.6.17/arch/sh/lib/memcpy-sh4.S ---- linux-2.6.17-vanilla/arch/sh/lib/memcpy-sh4.S 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/lib/memcpy-sh4.S 2006-07-12 16:54:22.000000000 +0000 -@@ -20,7 +20,7 @@ - ! - ! GHIJ KLMN OPQR --> ...G HIJK LMNO PQR. - ! -- -+ - ! Size is 16 or greater, and may have trailing bytes - - .balign 32 -@@ -39,7 +39,7 @@ - ! 6 cycles, 4 bytes per iteration - 3: mov.l @(r0,r5),r1 ! 21 LS (latency=2) ! NMLK - mov r7, r3 ! 5 MT (latency=0) ! RQPO -- -+ - cmp/hi r2,r0 ! 57 MT - shll16 r3 ! 103 EX - -@@ -48,7 +48,7 @@ - - shlr8 r6 ! 106 EX ! xNML - mov r1, r7 ! 5 MT (latency=0) -- -+ - or r6,r3 ! 82 EX ! ONML - bt/s 3b ! 109 BR - -@@ -81,7 +81,7 @@ - - 8: cmp/hi r2,r0 ! 57 MT - mov.b @(r0,r5),r1 ! 20 LS (latency=2) -- -+ - bt/s 8b ! 109 BR - - mov.b r1,@-r0 ! 29 LS -@@ -89,11 +89,11 @@ - 9: rts - nop - -- -+ - ! - ! GHIJ KLMN OPQR --> .GHI JKLM NOPQ R... - ! -- -+ - ! Size is 16 or greater, and may have trailing bytes - - .balign 32 -@@ -112,7 +112,7 @@ - ! 6 cycles, 4 bytes per iteration - 3: mov.l @(r0,r5),r1 ! 21 LS (latency=2) ! NMLK - mov r7, r3 ! 5 MT (latency=0) ! RQPO -- -+ - cmp/hi r2,r0 ! 57 MT - shll8 r3 ! 102 EX ! QPOx - -@@ -121,7 +121,7 @@ - - shlr8 r6 ! 106 EX ! xxxN - mov r1, r7 ! 5 MT (latency=0) -- -+ - or r6,r3 ! 82 EX ! QPON - bt/s 3b ! 109 BR - -@@ -149,14 +149,14 @@ - - 8: cmp/hi r2,r0 ! 57 MT - mov.b @(r0,r5),r1 ! 20 LS (latency=2) -- -+ - bt/s 8b ! 109 BR - - mov.b r1,@-r0 ! 29 LS - - 9: rts - nop -- -+ - ENTRY(memcpy) - - ! Calculate the invariants which will be used in the remainder -@@ -168,7 +168,7 @@ - ! r0 --> [ ... ] r0+r5 --> [ ... ] - ! - ! -- -+ - ! Short circuit the common case of src, dst and len being 32 bit aligned - ! and test for zero length move - -@@ -201,7 +201,7 @@ - ! 36 82 49-50 66-70 80-85 - ! However the penalty for getting it 'wrong' is much higher for long word - ! aligned data (and this is more common), so use a value of 16. -- -+ - cmp/gt r6,r1 ! 56 MT - - add #-1,r5 ! 50 EX -@@ -212,7 +212,7 @@ - - mov.b @(r0,r5),r1 ! 20 LS (latency=2) - bf/s 4f ! 111 BR -- -+ - add #-1,r3 ! 50 EX - tst r6, r6 ! 86 MT - -@@ -247,7 +247,7 @@ - bt/s 2f ! 111 BR - and r0,r3 ! 78 EX - -- ! 3 cycles, 1 byte per iteration -+ ! 3 cycles, 1 byte per iteration - 1: dt r3 ! 67 EX - mov.b @(r0,r5),r1 ! 19 LS (latency=2) - -@@ -257,10 +257,10 @@ - mov.b r1,@-r0 ! 28 LS - - 2: add #1, r5 ! 79 EX -- -+ - ! Now select the appropriate bulk transfer code based on relative - ! alignment of src and dst. -- -+ - mov r0, r3 ! 5 MT (latency=0) - - mov r5, r0 ! 5 MT (latency=0) -@@ -270,7 +270,7 @@ - mov #64, r7 ! 6 EX - - ! bit 0 clear -- -+ - cmp/ge r7, r6 ! 55 MT - - bt/s 2f ! 111 BR -@@ -289,7 +289,7 @@ - - bra .Lcase2b - nop -- -+ - ! bit 0 set - 1: tst #2, r0 ! 87 MT - -@@ -298,7 +298,7 @@ - - bra .Lcase3 - nop -- -+ - - ! - ! GHIJ KLMN OPQR --> GHIJ KLMN OPQR -@@ -306,7 +306,7 @@ - - ! src, dst and size are all long word aligned - ! size is non-zero -- -+ - .balign 32 - .Lcase00: - mov #64, r1 ! 6 EX -@@ -319,7 +319,7 @@ - shlr2 r6 ! 105 EX - - shlr r6 ! 104 EX -- mov.l @(r0, r5), r1 ! 21 LS (latency=2) -+ mov.l @(r0, r5), r1 ! 21 LS (latency=2) - - bf/s 4f ! 111 BR - add #-8, r3 ! 50 EX -@@ -343,7 +343,7 @@ - 5: rts - nop - -- -+ - ! Size is 16 or greater and less than 64, but may have trailing bytes - - .balign 32 -@@ -351,7 +351,7 @@ - add #-4, r5 ! 50 EX - mov r4, r7 ! 5 MT (latency=0) - -- mov.l @(r0, r5), r1 ! 21 LS (latency=2) -+ mov.l @(r0, r5), r1 ! 21 LS (latency=2) - mov #4, r2 ! 6 EX - - add #11, r7 ! 50 EX -@@ -377,7 +377,7 @@ - ! Copy the final 0-3 bytes - - add #3,r5 ! 50 EX -- -+ - cmp/eq r0, r4 ! 54 MT - add #-10, r7 ! 50 EX - -@@ -386,7 +386,7 @@ - ! 3 cycles, 1 byte per iteration - 1: mov.b @(r0,r5),r1 ! 19 LS - cmp/hi r7,r0 ! 57 MT -- -+ - bt/s 1b ! 111 BR - mov.b r1,@-r0 ! 28 LS - -@@ -427,10 +427,10 @@ - add #8, r3 ! 50 EX - - tst #0x18, r0 ! 87 MT -- -+ - bt/s 1f ! 109 BR - mov.l r1,@-r0 ! 30 LS -- -+ - ! 4 cycles, 2 long words per iteration - 3: mov.l @(r0, r5), r1 ! 21 LS (latency=2) - -@@ -450,7 +450,7 @@ - ! We could do this with the four scratch registers, but if src - ! and dest hit the same cache line, this will thrash, so make - ! use of additional registers. -- ! -+ ! - ! We also need r0 as a temporary (for movca), so 'undo' the invariant: - ! r5: src (was r0+r5) - ! r1: dest (was r0) -@@ -459,14 +459,14 @@ - ! - 1: mov.l r8, @-r15 ! 30 LS - add r0, r5 ! 49 EX -- -+ - mov.l r9, @-r15 ! 30 LS - mov r0, r1 ! 5 MT (latency=0) -- -+ - mov.l r10, @-r15 ! 30 LS - add #-0x1c, r5 ! 50 EX -- -- mov.l r11, @-r15 ! 30 LS -+ -+ mov.l r11, @-r15 ! 30 LS - - ! 16 cycles, 32 bytes per iteration - 2: mov.l @(0x00,r5),r0 ! 18 LS (latency=2) -@@ -510,10 +510,10 @@ - sub r4, r1 ! 75 EX (len remaining) - - ! number of trailing bytes is non-zero -- ! -+ ! - ! invariants restored (r5 already decremented by 4) - ! also r1=num bytes remaining -- -+ - mov #4, r2 ! 6 EX - mov r4, r7 ! 5 MT (latency=0) - -@@ -523,7 +523,7 @@ - bf/s 5f ! 108 BR - add #11, r7 ! 50 EX - -- mov.l @(r0, r5), r6 ! 21 LS (latency=2) -+ mov.l @(r0, r5), r6 ! 21 LS (latency=2) - tst r2, r1 ! 86 MT - - mov r5, r3 ! 5 MT (latency=0) -@@ -553,11 +553,11 @@ - - bt 9f ! 110 BR - add #3,r5 ! 50 EX -- -+ - ! 3 cycles, 1 byte per iteration - 1: mov.b @(r0,r5),r1 ! 19 LS - cmp/hi r7,r0 ! 57 MT -- -+ - bt/s 1b ! 111 BR - mov.b r1,@-r0 ! 28 LS - -@@ -567,7 +567,7 @@ - ! - ! GHIJ KLMN OPQR --> ..GH IJKL MNOP QR.. - ! -- -+ - .balign 32 - .Lcase2: - ! Size is 16 or greater and less then 64, but may have trailing bytes -@@ -608,21 +608,21 @@ - - cmp/eq r3, r0 ! 54 MT - add #0x1f, r2 ! 50 EX -- -+ - add #-2, r5 ! 50 EX - bt/s 1f ! 110 BR - and r1, r2 ! 78 EX -- -+ - ! Copy a short word one at a time until we are cache line aligned - ! Normal values: r0, r2, r3, r4 - ! Unused: r1, r6, r7 - ! Mod: r5 (=r5-2) - ! - add #2, r3 ! 50 EX -- -+ - 2: mov.w @(r0,r5),r1 ! 20 LS (latency=2) - cmp/eq r3,r0 ! 54 MT -- -+ - bf/s 2b ! 111 BR - - mov.w r1,@-r0 ! 29 LS -@@ -635,7 +635,7 @@ - ! We could do this with the four scratch registers, but if src - ! and dest hit the same cache line, this will thrash, so make - ! use of additional registers. -- ! -+ ! - ! We also need r0 as a temporary (for movca), so 'undo' the invariant: - ! r5: src (was r0+r5) - ! r1: dest (was r0) -@@ -644,16 +644,16 @@ - ! - 1: mov.l r8, @-r15 ! 30 LS - add r0, r5 ! 49 EX -- -+ - mov.l r9, @-r15 ! 30 LS - mov r0, r1 ! 5 MT (latency=0) -- -+ - mov.l r10, @-r15 ! 30 LS - add #-0x1e, r5 ! 50 EX -- -- mov.l r11, @-r15 ! 30 LS -- -- mov.l r12, @-r15 ! 30 LS -+ -+ mov.l r11, @-r15 ! 30 LS -+ -+ mov.l r12, @-r15 ! 30 LS - - ! 17 cycles, 32 bytes per iteration - #ifdef CONFIG_CPU_LITTLE_ENDIAN -@@ -690,7 +690,7 @@ - xtrct r12, r11 ! 48 EX - - mov.l r6, @(0x08,r1) ! 33 LS -- -+ - mov.l r7, @(0x0c,r1) ! 33 LS - - mov.l r8, @(0x10,r1) ! 33 LS -@@ -739,7 +739,7 @@ - - mov.l r6, @(0x18,r1) ! 33 LS - xtrct r12, r11 ! 48 EX -- -+ - mov.l r7, @(0x14,r1) ! 33 LS - - mov.l r8, @(0x10,r1) ! 33 LS -@@ -770,7 +770,7 @@ - 1: mov.l @r15+, r8 ! 15 LS - - add #0x1e, r5 ! 50 EX -- -+ - ! Finish off a short word at a time - ! r5 must be invariant - 2 - 10: mov r4,r2 ! 5 MT (latency=0) -@@ -780,7 +780,7 @@ - bf/s 1f ! 109 BR - - add #2, r2 ! 50 EX -- -+ - 3: mov.w @(r0,r5),r1 ! 20 LS - cmp/hi r2,r0 ! 57 MT - -@@ -788,7 +788,7 @@ - - mov.w r1,@-r0 ! 29 LS - 1: -- -+ - ! - ! Finally, copy the last byte if necessary - cmp/eq r4,r0 ! 54 MT -diff -ruN linux-2.6.17-vanilla/arch/sh/lib/memmove.S linux-2.6.17/arch/sh/lib/memmove.S ---- linux-2.6.17-vanilla/arch/sh/lib/memmove.S 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/lib/memmove.S 2006-07-12 16:54:22.000000000 +0000 -@@ -1,4 +1,4 @@ --/* $Id: memmove.S,v 1.2 2001/07/27 11:51:09 gniibe Exp $ -+/* $Id: memmove.S,v 1.3 2003/05/04 19:29:54 lethal Exp $ - * - * "memmove" implementation of SuperH - * -diff -ruN linux-2.6.17-vanilla/arch/sh/lib/memset.S linux-2.6.17/arch/sh/lib/memset.S ---- linux-2.6.17-vanilla/arch/sh/lib/memset.S 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/lib/memset.S 2006-07-12 16:54:23.000000000 +0000 -@@ -29,6 +29,7 @@ - bf/s 1b - mov.b r5,@-r4 - 2: ! make VVVV -+ extu.b r5,r5 - swap.b r5,r0 ! V0 - or r0,r5 ! VV - swap.w r5,r0 ! VV00 -diff -ruN linux-2.6.17-vanilla/arch/sh/math-emu/CVS/Entries linux-2.6.17/arch/sh/math-emu/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/math-emu/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/math-emu/CVS/Entries 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.1/Wed Jul 12 10:35:55 2006/-ko/ -+/math.c/1.1/Wed Jul 12 10:35:55 2006/-ko/ -+/sfp-util.h/1.1/Wed Jul 12 10:35:55 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/math-emu/CVS/Repository linux-2.6.17/arch/sh/math-emu/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/math-emu/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/math-emu/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/math-emu -diff -ruN linux-2.6.17-vanilla/arch/sh/math-emu/CVS/Root linux-2.6.17/arch/sh/math-emu/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/math-emu/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/math-emu/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/math-emu/Makefile linux-2.6.17/arch/sh/math-emu/Makefile ---- linux-2.6.17-vanilla/arch/sh/math-emu/Makefile 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/math-emu/Makefile 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+obj-y := math.o -diff -ruN linux-2.6.17-vanilla/arch/sh/math-emu/math.c linux-2.6.17/arch/sh/math-emu/math.c ---- linux-2.6.17-vanilla/arch/sh/math-emu/math.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/math-emu/math.c 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,624 @@ -+/* -+ * arch/sh/math-emu/math.c -+ * -+ * Copyright (C) 2006 Takashi YOSHII <takasi-y@ops.dti.ne.jp> -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/config.h> -+#include <linux/kernel.h> -+#include <linux/errno.h> -+#include <linux/types.h> -+#include <linux/sched.h> -+#include <linux/signal.h> -+ -+#include <asm/system.h> -+#include <asm/uaccess.h> -+#include <asm/processor.h> -+#include <asm/io.h> -+ -+#include "sfp-util.h" -+#include <math-emu/soft-fp.h> -+#include <math-emu/single.h> -+#include <math-emu/double.h> -+ -+#define FPUL (fregs->fpul) -+#define FPSCR (fregs->fpscr) -+#define FPSCR_RM (FPSCR&3) -+#define FPSCR_DN ((FPSCR>>18)&1) -+#define FPSCR_PR ((FPSCR>>19)&1) -+#define FPSCR_SZ ((FPSCR>>20)&1) -+#define FPSCR_FR ((FPSCR>>21)&1) -+#define FPSCR_MASK 0x003fffffUL -+ -+#define BANK(n) (n^(FPSCR_FR?16:0)) -+#define FR ((unsigned long*)(fregs->fp_regs)) -+#define FR0 (FR[BANK(0)]) -+#define FRn (FR[BANK(n)]) -+#define FRm (FR[BANK(m)]) -+#define DR ((unsigned long long*)(fregs->fp_regs)) -+#define DRn (DR[BANK(n)/2]) -+#define DRm (DR[BANK(m)/2]) -+ -+#define XREG(n) (n^16) -+#define XFn (FR[BANK(XREG(n))]) -+#define XFm (FR[BANK(XREG(m))]) -+#define XDn (DR[BANK(XREG(n))/2]) -+#define XDm (DR[BANK(XREG(m))/2]) -+ -+#define R0 (regs->regs[0]) -+#define Rn (regs->regs[n]) -+#define Rm (regs->regs[m]) -+ -+#define WRITE(d,a) ({if(put_user(d, (typeof (d)*)a)) return -EFAULT;}) -+#define READ(d,a) ({if(get_user(d, (typeof (d)*)a)) return -EFAULT;}) -+ -+#define PACK_S(r,f) FP_PACK_SP(&r,f) -+#define UNPACK_S(f,r) FP_UNPACK_SP(f,&r) -+#define PACK_D(r,f) \ -+ {u32 t[2]; FP_PACK_DP(t,f); ((u32*)&r)[0]=t[1]; ((u32*)&r)[1]=t[0];} -+#define UNPACK_D(f,r) \ -+ {u32 t[2]; t[0]=((u32*)&r)[1]; t[1]=((u32*)&r)[0]; FP_UNPACK_DP(f,t);} -+ -+// 2 args instructions. -+#define BOTH_PRmn(op,x) \ -+ FP_DECL_EX; if(FPSCR_PR) op(D,x,DRm,DRn); else op(S,x,FRm,FRn); -+ -+#define CMP_X(SZ,R,M,N) do{ \ -+ FP_DECL_##SZ(Fm); FP_DECL_##SZ(Fn); \ -+ UNPACK_##SZ(Fm, M); UNPACK_##SZ(Fn, N); \ -+ FP_CMP_##SZ(R, Fn, Fm, 2); }while(0) -+#define EQ_X(SZ,R,M,N) do{ \ -+ FP_DECL_##SZ(Fm); FP_DECL_##SZ(Fn); \ -+ UNPACK_##SZ(Fm, M); UNPACK_##SZ(Fn, N); \ -+ FP_CMP_EQ_##SZ(R, Fn, Fm); }while(0) -+#define CMP(OP) ({ int r; BOTH_PRmn(OP##_X,r); r; }) -+ -+static int -+fcmp_gt(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, int n) -+{ -+ if (CMP(CMP) > 0) -+ regs->sr |= 1; -+ else -+ regs->sr &= ~1; -+ -+ return 0; -+} -+ -+static int -+fcmp_eq(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, int n) -+{ -+ if (CMP(CMP /*EQ*/) == 0) -+ regs->sr |= 1; -+ else -+ regs->sr &= ~1; -+ return 0; -+} -+ -+#define ARITH_X(SZ,OP,M,N) do{ \ -+ FP_DECL_##SZ(Fm); FP_DECL_##SZ(Fn); FP_DECL_##SZ(Fr); \ -+ UNPACK_##SZ(Fm, M); UNPACK_##SZ(Fn, N); \ -+ FP_##OP##_##SZ(Fr, Fn, Fm); \ -+ PACK_##SZ(N, Fr); }while(0) -+ -+static int -+fadd(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, int n) -+{ -+ BOTH_PRmn(ARITH_X, ADD); -+ return 0; -+} -+ -+static int -+fsub(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, int n) -+{ -+ BOTH_PRmn(ARITH_X, SUB); -+ return 0; -+} -+ -+static int -+fmul(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, int n) -+{ -+ BOTH_PRmn(ARITH_X, MUL); -+ return 0; -+} -+ -+static int -+fdiv(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, int n) -+{ -+ BOTH_PRmn(ARITH_X, DIV); -+ return 0; -+} -+ -+static int -+fmac(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, int n) -+{ -+ FP_DECL_EX; -+ FP_DECL_S(Fr); -+ FP_DECL_S(Ft); -+ FP_DECL_S(F0); -+ FP_DECL_S(Fm); -+ FP_DECL_S(Fn); -+ UNPACK_S(F0, FR0); -+ UNPACK_S(Fm, FRm); -+ UNPACK_S(Fn, FRn); -+ FP_MUL_S(Ft, Fm, F0); -+ FP_ADD_S(Fr, Fn, Ft); -+ PACK_S(FRn, Fr); -+ return 0; -+} -+ -+// to process fmov's extention (odd n for DR access XD). -+#define FMOV_EXT(x) if(x&1) x+=16-1 -+ -+static int -+fmov_idx_reg(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, -+ int n) -+{ -+ if (FPSCR_SZ) { -+ FMOV_EXT(n); -+ READ(FRn, Rm + R0 + 4); -+ n++; -+ READ(FRn, Rm + R0); -+ } else { -+ READ(FRn, Rm + R0); -+ } -+ -+ return 0; -+} -+ -+static int -+fmov_mem_reg(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, -+ int n) -+{ -+ if (FPSCR_SZ) { -+ FMOV_EXT(n); -+ READ(FRn, Rm + 4); -+ n++; -+ READ(FRn, Rm); -+ } else { -+ READ(FRn, Rm); -+ } -+ -+ return 0; -+} -+ -+static int -+fmov_inc_reg(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, -+ int n) -+{ -+ if (FPSCR_SZ) { -+ FMOV_EXT(n); -+ READ(FRn, Rm + 4); -+ n++; -+ READ(FRn, Rm); -+ Rm += 8; -+ } else { -+ READ(FRn, Rm); -+ Rm += 4; -+ } -+ -+ return 0; -+} -+ -+static int -+fmov_reg_idx(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, -+ int n) -+{ -+ if (FPSCR_SZ) { -+ FMOV_EXT(m); -+ WRITE(FRm, Rn + R0 + 4); -+ m++; -+ WRITE(FRm, Rn + R0); -+ } else { -+ WRITE(FRm, Rn + R0); -+ } -+ -+ return 0; -+} -+ -+static int -+fmov_reg_mem(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, -+ int n) -+{ -+ if (FPSCR_SZ) { -+ FMOV_EXT(m); -+ WRITE(FRm, Rn + 4); -+ m++; -+ WRITE(FRm, Rn); -+ } else { -+ WRITE(FRm, Rn); -+ } -+ -+ return 0; -+} -+ -+static int -+fmov_reg_dec(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, -+ int n) -+{ -+ if (FPSCR_SZ) { -+ FMOV_EXT(m); -+ Rn -= 8; -+ WRITE(FRm, Rn + 4); -+ m++; -+ WRITE(FRm, Rn); -+ } else { -+ Rn -= 4; -+ WRITE(FRm, Rn); -+ } -+ -+ return 0; -+} -+ -+static int -+fmov_reg_reg(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, -+ int n) -+{ -+ if (FPSCR_SZ) { -+ FMOV_EXT(m); -+ FMOV_EXT(n); -+ DRn = DRm; -+ } else { -+ FRn = FRm; -+ } -+ -+ return 0; -+} -+ -+static int -+fnop_mn(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int m, int n) -+{ -+ return -EINVAL; -+} -+ -+// 1 arg instructions. -+#define NOTYETn(i) static int i(struct sh_fpu_soft_struct *fregs, int n) \ -+ { printk( #i " not yet done.\n"); return 0; } -+ -+NOTYETn(ftrv) -+NOTYETn(fsqrt) -+NOTYETn(fipr) -+NOTYETn(fsca) -+NOTYETn(fsrra) -+ -+#define EMU_FLOAT_X(SZ,N) do { \ -+ FP_DECL_##SZ(Fn); \ -+ FP_FROM_INT_##SZ(Fn, FPUL, 32, int); \ -+ PACK_##SZ(N, Fn); }while(0) -+static int ffloat(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ FP_DECL_EX; -+ -+ if (FPSCR_PR) -+ EMU_FLOAT_X(D, DRn); -+ else -+ EMU_FLOAT_X(S, FRn); -+ -+ return 0; -+} -+ -+#define EMU_FTRC_X(SZ,N) do { \ -+ FP_DECL_##SZ(Fn); \ -+ UNPACK_##SZ(Fn, N); \ -+ FP_TO_INT_##SZ(FPUL, Fn, 32, 1); }while(0) -+static int ftrc(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ FP_DECL_EX; -+ -+ if (FPSCR_PR) -+ EMU_FTRC_X(D, DRn); -+ else -+ EMU_FTRC_X(S, FRn); -+ -+ return 0; -+} -+ -+static int fcnvsd(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ FP_DECL_EX; -+ FP_DECL_S(Fn); -+ FP_DECL_D(Fr); -+ UNPACK_S(Fn, FPUL); -+ FP_CONV(D, S, 2, 1, Fr, Fn); -+ PACK_D(DRn, Fr); -+ return 0; -+} -+ -+static int fcnvds(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ FP_DECL_EX; -+ FP_DECL_D(Fn); -+ FP_DECL_S(Fr); -+ UNPACK_D(Fn, DRn); -+ FP_CONV(S, D, 1, 2, Fr, Fn); -+ PACK_S(FPUL, Fr); -+ return 0; -+} -+ -+static int fxchg(struct sh_fpu_soft_struct *fregs, int flag) -+{ -+ FPSCR ^= flag; -+ return 0; -+} -+ -+static int fsts(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ FRn = FPUL; -+ return 0; -+} -+ -+static int flds(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ FPUL = FRn; -+ return 0; -+} -+ -+static int fneg(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ FRn ^= (1 << (_FP_W_TYPE_SIZE - 1)); -+ return 0; -+} -+ -+static int fabs(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ FRn &= ~(1 << (_FP_W_TYPE_SIZE - 1)); -+ return 0; -+} -+ -+static int fld0(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ FRn = 0; -+ return 0; -+} -+ -+static int fld1(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ FRn = (_FP_EXPBIAS_S << (_FP_FRACBITS_S - 1)); -+ return 0; -+} -+ -+static int fnop_n(struct sh_fpu_soft_struct *fregs, int n) -+{ -+ return -EINVAL; -+} -+ -+/// Instruction decoders. -+ -+static int id_fxfd(struct sh_fpu_soft_struct *, int); -+static int id_fnxd(struct sh_fpu_soft_struct *, struct pt_regs *, int, int); -+ -+static int (*fnxd[])(struct sh_fpu_soft_struct *, int) = { -+ fsts, flds, ffloat, ftrc, fneg, fabs, fsqrt, fsrra, -+ fld0, fld1, fcnvsd, fcnvds, fnop_n, fnop_n, fipr, id_fxfd -+}; -+ -+static int (*fnmx[])(struct sh_fpu_soft_struct *, struct pt_regs *, int, int) = { -+ fadd, fsub, fmul, fdiv, fcmp_eq, fcmp_gt, fmov_idx_reg, fmov_reg_idx, -+ fmov_mem_reg, fmov_inc_reg, fmov_reg_mem, fmov_reg_dec, -+ fmov_reg_reg, id_fnxd, fmac, fnop_mn}; -+ -+static int id_fxfd(struct sh_fpu_soft_struct *fregs, int x) -+{ -+ const int flag[] = { FPSCR_SZ, FPSCR_PR, FPSCR_FR, 0 }; -+ switch (x & 3) { -+ case 3: -+ fxchg(fregs, flag[x >> 2]); -+ break; -+ case 1: -+ ftrv(fregs, x - 1); -+ break; -+ default: -+ fsca(fregs, x); -+ } -+ return 0; -+} -+ -+static int -+id_fnxd(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, int x, int n) -+{ -+ return (fnxd[x])(fregs, n); -+} -+ -+static int -+id_fnmx(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, u16 code) -+{ -+ int n = (code >> 8) & 0xf, m = (code >> 4) & 0xf, x = code & 0xf; -+ return (fnmx[x])(fregs, regs, m, n); -+} -+ -+static int -+id_sys(struct sh_fpu_soft_struct *fregs, struct pt_regs *regs, u16 code) -+{ -+ int n = ((code >> 8) & 0xf); -+ unsigned long *reg = (code & 0x0010) ? &FPUL : &FPSCR; -+ -+ switch (code & 0xf0ff) { -+ case 0x005a: -+ case 0x006a: -+ Rn = *reg; -+ break; -+ case 0x405a: -+ case 0x406a: -+ *reg = Rn; -+ break; -+ case 0x4052: -+ case 0x4062: -+ Rn -= 4; -+ WRITE(*reg, Rn); -+ break; -+ case 0x4056: -+ case 0x4066: -+ READ(*reg, Rn); -+ Rn += 4; -+ break; -+ default: -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+static int fpu_emulate(u16 code, struct sh_fpu_soft_struct *fregs, struct pt_regs *regs) -+{ -+ if ((code & 0xf000) == 0xf000) -+ return id_fnmx(fregs, regs, code); -+ else -+ return id_sys(fregs, regs, code); -+} -+ -+/** -+ * denormal_to_double - Given denormalized float number, -+ * store double float -+ * -+ * @fpu: Pointer to sh_fpu_hard structure -+ * @n: Index to FP register -+ */ -+static void denormal_to_double(struct sh_fpu_hard_struct *fpu, int n) -+{ -+ unsigned long du, dl; -+ unsigned long x = fpu->fpul; -+ int exp = 1023 - 126; -+ -+ if (x != 0 && (x & 0x7f800000) == 0) { -+ du = (x & 0x80000000); -+ while ((x & 0x00800000) == 0) { -+ x <<= 1; -+ exp--; -+ } -+ x &= 0x007fffff; -+ du |= (exp << 20) | (x >> 3); -+ dl = x << 29; -+ -+ fpu->fp_regs[n] = du; -+ fpu->fp_regs[n+1] = dl; -+ } -+} -+ -+/** -+ * ieee_fpe_handler - Handle denormalized number exception -+ * -+ * @regs: Pointer to register structure -+ * -+ * Returns 1 when it's handled (should not cause exception). -+ */ -+static int ieee_fpe_handler(struct pt_regs *regs) -+{ -+ unsigned short insn = *(unsigned short *)regs->pc; -+ unsigned short finsn; -+ unsigned long nextpc; -+ int nib[4] = { -+ (insn >> 12) & 0xf, -+ (insn >> 8) & 0xf, -+ (insn >> 4) & 0xf, -+ insn & 0xf}; -+ -+ if (nib[0] == 0xb || -+ (nib[0] == 0x4 && nib[2] == 0x0 && nib[3] == 0xb)) /* bsr & jsr */ -+ regs->pr = regs->pc + 4; -+ -+ if (nib[0] == 0xa || nib[0] == 0xb) { /* bra & bsr */ -+ nextpc = regs->pc + 4 + ((short) ((insn & 0xfff) << 4) >> 3); -+ finsn = *(unsigned short *) (regs->pc + 2); -+ } else if (nib[0] == 0x8 && nib[1] == 0xd) { /* bt/s */ -+ if (regs->sr & 1) -+ nextpc = regs->pc + 4 + ((char) (insn & 0xff) << 1); -+ else -+ nextpc = regs->pc + 4; -+ finsn = *(unsigned short *) (regs->pc + 2); -+ } else if (nib[0] == 0x8 && nib[1] == 0xf) { /* bf/s */ -+ if (regs->sr & 1) -+ nextpc = regs->pc + 4; -+ else -+ nextpc = regs->pc + 4 + ((char) (insn & 0xff) << 1); -+ finsn = *(unsigned short *) (regs->pc + 2); -+ } else if (nib[0] == 0x4 && nib[3] == 0xb && -+ (nib[2] == 0x0 || nib[2] == 0x2)) { /* jmp & jsr */ -+ nextpc = regs->regs[nib[1]]; -+ finsn = *(unsigned short *) (regs->pc + 2); -+ } else if (nib[0] == 0x0 && nib[3] == 0x3 && -+ (nib[2] == 0x0 || nib[2] == 0x2)) { /* braf & bsrf */ -+ nextpc = regs->pc + 4 + regs->regs[nib[1]]; -+ finsn = *(unsigned short *) (regs->pc + 2); -+ } else if (insn == 0x000b) { /* rts */ -+ nextpc = regs->pr; -+ finsn = *(unsigned short *) (regs->pc + 2); -+ } else { -+ nextpc = regs->pc + 2; -+ finsn = insn; -+ } -+ -+ if ((finsn & 0xf1ff) == 0xf0ad) { /* fcnvsd */ -+ struct task_struct *tsk = current; -+ -+ if ((tsk->thread.fpu.hard.fpscr & (1 << 17))) { -+ /* FPU error */ -+ denormal_to_double (&tsk->thread.fpu.hard, -+ (finsn >> 8) & 0xf); -+ tsk->thread.fpu.hard.fpscr &= -+ ~(FPSCR_CAUSE_MASK | FPSCR_FLAG_MASK); -+ set_tsk_thread_flag(tsk, TIF_USEDFPU); -+ } else { -+ tsk->thread.trap_no = 11; -+ tsk->thread.error_code = 0; -+ force_sig(SIGFPE, tsk); -+ } -+ -+ regs->pc = nextpc; -+ return 1; -+ } -+ -+ return 0; -+} -+ -+asmlinkage void do_fpu_error(unsigned long r4, unsigned long r5, -+ unsigned long r6, unsigned long r7, -+ struct pt_regs regs) -+{ -+ struct task_struct *tsk = current; -+ -+ if (ieee_fpe_handler (®s)) -+ return; -+ -+ regs.pc += 2; -+ tsk->thread.trap_no = 11; -+ tsk->thread.error_code = 0; -+ force_sig(SIGFPE, tsk); -+} -+ -+/** -+ * fpu_init - Initialize FPU registers -+ * @fpu: Pointer to software emulated FPU registers. -+ */ -+static void fpu_init(struct sh_fpu_soft_struct *fpu) -+{ -+ int i; -+ -+ fpu->fpscr = FPSCR_INIT; -+ fpu->fpul = 0; -+ -+ for (i = 0; i < 16; i++) { -+ fpu->fp_regs[i] = 0; -+ fpu->xfp_regs[i]= 0; -+ } -+} -+ -+/** -+ * do_fpu_inst - Handle reserved instructions for FPU emulation -+ * @inst: instruction code. -+ * @regs: registers on stack. -+ */ -+int do_fpu_inst(unsigned short inst, struct pt_regs *regs) -+{ -+ struct task_struct *tsk = current; -+ struct sh_fpu_soft_struct *fpu = &(tsk->thread.fpu.soft); -+ -+ if (!test_tsk_thread_flag(tsk, TIF_USEDFPU)) { -+ /* initialize once. */ -+ fpu_init(fpu); -+ set_tsk_thread_flag(tsk, TIF_USEDFPU); -+ } -+ -+ return fpu_emulate(inst, fpu, regs); -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/math-emu/sfp-util.h linux-2.6.17/arch/sh/math-emu/sfp-util.h ---- linux-2.6.17-vanilla/arch/sh/math-emu/sfp-util.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/math-emu/sfp-util.h 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,72 @@ -+/* -+ * These are copied from glibc/stdlib/longlong.h -+ */ -+ -+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -+ do { \ -+ UWtype __x; \ -+ __x = (al) + (bl); \ -+ (sh) = (ah) + (bh) + (__x < (al)); \ -+ (sl) = __x; \ -+ } while (0) -+ -+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -+ do { \ -+ UWtype __x; \ -+ __x = (al) - (bl); \ -+ (sh) = (ah) - (bh) - (__x > (al)); \ -+ (sl) = __x; \ -+ } while (0) -+ -+#define umul_ppmm(w1, w0, u, v) \ -+ __asm__ ("dmulu.l %2,%3\n\tsts macl,%1\n\tsts mach,%0" \ -+ : "=r" ((u32)(w1)), "=r" ((u32)(w0)) \ -+ : "r" ((u32)(u)), "r" ((u32)(v)) \ -+ : "macl", "mach") -+ -+#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2)) -+#define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1)) -+#define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2)) -+ -+#define udiv_qrnnd(q, r, n1, n0, d) \ -+ do { \ -+ UWtype __d1, __d0, __q1, __q0; \ -+ UWtype __r1, __r0, __m; \ -+ __d1 = __ll_highpart (d); \ -+ __d0 = __ll_lowpart (d); \ -+ \ -+ __r1 = (n1) % __d1; \ -+ __q1 = (n1) / __d1; \ -+ __m = (UWtype) __q1 * __d0; \ -+ __r1 = __r1 * __ll_B | __ll_highpart (n0); \ -+ if (__r1 < __m) \ -+ { \ -+ __q1--, __r1 += (d); \ -+ if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\ -+ if (__r1 < __m) \ -+ __q1--, __r1 += (d); \ -+ } \ -+ __r1 -= __m; \ -+ \ -+ __r0 = __r1 % __d1; \ -+ __q0 = __r1 / __d1; \ -+ __m = (UWtype) __q0 * __d0; \ -+ __r0 = __r0 * __ll_B | __ll_lowpart (n0); \ -+ if (__r0 < __m) \ -+ { \ -+ __q0--, __r0 += (d); \ -+ if (__r0 >= (d)) \ -+ if (__r0 < __m) \ -+ __q0--, __r0 += (d); \ -+ } \ -+ __r0 -= __m; \ -+ \ -+ (q) = (UWtype) __q1 * __ll_B | __q0; \ -+ (r) = __r0; \ -+ } while (0) -+ -+#define abort() return 0 -+ -+#define __BYTE_ORDER __LITTLE_ENDIAN -+ -+ -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/CVS/Entries linux-2.6.17/arch/sh/mm/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/mm/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/CVS/Entries 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,25 @@ -+/Kconfig/1.10/Sun Jan 8 12:22:58 2006/-ko/ -+/Makefile/1.14/Wed Jan 4 14:49:04 2006// -+/cache-sh2.c/1.5/Thu Jul 8 13:52:22 2004/-ko/ -+/cache-sh3.c/1.11/Thu Jul 8 13:52:22 2004/-ko/ -+/cache-sh4.c/1.38/Thu Oct 20 22:48:04 2005/-ko/ -+/cache-sh7705.c/1.2/Tue Jun 21 04:15:48 2005/-ko/ -+/clear_page.S/1.14/Sat Jul 2 13:00:24 2005/-ko/ -+/copy_page.S/1.8/Mon Aug 25 17:03:10 2003// -+/extable.c/1.5/Tue Jun 15 18:40:43 2004/-ko/ -+/fault-nommu.c/1.3/Mon Oct 25 10:41:02 2004/-ko/ -+/fault.c/1.21/Mon Mar 27 21:06:14 2006/-ko/ -+/ioremap.c/1.16/Wed Feb 8 13:21:41 2006/-ko/ -+/pg-dma.c/1.4/Sat Mar 6 22:26:37 2004// -+/pg-nommu.c/1.1/Sat Oct 25 21:45:29 2003// -+/pg-sh4.c/1.5/Thu Sep 1 18:59:11 2005/-ko/ -+/pg-sh7705.c/1.2/Tue Jun 21 04:15:48 2005/-ko/ -+/pmb.c/1.2/Tue Jan 3 22:51:47 2006/-ko/ -+/tlb-flush.c/1.1/Sat Dec 31 11:30:47 2005/-ko/ -+/tlb-nommu.c/1.2/Sun May 4 19:29:55 2003/-ko/ -+/tlb-sh3.c/1.7/Sat Aug 13 14:30:27 2005/-ko/ -+/tlb-sh4.c/1.7/Sat Oct 8 22:08:39 2005/-ko/ -+/consistent.c/1.10/Wed Jul 5 14:50:50 2006// -+/hugetlbpage.c/1.12/Wed Jul 5 14:50:50 2006/-ko/ -+/init.c/1.28/Wed Jul 5 14:50:50 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/CVS/Repository linux-2.6.17/arch/sh/mm/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/mm/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/mm -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/CVS/Root linux-2.6.17/arch/sh/mm/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/mm/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/Kconfig linux-2.6.17/arch/sh/mm/Kconfig ---- linux-2.6.17-vanilla/arch/sh/mm/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/Kconfig 2006-07-12 16:54:23.000000000 +0000 -@@ -20,7 +20,6 @@ - config CPU_SH4A - bool - select CPU_SH4 -- select CPU_HAS_INTC2_IRQ - - config CPU_SUBTYPE_ST40 - bool -@@ -144,6 +143,7 @@ - config CPU_SUBTYPE_SH7780 - bool "Support SH7780 processor" - select CPU_SH4A -+ select CPU_HAS_INTC2_IRQ - - endmenu - -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/Makefile linux-2.6.17/arch/sh/mm/Makefile ---- linux-2.6.17-vanilla/arch/sh/mm/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/Makefile 2006-07-12 16:54:23.000000000 +0000 -@@ -12,14 +12,16 @@ - obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o - - mmu-y := fault-nommu.o tlb-nommu.o pg-nommu.o --mmu-$(CONFIG_MMU) := fault.o clear_page.o copy_page.o -+mmu-$(CONFIG_MMU) := fault.o clear_page.o copy_page.o tlb-flush.o \ -+ ioremap.o - - obj-y += $(mmu-y) - - ifdef CONFIG_MMU --obj-$(CONFIG_CPU_SH3) += tlb-sh3.o --obj-$(CONFIG_CPU_SH4) += tlb-sh4.o ioremap.o -+obj-$(CONFIG_CPU_SH3) += tlb-sh3.o -+obj-$(CONFIG_CPU_SH4) += tlb-sh4.o - obj-$(CONFIG_SH7705_CACHE_32KB) += pg-sh7705.o - endif - --obj-$(CONFIG_SH7705_CACHE_32KB) += cache-sh7705.o -+obj-$(CONFIG_SH7705_CACHE_32KB) += cache-sh7705.o -+obj-$(CONFIG_32BIT) += pmb.o -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/cache-sh4.c linux-2.6.17/arch/sh/mm/cache-sh4.c ---- linux-2.6.17-vanilla/arch/sh/mm/cache-sh4.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/cache-sh4.c 2006-07-12 16:54:23.000000000 +0000 -@@ -2,7 +2,7 @@ - * arch/sh/mm/cache-sh4.c - * - * Copyright (C) 1999, 2000, 2002 Niibe Yutaka -- * Copyright (C) 2001, 2002, 2003, 2004 Paul Mundt -+ * Copyright (C) 2001, 2002, 2003, 2004, 2005 Paul Mundt - * Copyright (C) 2003 Richard Curnow - * - * This file is subject to the terms and conditions of the GNU General Public -@@ -26,26 +26,95 @@ - #include <asm/mmu_context.h> - #include <asm/cacheflush.h> - --extern void __flush_cache_4096_all(unsigned long start); --static void __flush_cache_4096_all_ex(unsigned long start); --extern void __flush_dcache_all(void); --static void __flush_dcache_all_ex(void); -+static void __flush_dcache_segment_1way(unsigned long start, -+ unsigned long extent); -+static void __flush_dcache_segment_2way(unsigned long start, -+ unsigned long extent); -+static void __flush_dcache_segment_4way(unsigned long start, -+ unsigned long extent); -+ -+static void __flush_cache_4096(unsigned long addr, unsigned long phys, -+ unsigned long exec_offset); -+ -+/* -+ * This is initialised here to ensure that it is not placed in the BSS. If -+ * that were to happen, note that cache_init gets called before the BSS is -+ * cleared, so this would get nulled out which would be hopeless. -+ */ -+static void (*__flush_dcache_segment_fn)(unsigned long, unsigned long) = -+ (void (*)(unsigned long, unsigned long))0xdeadbeef; -+ -+static void compute_alias(struct cache_info *c) -+{ -+ c->alias_mask = ((c->sets - 1) << c->entry_shift) & ~(PAGE_SIZE - 1); -+ c->n_aliases = (c->alias_mask >> PAGE_SHIFT) + 1; -+} -+ -+static void __init emit_cache_params(void) -+{ -+ printk("PVR=%08x CVR=%08x PRR=%08x\n", -+ ctrl_inl(CCN_PVR), -+ ctrl_inl(CCN_CVR), -+ ctrl_inl(CCN_PRR)); -+ printk("I-cache : n_ways=%d n_sets=%d way_incr=%d\n", -+ cpu_data->icache.ways, -+ cpu_data->icache.sets, -+ cpu_data->icache.way_incr); -+ printk("I-cache : entry_mask=0x%08x alias_mask=0x%08x n_aliases=%d\n", -+ cpu_data->icache.entry_mask, -+ cpu_data->icache.alias_mask, -+ cpu_data->icache.n_aliases); -+ printk("D-cache : n_ways=%d n_sets=%d way_incr=%d\n", -+ cpu_data->dcache.ways, -+ cpu_data->dcache.sets, -+ cpu_data->dcache.way_incr); -+ printk("D-cache : entry_mask=0x%08x alias_mask=0x%08x n_aliases=%d\n", -+ cpu_data->dcache.entry_mask, -+ cpu_data->dcache.alias_mask, -+ cpu_data->dcache.n_aliases); -+ -+ if (!__flush_dcache_segment_fn) -+ panic("unknown number of cache ways\n"); -+} - - /* - * SH-4 has virtually indexed and physically tagged cache. - */ - --struct semaphore p3map_sem[4]; -+/* Worst case assumed to be 64k cache, direct-mapped i.e. 4 synonym bits. */ -+#define MAX_P3_SEMAPHORES 16 -+ -+struct semaphore p3map_sem[MAX_P3_SEMAPHORES]; - - void __init p3_cache_init(void) - { -- if (remap_area_pages(P3SEG, 0, PAGE_SIZE*4, _PAGE_CACHABLE)) -+ int i; -+ -+ compute_alias(&cpu_data->icache); -+ compute_alias(&cpu_data->dcache); -+ -+ switch (cpu_data->dcache.ways) { -+ case 1: -+ __flush_dcache_segment_fn = __flush_dcache_segment_1way; -+ break; -+ case 2: -+ __flush_dcache_segment_fn = __flush_dcache_segment_2way; -+ break; -+ case 4: -+ __flush_dcache_segment_fn = __flush_dcache_segment_4way; -+ break; -+ default: -+ __flush_dcache_segment_fn = NULL; -+ break; -+ } -+ -+ emit_cache_params(); -+ -+ if (remap_area_pages(P3SEG, 0, PAGE_SIZE * 4, _PAGE_CACHABLE)) - panic("%s failed.", __FUNCTION__); - -- sema_init (&p3map_sem[0], 1); -- sema_init (&p3map_sem[1], 1); -- sema_init (&p3map_sem[2], 1); -- sema_init (&p3map_sem[3], 1); -+ for (i = 0; i < cpu_data->dcache.n_aliases; i++) -+ sema_init(&p3map_sem[i], 1); - } - - /* -@@ -90,7 +159,6 @@ - } - } - -- - /* - * No write back please - */ -@@ -109,40 +177,6 @@ - } - } - --static void __flush_dcache_all_ex(void) --{ -- unsigned long addr, end_addr, entry_offset; -- -- end_addr = CACHE_OC_ADDRESS_ARRAY + (cpu_data->dcache.sets << cpu_data->dcache.entry_shift) * cpu_data->dcache.ways; -- entry_offset = 1 << cpu_data->dcache.entry_shift; -- for (addr = CACHE_OC_ADDRESS_ARRAY; addr < end_addr; addr += entry_offset) { -- ctrl_outl(0, addr); -- } --} -- --static void __flush_cache_4096_all_ex(unsigned long start) --{ -- unsigned long addr, entry_offset; -- int i; -- -- entry_offset = 1 << cpu_data->dcache.entry_shift; -- for (i = 0; i < cpu_data->dcache.ways; i++, start += cpu_data->dcache.way_incr) { -- for (addr = CACHE_OC_ADDRESS_ARRAY + start; -- addr < CACHE_OC_ADDRESS_ARRAY + 4096 + start; -- addr += entry_offset) { -- ctrl_outl(0, addr); -- } -- } --} -- --void flush_cache_4096_all(unsigned long start) --{ -- if (cpu_data->dcache.ways == 1) -- __flush_cache_4096_all(start); -- else -- __flush_cache_4096_all_ex(start); --} -- - /* - * Write back the range of D-cache, and purge the I-cache. - * -@@ -154,14 +188,14 @@ - } - - /* -- * Write back the D-cache and purge the I-cache for signal trampoline. -+ * Write back the D-cache and purge the I-cache for signal trampoline. - * .. which happens to be the same behavior as flush_icache_range(). - * So, we simply flush out a line. - */ - void flush_cache_sigtramp(unsigned long addr) - { - unsigned long v, index; -- unsigned long flags; -+ unsigned long flags; - int i; - - v = addr & ~(L1_CACHE_BYTES-1); -@@ -173,29 +207,34 @@ - - local_irq_save(flags); - jump_to_P2(); -- for(i = 0; i < cpu_data->icache.ways; i++, index += cpu_data->icache.way_incr) -+ -+ for (i = 0; i < cpu_data->icache.ways; -+ i++, index += cpu_data->icache.way_incr) - ctrl_outl(0, index); /* Clear out Valid-bit */ -+ - back_to_P1(); -+ wmb(); - local_irq_restore(flags); - } - - static inline void flush_cache_4096(unsigned long start, - unsigned long phys) - { -- unsigned long flags; -- extern void __flush_cache_4096(unsigned long addr, unsigned long phys, unsigned long exec_offset); -+ unsigned long flags; - - /* -- * SH7751, SH7751R, and ST40 have no restriction to handle cache. -- * (While SH7750 must do that at P2 area.) -+ * All types of SH-4 require PC to be in P2 to operate on the I-cache. -+ * Some types of SH-4 require PC to be in P2 to operate on the D-cache. - */ - if ((cpu_data->flags & CPU_HAS_P2_FLUSH_BUG) - || start < CACHE_OC_ADDRESS_ARRAY) { - local_irq_save(flags); -- __flush_cache_4096(start | SH_CACHE_ASSOC, P1SEGADDR(phys), 0x20000000); -+ __flush_cache_4096(start | SH_CACHE_ASSOC, -+ P1SEGADDR(phys), 0x20000000); - local_irq_restore(flags); - } else { -- __flush_cache_4096(start | SH_CACHE_ASSOC, P1SEGADDR(phys), 0); -+ __flush_cache_4096(start | SH_CACHE_ASSOC, -+ P1SEGADDR(phys), 0); - } - } - -@@ -207,13 +246,16 @@ - { - if (test_bit(PG_mapped, &page->flags)) { - unsigned long phys = PHYSADDR(page_address(page)); -+ unsigned long addr = CACHE_OC_ADDRESS_ARRAY; -+ int i, n; - - /* Loop all the D-cache */ -- flush_cache_4096(CACHE_OC_ADDRESS_ARRAY, phys); -- flush_cache_4096(CACHE_OC_ADDRESS_ARRAY | 0x1000, phys); -- flush_cache_4096(CACHE_OC_ADDRESS_ARRAY | 0x2000, phys); -- flush_cache_4096(CACHE_OC_ADDRESS_ARRAY | 0x3000, phys); -+ n = cpu_data->dcache.n_aliases; -+ for (i = 0; i < n; i++, addr += PAGE_SIZE) -+ flush_cache_4096(addr, phys); - } -+ -+ wmb(); - } - - static inline void flush_icache_all(void) -@@ -228,32 +270,38 @@ - ccr |= CCR_CACHE_ICI; - ctrl_outl(ccr, CCR); - -+ /* -+ * back_to_P1() will take care of the barrier for us, don't add -+ * another one! -+ */ -+ - back_to_P1(); - local_irq_restore(flags); - } - -+void flush_dcache_all(void) -+{ -+ (*__flush_dcache_segment_fn)(0UL, cpu_data->dcache.way_size); -+ wmb(); -+} -+ - void flush_cache_all(void) - { -- if (cpu_data->dcache.ways == 1) -- __flush_dcache_all(); -- else -- __flush_dcache_all_ex(); -+ flush_dcache_all(); - flush_icache_all(); - } - - void flush_cache_mm(struct mm_struct *mm) - { -- /* Is there any good way? */ -- /* XXX: possibly call flush_cache_range for each vm area */ -- /* -- * FIXME: Really, the optimal solution here would be able to flush out -- * individual lines created by the specified context, but this isn't -- * feasible for a number of architectures (such as MIPS, and some -- * SPARC) .. is this possible for SuperH? -- * -- * In the meantime, we'll just flush all of the caches.. this -- * seems to be the simplest way to avoid at least a few wasted -- * cache flushes. -Lethal -+ /* -+ * Note : (RPC) since the caches are physically tagged, the only point -+ * of flush_cache_mm for SH-4 is to get rid of aliases from the -+ * D-cache. The assumption elsewhere, e.g. flush_cache_range, is that -+ * lines can stay resident so long as the virtual address they were -+ * accessed with (hence cache set) is in accord with the physical -+ * address (i.e. tag). It's no different here. So I reckon we don't -+ * need to flush the I-cache, since aliases don't matter for that. We -+ * should try that. - */ - flush_cache_all(); - } -@@ -267,24 +315,36 @@ - void flush_cache_page(struct vm_area_struct *vma, unsigned long address, unsigned long pfn) - { - unsigned long phys = pfn << PAGE_SHIFT; -+ unsigned int alias_mask; -+ -+ alias_mask = cpu_data->dcache.alias_mask; - - /* We only need to flush D-cache when we have alias */ -- if ((address^phys) & CACHE_ALIAS) { -+ if ((address^phys) & alias_mask) { - /* Loop 4K of the D-cache */ - flush_cache_4096( -- CACHE_OC_ADDRESS_ARRAY | (address & CACHE_ALIAS), -+ CACHE_OC_ADDRESS_ARRAY | (address & alias_mask), - phys); - /* Loop another 4K of the D-cache */ - flush_cache_4096( -- CACHE_OC_ADDRESS_ARRAY | (phys & CACHE_ALIAS), -+ CACHE_OC_ADDRESS_ARRAY | (phys & alias_mask), - phys); - } - -- if (vma->vm_flags & VM_EXEC) -- /* Loop 4K (half) of the I-cache */ -+ alias_mask = cpu_data->icache.alias_mask; -+ if (vma->vm_flags & VM_EXEC) { -+ /* -+ * Evict entries from the portion of the cache from which code -+ * may have been executed at this address (virtual). There's -+ * no need to evict from the portion corresponding to the -+ * physical address as for the D-cache, because we know the -+ * kernel has never executed the code through its identity -+ * translation. -+ */ - flush_cache_4096( -- CACHE_IC_ADDRESS_ARRAY | (address & 0x1000), -+ CACHE_IC_ADDRESS_ARRAY | (address & alias_mask), - phys); -+ } - } - - /* -@@ -299,52 +359,96 @@ - void flush_cache_range(struct vm_area_struct *vma, unsigned long start, - unsigned long end) - { -- unsigned long p = start & PAGE_MASK; -+ unsigned long d = 0, p = start & PAGE_MASK; -+ unsigned long alias_mask = cpu_data->dcache.alias_mask; -+ unsigned long n_aliases = cpu_data->dcache.n_aliases; -+ unsigned long select_bit; -+ unsigned long all_aliases_mask; -+ unsigned long addr_offset; -+ unsigned long phys; - pgd_t *dir; - pmd_t *pmd; -+ pud_t *pud; - pte_t *pte; - pte_t entry; -- unsigned long phys; -- unsigned long d = 0; -+ int i; -+ -+ /* -+ * If cache is only 4k-per-way, there are never any 'aliases'. Since -+ * the cache is physically tagged, the data can just be left in there. -+ */ -+ if (n_aliases == 0) -+ return; -+ -+ all_aliases_mask = (1 << n_aliases) - 1; -+ -+ /* -+ * Don't bother with the lookup and alias check if we have a -+ * wide range to cover, just blow away the dcache in its -+ * entirety instead. -- PFM. -+ */ -+ if (((end - start) >> PAGE_SHIFT) >= 64) { -+ flush_dcache_all(); -+ -+ if (vma->vm_flags & VM_EXEC) -+ flush_icache_all(); -+ -+ return; -+ } - - dir = pgd_offset(vma->vm_mm, p); -- pmd = pmd_offset(dir, p); -+ pud = pud_offset(dir, p); -+ pmd = pmd_offset(pud, p); -+ end = PAGE_ALIGN(end); - - do { - if (pmd_none(*pmd) || pmd_bad(*pmd)) { -- p &= ~((1 << PMD_SHIFT) -1); -+ p &= ~((1 << PMD_SHIFT) - 1); - p += (1 << PMD_SHIFT); - pmd++; -+ - continue; - } -+ - pte = pte_offset_kernel(pmd, p); -+ - do { - entry = *pte; -+ - if ((pte_val(entry) & _PAGE_PRESENT)) { -- phys = pte_val(entry)&PTE_PHYS_MASK; -- if ((p^phys) & CACHE_ALIAS) { -- d |= 1 << ((p & CACHE_ALIAS)>>12); -- d |= 1 << ((phys & CACHE_ALIAS)>>12); -- if (d == 0x0f) -+ phys = pte_val(entry) & PTE_PHYS_MASK; -+ -+ if ((p ^ phys) & alias_mask) { -+ d |= 1 << ((p & alias_mask) >> PAGE_SHIFT); -+ d |= 1 << ((phys & alias_mask) >> PAGE_SHIFT); -+ -+ if (d == all_aliases_mask) - goto loop_exit; - } - } -+ - pte++; - p += PAGE_SIZE; - } while (p < end && ((unsigned long)pte & ~PAGE_MASK)); - pmd++; - } while (p < end); -- loop_exit: -- if (d & 1) -- flush_cache_4096_all(0); -- if (d & 2) -- flush_cache_4096_all(0x1000); -- if (d & 4) -- flush_cache_4096_all(0x2000); -- if (d & 8) -- flush_cache_4096_all(0x3000); -- if (vma->vm_flags & VM_EXEC) -+ -+loop_exit: -+ for (i = 0, select_bit = 0x1, addr_offset = 0x0; i < n_aliases; -+ i++, select_bit <<= 1, addr_offset += PAGE_SIZE) -+ if (d & select_bit) { -+ (*__flush_dcache_segment_fn)(addr_offset, PAGE_SIZE); -+ wmb(); -+ } -+ -+ if (vma->vm_flags & VM_EXEC) { -+ /* -+ * TODO: Is this required??? Need to look at how I-cache -+ * coherency is assured when new programs are loaded to see if -+ * this matters. -+ */ - flush_icache_all(); -+ } - } - - /* -@@ -358,5 +462,274 @@ - struct page *page, unsigned long addr, int len) - { - flush_cache_page(vma, addr, page_to_pfn(page)); -+ mb(); -+} -+ -+/** -+ * __flush_cache_4096 -+ * -+ * @addr: address in memory mapped cache array -+ * @phys: P1 address to flush (has to match tags if addr has 'A' bit -+ * set i.e. associative write) -+ * @exec_offset: set to 0x20000000 if flush has to be executed from P2 -+ * region else 0x0 -+ * -+ * The offset into the cache array implied by 'addr' selects the -+ * 'colour' of the virtual address range that will be flushed. The -+ * operation (purge/write-back) is selected by the lower 2 bits of -+ * 'phys'. -+ */ -+static void __flush_cache_4096(unsigned long addr, unsigned long phys, -+ unsigned long exec_offset) -+{ -+ int way_count; -+ unsigned long base_addr = addr; -+ struct cache_info *dcache; -+ unsigned long way_incr; -+ unsigned long a, ea, p; -+ unsigned long temp_pc; -+ -+ dcache = &cpu_data->dcache; -+ /* Write this way for better assembly. */ -+ way_count = dcache->ways; -+ way_incr = dcache->way_incr; -+ -+ /* -+ * Apply exec_offset (i.e. branch to P2 if required.). -+ * -+ * FIXME: -+ * -+ * If I write "=r" for the (temp_pc), it puts this in r6 hence -+ * trashing exec_offset before it's been added on - why? Hence -+ * "=&r" as a 'workaround' -+ */ -+ asm volatile("mov.l 1f, %0\n\t" -+ "add %1, %0\n\t" -+ "jmp @%0\n\t" -+ "nop\n\t" -+ ".balign 4\n\t" -+ "1: .long 2f\n\t" -+ "2:\n" : "=&r" (temp_pc) : "r" (exec_offset)); -+ -+ /* -+ * We know there will be >=1 iteration, so write as do-while to avoid -+ * pointless nead-of-loop check for 0 iterations. -+ */ -+ do { -+ ea = base_addr + PAGE_SIZE; -+ a = base_addr; -+ p = phys; -+ -+ do { -+ *(volatile unsigned long *)a = p; -+ /* -+ * Next line: intentionally not p+32, saves an add, p -+ * will do since only the cache tag bits need to -+ * match. -+ */ -+ *(volatile unsigned long *)(a+32) = p; -+ a += 64; -+ p += 64; -+ } while (a < ea); -+ -+ base_addr += way_incr; -+ } while (--way_count != 0); -+} -+ -+/* -+ * Break the 1, 2 and 4 way variants of this out into separate functions to -+ * avoid nearly all the overhead of having the conditional stuff in the function -+ * bodies (+ the 1 and 2 way cases avoid saving any registers too). -+ */ -+static void __flush_dcache_segment_1way(unsigned long start, -+ unsigned long extent_per_way) -+{ -+ unsigned long orig_sr, sr_with_bl; -+ unsigned long base_addr; -+ unsigned long way_incr, linesz, way_size; -+ struct cache_info *dcache; -+ register unsigned long a0, a0e; -+ -+ asm volatile("stc sr, %0" : "=r" (orig_sr)); -+ sr_with_bl = orig_sr | (1<<28); -+ base_addr = ((unsigned long)&empty_zero_page[0]); -+ -+ /* -+ * The previous code aligned base_addr to 16k, i.e. the way_size of all -+ * existing SH-4 D-caches. Whilst I don't see a need to have this -+ * aligned to any better than the cache line size (which it will be -+ * anyway by construction), let's align it to at least the way_size of -+ * any existing or conceivable SH-4 D-cache. -- RPC -+ */ -+ base_addr = ((base_addr >> 16) << 16); -+ base_addr |= start; -+ -+ dcache = &cpu_data->dcache; -+ linesz = dcache->linesz; -+ way_incr = dcache->way_incr; -+ way_size = dcache->way_size; -+ -+ a0 = base_addr; -+ a0e = base_addr + extent_per_way; -+ do { -+ asm volatile("ldc %0, sr" : : "r" (sr_with_bl)); -+ asm volatile("movca.l r0, @%0\n\t" -+ "ocbi @%0" : : "r" (a0)); -+ a0 += linesz; -+ asm volatile("movca.l r0, @%0\n\t" -+ "ocbi @%0" : : "r" (a0)); -+ a0 += linesz; -+ asm volatile("movca.l r0, @%0\n\t" -+ "ocbi @%0" : : "r" (a0)); -+ a0 += linesz; -+ asm volatile("movca.l r0, @%0\n\t" -+ "ocbi @%0" : : "r" (a0)); -+ asm volatile("ldc %0, sr" : : "r" (orig_sr)); -+ a0 += linesz; -+ } while (a0 < a0e); -+} -+ -+static void __flush_dcache_segment_2way(unsigned long start, -+ unsigned long extent_per_way) -+{ -+ unsigned long orig_sr, sr_with_bl; -+ unsigned long base_addr; -+ unsigned long way_incr, linesz, way_size; -+ struct cache_info *dcache; -+ register unsigned long a0, a1, a0e; -+ -+ asm volatile("stc sr, %0" : "=r" (orig_sr)); -+ sr_with_bl = orig_sr | (1<<28); -+ base_addr = ((unsigned long)&empty_zero_page[0]); -+ -+ /* See comment under 1-way above */ -+ base_addr = ((base_addr >> 16) << 16); -+ base_addr |= start; -+ -+ dcache = &cpu_data->dcache; -+ linesz = dcache->linesz; -+ way_incr = dcache->way_incr; -+ way_size = dcache->way_size; -+ -+ a0 = base_addr; -+ a1 = a0 + way_incr; -+ a0e = base_addr + extent_per_way; -+ do { -+ asm volatile("ldc %0, sr" : : "r" (sr_with_bl)); -+ asm volatile("movca.l r0, @%0\n\t" -+ "movca.l r0, @%1\n\t" -+ "ocbi @%0\n\t" -+ "ocbi @%1" : : -+ "r" (a0), "r" (a1)); -+ a0 += linesz; -+ a1 += linesz; -+ asm volatile("movca.l r0, @%0\n\t" -+ "movca.l r0, @%1\n\t" -+ "ocbi @%0\n\t" -+ "ocbi @%1" : : -+ "r" (a0), "r" (a1)); -+ a0 += linesz; -+ a1 += linesz; -+ asm volatile("movca.l r0, @%0\n\t" -+ "movca.l r0, @%1\n\t" -+ "ocbi @%0\n\t" -+ "ocbi @%1" : : -+ "r" (a0), "r" (a1)); -+ a0 += linesz; -+ a1 += linesz; -+ asm volatile("movca.l r0, @%0\n\t" -+ "movca.l r0, @%1\n\t" -+ "ocbi @%0\n\t" -+ "ocbi @%1" : : -+ "r" (a0), "r" (a1)); -+ asm volatile("ldc %0, sr" : : "r" (orig_sr)); -+ a0 += linesz; -+ a1 += linesz; -+ } while (a0 < a0e); -+} -+ -+static void __flush_dcache_segment_4way(unsigned long start, -+ unsigned long extent_per_way) -+{ -+ unsigned long orig_sr, sr_with_bl; -+ unsigned long base_addr; -+ unsigned long way_incr, linesz, way_size; -+ struct cache_info *dcache; -+ register unsigned long a0, a1, a2, a3, a0e; -+ -+ asm volatile("stc sr, %0" : "=r" (orig_sr)); -+ sr_with_bl = orig_sr | (1<<28); -+ base_addr = ((unsigned long)&empty_zero_page[0]); -+ -+ /* See comment under 1-way above */ -+ base_addr = ((base_addr >> 16) << 16); -+ base_addr |= start; -+ -+ dcache = &cpu_data->dcache; -+ linesz = dcache->linesz; -+ way_incr = dcache->way_incr; -+ way_size = dcache->way_size; -+ -+ a0 = base_addr; -+ a1 = a0 + way_incr; -+ a2 = a1 + way_incr; -+ a3 = a2 + way_incr; -+ a0e = base_addr + extent_per_way; -+ do { -+ asm volatile("ldc %0, sr" : : "r" (sr_with_bl)); -+ asm volatile("movca.l r0, @%0\n\t" -+ "movca.l r0, @%1\n\t" -+ "movca.l r0, @%2\n\t" -+ "movca.l r0, @%3\n\t" -+ "ocbi @%0\n\t" -+ "ocbi @%1\n\t" -+ "ocbi @%2\n\t" -+ "ocbi @%3\n\t" : : -+ "r" (a0), "r" (a1), "r" (a2), "r" (a3)); -+ a0 += linesz; -+ a1 += linesz; -+ a2 += linesz; -+ a3 += linesz; -+ asm volatile("movca.l r0, @%0\n\t" -+ "movca.l r0, @%1\n\t" -+ "movca.l r0, @%2\n\t" -+ "movca.l r0, @%3\n\t" -+ "ocbi @%0\n\t" -+ "ocbi @%1\n\t" -+ "ocbi @%2\n\t" -+ "ocbi @%3\n\t" : : -+ "r" (a0), "r" (a1), "r" (a2), "r" (a3)); -+ a0 += linesz; -+ a1 += linesz; -+ a2 += linesz; -+ a3 += linesz; -+ asm volatile("movca.l r0, @%0\n\t" -+ "movca.l r0, @%1\n\t" -+ "movca.l r0, @%2\n\t" -+ "movca.l r0, @%3\n\t" -+ "ocbi @%0\n\t" -+ "ocbi @%1\n\t" -+ "ocbi @%2\n\t" -+ "ocbi @%3\n\t" : : -+ "r" (a0), "r" (a1), "r" (a2), "r" (a3)); -+ a0 += linesz; -+ a1 += linesz; -+ a2 += linesz; -+ a3 += linesz; -+ asm volatile("movca.l r0, @%0\n\t" -+ "movca.l r0, @%1\n\t" -+ "movca.l r0, @%2\n\t" -+ "movca.l r0, @%3\n\t" -+ "ocbi @%0\n\t" -+ "ocbi @%1\n\t" -+ "ocbi @%2\n\t" -+ "ocbi @%3\n\t" : : -+ "r" (a0), "r" (a1), "r" (a2), "r" (a3)); -+ asm volatile("ldc %0, sr" : : "r" (orig_sr)); -+ a0 += linesz; -+ a1 += linesz; -+ a2 += linesz; -+ a3 += linesz; -+ } while (a0 < a0e); - } - -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/clear_page.S linux-2.6.17/arch/sh/mm/clear_page.S ---- linux-2.6.17-vanilla/arch/sh/mm/clear_page.S 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/clear_page.S 2006-07-12 16:54:23.000000000 +0000 -@@ -194,102 +194,5 @@ - nop - .L4096: .word 4096 - --ENTRY(__flush_cache_4096) -- mov.l 1f,r3 -- add r6,r3 -- mov r4,r0 -- mov #64,r2 -- shll r2 -- mov #64,r6 -- jmp @r3 -- mov #96,r7 -- .align 2 --1: .long 2f --2: -- .rept 32 -- mov.l r5,@r0 -- mov.l r5,@(32,r0) -- mov.l r5,@(r0,r6) -- mov.l r5,@(r0,r7) -- add r2,r5 -- add r2,r0 -- .endr -- nop -- nop -- nop -- nop -- nop -- nop -- nop -- rts -- nop -- --ENTRY(__flush_dcache_all) -- mov.l 2f,r0 -- mov.l 3f,r4 -- and r0,r4 ! r4 = (unsigned long)&empty_zero_page[0] & ~0xffffc000 -- stc sr,r1 ! save SR -- mov.l 4f,r2 -- or r1,r2 -- mov #32,r3 -- shll2 r3 --1: -- ldc r2,sr ! set BL bit -- movca.l r0,@r4 -- ocbi @r4 -- add #32,r4 -- movca.l r0,@r4 -- ocbi @r4 -- add #32,r4 -- movca.l r0,@r4 -- ocbi @r4 -- add #32,r4 -- movca.l r0,@r4 -- ocbi @r4 -- ldc r1,sr ! restore SR -- dt r3 -- bf/s 1b -- add #32,r4 -- -- rts -- nop -- .align 2 --2: .long 0xffffc000 --3: .long empty_zero_page --4: .long 0x10000000 ! BL bit -- --/* __flush_cache_4096_all(unsigned long addr) */ --ENTRY(__flush_cache_4096_all) -- mov.l 2f,r0 -- mov.l 3f,r2 -- and r0,r2 -- or r2,r4 ! r4 = addr | (unsigned long)&empty_zero_page[0] & ~0x3fff -- stc sr,r1 ! save SR -- mov.l 4f,r2 -- or r1,r2 -- mov #32,r3 --1: -- ldc r2,sr ! set BL bit -- movca.l r0,@r4 -- ocbi @r4 -- add #32,r4 -- movca.l r0,@r4 -- ocbi @r4 -- add #32,r4 -- movca.l r0,@r4 -- ocbi @r4 -- add #32,r4 -- movca.l r0,@r4 -- ocbi @r4 -- ldc r1,sr ! restore SR -- dt r3 -- bf/s 1b -- add #32,r4 -- -- rts -- nop -- .align 2 --2: .long 0xffffc000 --3: .long empty_zero_page --4: .long 0x10000000 ! BL bit - #endif -+ -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/consistent.c linux-2.6.17/arch/sh/mm/consistent.c ---- linux-2.6.17-vanilla/arch/sh/mm/consistent.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/consistent.c 2006-07-12 16:54:23.000000000 +0000 -@@ -9,6 +9,8 @@ - */ - #include <linux/mm.h> - #include <linux/dma-mapping.h> -+#include <asm/cacheflush.h> -+#include <asm/addrspace.h> - #include <asm/io.h> - - void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *handle) -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/fault.c linux-2.6.17/arch/sh/mm/fault.c ---- linux-2.6.17-vanilla/arch/sh/mm/fault.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/fault.c 2006-07-12 16:54:23.000000000 +0000 -@@ -1,33 +1,21 @@ --/* $Id: fault.c,v 1.14 2004/01/13 05:52:11 kkojima Exp $ -+/* -+ * Page fault handler for SH with an MMU. - * -- * linux/arch/sh/mm/fault.c - * Copyright (C) 1999 Niibe Yutaka - * Copyright (C) 2003 Paul Mundt - * - * Based on linux/arch/i386/mm/fault.c: - * Copyright (C) 1995 Linus Torvalds -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. - */ -- --#include <linux/signal.h> --#include <linux/sched.h> - #include <linux/kernel.h> --#include <linux/errno.h> --#include <linux/string.h> --#include <linux/types.h> --#include <linux/ptrace.h> --#include <linux/mman.h> - #include <linux/mm.h> --#include <linux/smp.h> --#include <linux/smp_lock.h> --#include <linux/interrupt.h> --#include <linux/module.h> -- -+#include <linux/hardirq.h> - #include <asm/system.h> --#include <asm/io.h> --#include <asm/uaccess.h> --#include <asm/pgalloc.h> - #include <asm/mmu_context.h> --#include <asm/cacheflush.h> - #include <asm/kgdb.h> - - extern void die(const char *,struct pt_regs *,long); -@@ -187,14 +175,25 @@ - goto no_context; - } - -+#ifdef CONFIG_SH_STORE_QUEUES -+/* -+ * This is a special case for the SH-4 store queues, as pages for this -+ * space still need to be faulted in before it's possible to flush the -+ * store queue cache for writeout to the remapped region. -+ */ -+#define P3_ADDR_MAX (P4SEG_STORE_QUE + 0x04000000) -+#else -+#define P3_ADDR_MAX P4SEG -+#endif -+ - /* -- * Called with interrupt disabled. -+ * Called with interrupts disabled. - */ - asmlinkage int __do_page_fault(struct pt_regs *regs, unsigned long writeaccess, - unsigned long address) - { -- unsigned long addrmax = P4SEG; - pgd_t *pgd; -+ pud_t *pud; - pmd_t *pmd; - pte_t *pte; - pte_t entry; -@@ -207,31 +206,37 @@ - kgdb_bus_err_hook(); - #endif - --#ifdef CONFIG_SH_STORE_QUEUES -- addrmax = P4SEG_STORE_QUE + 0x04000000; --#endif -- -- if (address >= P3SEG && address < addrmax) { -+ /* -+ * We don't take page faults for P1, P2, and parts of P4, these -+ * are always mapped, whether it be due to legacy behaviour in -+ * 29-bit mode, or due to PMB configuration in 32-bit mode. -+ */ -+ if (address >= P3SEG && address < P3_ADDR_MAX) { - pgd = pgd_offset_k(address); - mm = NULL; -- } else if (address >= TASK_SIZE) -- return 1; -- else if (!(mm = current->mm)) -- return 1; -- else -- pgd = pgd_offset(mm, address); -+ } else { -+ if (unlikely(address >= TASK_SIZE || !(mm = current->mm))) -+ return 1; - -- pmd = pmd_offset(pgd, address); -+ pgd = pgd_offset(current->mm, address); -+ } -+ -+ pud = pud_offset(pgd, address); -+ if (pud_none_or_clear_bad(pud)) -+ return 1; -+ pmd = pmd_offset(pud, address); - if (pmd_none_or_clear_bad(pmd)) - return 1; -+ - if (mm) - pte = pte_offset_map_lock(mm, pmd, address, &ptl); - else - pte = pte_offset_kernel(pmd, address); - - entry = *pte; -- if (pte_none(entry) || pte_not_present(entry) -- || (writeaccess && !pte_write(entry))) -+ if (unlikely(pte_none(entry) || pte_not_present(entry))) -+ goto unlock; -+ if (unlikely(writeaccess && !pte_write(entry))) - goto unlock; - - if (writeaccess) -@@ -243,13 +248,7 @@ - * ITLB is not affected by "ldtlb" instruction. - * So, we need to flush the entry by ourselves. - */ -- -- { -- unsigned long flags; -- local_irq_save(flags); -- __flush_tlb_page(get_asid(), address&PAGE_MASK); -- local_irq_restore(flags); -- } -+ __flush_tlb_page(get_asid(), address & PAGE_MASK); - #endif - - set_pte(pte, entry); -@@ -260,121 +259,3 @@ - pte_unmap_unlock(pte, ptl); - return ret; - } -- --void flush_tlb_page(struct vm_area_struct *vma, unsigned long page) --{ -- if (vma->vm_mm && vma->vm_mm->context != NO_CONTEXT) { -- unsigned long flags; -- unsigned long asid; -- unsigned long saved_asid = MMU_NO_ASID; -- -- asid = vma->vm_mm->context & MMU_CONTEXT_ASID_MASK; -- page &= PAGE_MASK; -- -- local_irq_save(flags); -- if (vma->vm_mm != current->mm) { -- saved_asid = get_asid(); -- set_asid(asid); -- } -- __flush_tlb_page(asid, page); -- if (saved_asid != MMU_NO_ASID) -- set_asid(saved_asid); -- local_irq_restore(flags); -- } --} -- --void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, -- unsigned long end) --{ -- struct mm_struct *mm = vma->vm_mm; -- -- if (mm->context != NO_CONTEXT) { -- unsigned long flags; -- int size; -- -- local_irq_save(flags); -- size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; -- if (size > (MMU_NTLB_ENTRIES/4)) { /* Too many TLB to flush */ -- mm->context = NO_CONTEXT; -- if (mm == current->mm) -- activate_context(mm); -- } else { -- unsigned long asid = mm->context&MMU_CONTEXT_ASID_MASK; -- unsigned long saved_asid = MMU_NO_ASID; -- -- start &= PAGE_MASK; -- end += (PAGE_SIZE - 1); -- end &= PAGE_MASK; -- if (mm != current->mm) { -- saved_asid = get_asid(); -- set_asid(asid); -- } -- while (start < end) { -- __flush_tlb_page(asid, start); -- start += PAGE_SIZE; -- } -- if (saved_asid != MMU_NO_ASID) -- set_asid(saved_asid); -- } -- local_irq_restore(flags); -- } --} -- --void flush_tlb_kernel_range(unsigned long start, unsigned long end) --{ -- unsigned long flags; -- int size; -- -- local_irq_save(flags); -- size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; -- if (size > (MMU_NTLB_ENTRIES/4)) { /* Too many TLB to flush */ -- flush_tlb_all(); -- } else { -- unsigned long asid = init_mm.context&MMU_CONTEXT_ASID_MASK; -- unsigned long saved_asid = get_asid(); -- -- start &= PAGE_MASK; -- end += (PAGE_SIZE - 1); -- end &= PAGE_MASK; -- set_asid(asid); -- while (start < end) { -- __flush_tlb_page(asid, start); -- start += PAGE_SIZE; -- } -- set_asid(saved_asid); -- } -- local_irq_restore(flags); --} -- --void flush_tlb_mm(struct mm_struct *mm) --{ -- /* Invalidate all TLB of this process. */ -- /* Instead of invalidating each TLB, we get new MMU context. */ -- if (mm->context != NO_CONTEXT) { -- unsigned long flags; -- -- local_irq_save(flags); -- mm->context = NO_CONTEXT; -- if (mm == current->mm) -- activate_context(mm); -- local_irq_restore(flags); -- } --} -- --void flush_tlb_all(void) --{ -- unsigned long flags, status; -- -- /* -- * Flush all the TLB. -- * -- * Write to the MMU control register's bit: -- * TF-bit for SH-3, TI-bit for SH-4. -- * It's same position, bit #2. -- */ -- local_irq_save(flags); -- status = ctrl_inl(MMUCR); -- status |= 0x04; -- ctrl_outl(status, MMUCR); -- local_irq_restore(flags); --} -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/hugetlbpage.c linux-2.6.17/arch/sh/mm/hugetlbpage.c ---- linux-2.6.17-vanilla/arch/sh/mm/hugetlbpage.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/hugetlbpage.c 2006-07-12 16:54:23.000000000 +0000 -@@ -27,61 +27,41 @@ - pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr) - { - pgd_t *pgd; -+ pud_t *pud; - pmd_t *pmd; - pte_t *pte = NULL; - - pgd = pgd_offset(mm, addr); - if (pgd) { -- pmd = pmd_alloc(mm, pgd, addr); -- if (pmd) -- pte = pte_alloc_map(mm, pmd, addr); -+ pud = pud_alloc(mm, pgd, addr); -+ if (pud) { -+ pmd = pmd_alloc(mm, pud, addr); -+ if (pmd) -+ pte = pte_alloc_map(mm, pmd, addr); -+ } - } -+ - return pte; - } - - pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr) - { - pgd_t *pgd; -+ pud_t *pud; - pmd_t *pmd; - pte_t *pte = NULL; - - pgd = pgd_offset(mm, addr); - if (pgd) { -- pmd = pmd_offset(pgd, addr); -- if (pmd) -- pte = pte_offset_map(pmd, addr); -- } -- return pte; --} -- --void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, -- pte_t *ptep, pte_t entry) --{ -- int i; -- -- for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) { -- set_pte_at(mm, addr, ptep, entry); -- ptep++; -- addr += PAGE_SIZE; -- pte_val(entry) += PAGE_SIZE; -+ pud = pud_offset(pgd, addr); -+ if (pud) { -+ pmd = pmd_offset(pud, addr); -+ if (pmd) -+ pte = pte_offset_map(pmd, addr); -+ } - } --} -- --pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, -- pte_t *ptep) --{ -- pte_t entry; -- int i; -- -- entry = *ptep; - -- for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) { -- pte_clear(mm, addr, ptep); -- addr += PAGE_SIZE; -- ptep++; -- } -- -- return entry; -+ return pte; - } - - struct page *follow_huge_addr(struct mm_struct *mm, -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/init.c linux-2.6.17/arch/sh/mm/init.c ---- linux-2.6.17-vanilla/arch/sh/mm/init.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/init.c 2006-07-12 16:54:23.000000000 +0000 -@@ -61,7 +61,7 @@ - - printk("Mem-info:\n"); - show_free_areas(); -- printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); -+ printk("Free swap: %6ldkB\n",nr_swap_pages<<(PAGE_SHIFT-10)); - i = max_mapnr; - while (i-- > 0) { - total++; -@@ -81,6 +81,7 @@ - static void set_pte_phys(unsigned long addr, unsigned long phys, pgprot_t prot) - { - pgd_t *pgd; -+ pud_t *pud; - pmd_t *pmd; - pte_t *pte; - -@@ -90,7 +91,17 @@ - return; - } - -- pmd = pmd_offset(pgd, addr); -+ pud = pud_offset(pgd, addr); -+ if (pud_none(*pud)) { -+ pmd = (pmd_t *)get_zeroed_page(GFP_ATOMIC); -+ set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE | _PAGE_USER)); -+ if (pmd != pmd_offset(pud, 0)) { -+ pud_ERROR(*pud); -+ return; -+ } -+ } -+ -+ pmd = pmd_offset(pud, addr); - if (pmd_none(*pmd)) { - pte = (pte_t *)get_zeroed_page(GFP_ATOMIC); - set_pmd(pmd, __pmd(__pa(pte) | _KERNPG_TABLE | _PAGE_USER)); -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/ioremap.c linux-2.6.17/arch/sh/mm/ioremap.c ---- linux-2.6.17-vanilla/arch/sh/mm/ioremap.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/ioremap.c 2006-07-12 16:54:23.000000000 +0000 -@@ -15,6 +15,7 @@ - #include <linux/vmalloc.h> - #include <linux/module.h> - #include <linux/mm.h> -+#include <linux/pci.h> - #include <asm/io.h> - #include <asm/page.h> - #include <asm/pgalloc.h> -@@ -135,6 +136,20 @@ - return (void __iomem *)phys_to_virt(phys_addr); - - /* -+ * If we're on an SH7751 or SH7780 PCI controller, PCI memory is -+ * mapped at the end of the address space (typically 0xfd000000) -+ * in a non-translatable area, so mapping through page tables for -+ * this area is not only pointless, but also fundamentally -+ * broken. Just return the physical address instead. -+ * -+ * For boards that map a small PCI memory aperture somewhere in -+ * P1/P2 space, ioremap() will already do the right thing, -+ * and we'll never get this far. -+ */ -+ if (is_pci_memaddr(phys_addr) && is_pci_memaddr(last_addr)) -+ return (void __iomem *)phys_addr; -+ -+ /* - * Don't allow anybody to remap normal RAM that we're using.. - */ - if (phys_addr < virt_to_phys(high_memory)) -@@ -192,7 +207,7 @@ - unsigned long vaddr = (unsigned long __force)addr; - struct vm_struct *p; - -- if (PXSEG(vaddr) < P3SEG) -+ if (PXSEG(vaddr) < P3SEG || is_pci_memaddr(vaddr)) - return; - - #ifdef CONFIG_32BIT -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/pg-sh4.c linux-2.6.17/arch/sh/mm/pg-sh4.c ---- linux-2.6.17-vanilla/arch/sh/mm/pg-sh4.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/pg-sh4.c 2006-07-12 16:54:23.000000000 +0000 -@@ -2,7 +2,7 @@ - * arch/sh/mm/pg-sh4.c - * - * Copyright (C) 1999, 2000, 2002 Niibe Yutaka -- * Copyright (C) 2002 Paul Mundt -+ * Copyright (C) 2002 - 2005 Paul Mundt - * - * Released under the terms of the GNU GPL v2.0. - */ -@@ -24,6 +24,8 @@ - - extern struct semaphore p3map_sem[]; - -+#define CACHE_ALIAS (cpu_data->dcache.alias_mask) -+ - /* - * clear_user_page - * @to: P1 address -@@ -36,14 +38,15 @@ - if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) - clear_page(to); - else { -- pgprot_t pgprot = __pgprot(_PAGE_PRESENT | -+ pgprot_t pgprot = __pgprot(_PAGE_PRESENT | - _PAGE_RW | _PAGE_CACHABLE | -- _PAGE_DIRTY | _PAGE_ACCESSED | -+ _PAGE_DIRTY | _PAGE_ACCESSED | - _PAGE_HW_SHARED | _PAGE_FLAGS_HARD); - unsigned long phys_addr = PHYSADDR(to); - unsigned long p3_addr = P3SEG + (address & CACHE_ALIAS); -- pgd_t *dir = pgd_offset_k(p3_addr); -- pmd_t *pmd = pmd_offset(dir, p3_addr); -+ pgd_t *pgd = pgd_offset_k(p3_addr); -+ pud_t *pud = pud_offset(pgd, p3_addr); -+ pmd_t *pmd = pmd_offset(pud, p3_addr); - pte_t *pte = pte_offset_kernel(pmd, p3_addr); - pte_t entry; - unsigned long flags; -@@ -68,21 +71,22 @@ - * @address: U0 address to be mapped - * @page: page (virt_to_page(to)) - */ --void copy_user_page(void *to, void *from, unsigned long address, -+void copy_user_page(void *to, void *from, unsigned long address, - struct page *page) - { - __set_bit(PG_mapped, &page->flags); - if (((address ^ (unsigned long)to) & CACHE_ALIAS) == 0) - copy_page(to, from); - else { -- pgprot_t pgprot = __pgprot(_PAGE_PRESENT | -+ pgprot_t pgprot = __pgprot(_PAGE_PRESENT | - _PAGE_RW | _PAGE_CACHABLE | -- _PAGE_DIRTY | _PAGE_ACCESSED | -+ _PAGE_DIRTY | _PAGE_ACCESSED | - _PAGE_HW_SHARED | _PAGE_FLAGS_HARD); - unsigned long phys_addr = PHYSADDR(to); - unsigned long p3_addr = P3SEG + (address & CACHE_ALIAS); -- pgd_t *dir = pgd_offset_k(p3_addr); -- pmd_t *pmd = pmd_offset(dir, p3_addr); -+ pgd_t *pgd = pgd_offset_k(p3_addr); -+ pud_t *pud = pud_offset(pgd, p3_addr); -+ pmd_t *pmd = pmd_offset(pud, p3_addr); - pte_t *pte = pte_offset_kernel(pmd, p3_addr); - pte_t entry; - unsigned long flags; -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/pmb.c linux-2.6.17/arch/sh/mm/pmb.c ---- linux-2.6.17-vanilla/arch/sh/mm/pmb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/pmb.c 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,404 @@ -+/* -+ * arch/sh/mm/pmb.c -+ * -+ * Privileged Space Mapping Buffer (PMB) Support. -+ * -+ * Copyright (C) 2005, 2006 Paul Mundt -+ * -+ * P1/P2 Section mapping definitions from map32.h, which was: -+ * -+ * Copyright 2003 (c) Lineo Solutions,Inc. -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/init.h> -+#include <linux/kernel.h> -+#include <linux/module.h> -+#include <linux/slab.h> -+#include <linux/bitops.h> -+#include <linux/debugfs.h> -+#include <linux/fs.h> -+#include <linux/seq_file.h> -+#include <linux/err.h> -+#include <asm/system.h> -+#include <asm/uaccess.h> -+#include <asm/pgtable.h> -+#include <asm/mmu.h> -+#include <asm/io.h> -+ -+#define NR_PMB_ENTRIES 16 -+ -+static kmem_cache_t *pmb_cache; -+static unsigned long pmb_map; -+ -+static struct pmb_entry pmb_init_map[] = { -+ /* vpn ppn flags (ub/sz/c/wt) */ -+ -+ /* P1 Section Mappings */ -+ { 0x80000000, 0x00000000, PMB_SZ_64M | PMB_C, }, -+ { 0x84000000, 0x04000000, PMB_SZ_64M | PMB_C, }, -+ { 0x88000000, 0x08000000, PMB_SZ_128M | PMB_C, }, -+ { 0x90000000, 0x10000000, PMB_SZ_64M | PMB_C, }, -+ { 0x94000000, 0x14000000, PMB_SZ_64M | PMB_C, }, -+ { 0x98000000, 0x18000000, PMB_SZ_64M | PMB_C, }, -+ -+ /* P2 Section Mappings */ -+ { 0xa0000000, 0x00000000, PMB_UB | PMB_SZ_64M | PMB_WT, }, -+ { 0xa4000000, 0x04000000, PMB_UB | PMB_SZ_64M | PMB_WT, }, -+ { 0xa8000000, 0x08000000, PMB_UB | PMB_SZ_128M | PMB_WT, }, -+ { 0xb0000000, 0x10000000, PMB_UB | PMB_SZ_64M | PMB_WT, }, -+ { 0xb4000000, 0x14000000, PMB_UB | PMB_SZ_64M | PMB_WT, }, -+ { 0xb8000000, 0x18000000, PMB_UB | PMB_SZ_64M | PMB_WT, }, -+}; -+ -+static inline unsigned long mk_pmb_entry(unsigned int entry) -+{ -+ return (entry & PMB_E_MASK) << PMB_E_SHIFT; -+} -+ -+static inline unsigned long mk_pmb_addr(unsigned int entry) -+{ -+ return mk_pmb_entry(entry) | PMB_ADDR; -+} -+ -+static inline unsigned long mk_pmb_data(unsigned int entry) -+{ -+ return mk_pmb_entry(entry) | PMB_DATA; -+} -+ -+struct pmb_entry *pmb_alloc(unsigned long vpn, unsigned long ppn, -+ unsigned long flags) -+{ -+ struct pmb_entry *pmbe; -+ -+ pmbe = kmem_cache_alloc(pmb_cache, GFP_KERNEL); -+ if (!pmbe) -+ return ERR_PTR(-ENOMEM); -+ -+ pmbe->vpn = vpn; -+ pmbe->ppn = ppn; -+ pmbe->flags = flags; -+ -+ return pmbe; -+} -+ -+void pmb_free(struct pmb_entry *pmbe) -+{ -+ kmem_cache_free(pmb_cache, pmbe); -+} -+ -+/* -+ * Must be in P2 for __set_pmb_entry() -+ */ -+int __set_pmb_entry(unsigned long vpn, unsigned long ppn, -+ unsigned long flags, int *entry) -+{ -+ unsigned int pos = *entry; -+ -+ if (unlikely(pos == PMB_NO_ENTRY)) -+ pos = find_first_zero_bit(&pmb_map, NR_PMB_ENTRIES); -+ -+repeat: -+ if (unlikely(pos > NR_PMB_ENTRIES)) -+ return -ENOSPC; -+ -+ if (test_and_set_bit(pos, &pmb_map)) { -+ pos = find_first_zero_bit(&pmb_map, NR_PMB_ENTRIES); -+ goto repeat; -+ } -+ -+ ctrl_outl(vpn | PMB_V, mk_pmb_addr(pos)); -+ -+#ifdef CONFIG_SH_WRITETHROUGH -+ /* -+ * When we are in 32-bit address extended mode, CCR.CB becomes -+ * invalid, so care must be taken to manually adjust cacheable -+ * translations. -+ */ -+ if (likely(flags & PMB_C)) -+ flags |= PMB_WT; -+#endif -+ -+ ctrl_outl(ppn | flags | PMB_V, mk_pmb_data(pos)); -+ -+ *entry = pos; -+ -+ return 0; -+} -+ -+int set_pmb_entry(struct pmb_entry *pmbe) -+{ -+ int ret; -+ -+ jump_to_P2(); -+ ret = __set_pmb_entry(pmbe->vpn, pmbe->ppn, pmbe->flags, &pmbe->entry); -+ back_to_P1(); -+ -+ return ret; -+} -+ -+void clear_pmb_entry(struct pmb_entry *pmbe) -+{ -+ unsigned int entry = pmbe->entry; -+ unsigned long addr; -+ -+ /* -+ * Don't allow clearing of wired init entries, P1 or P2 access -+ * without a corresponding mapping in the PMB will lead to reset -+ * by the TLB. -+ */ -+ if (unlikely(entry < ARRAY_SIZE(pmb_init_map) || -+ entry >= NR_PMB_ENTRIES)) -+ return; -+ -+ jump_to_P2(); -+ -+ /* Clear V-bit */ -+ addr = mk_pmb_addr(entry); -+ ctrl_outl(ctrl_inl(addr) & ~PMB_V, addr); -+ -+ addr = mk_pmb_data(entry); -+ ctrl_outl(ctrl_inl(addr) & ~PMB_V, addr); -+ -+ back_to_P1(); -+ -+ clear_bit(entry, &pmb_map); -+} -+ -+static DEFINE_SPINLOCK(pmb_list_lock); -+static struct pmb_entry *pmb_list; -+ -+static inline void pmb_list_add(struct pmb_entry *pmbe) -+{ -+ struct pmb_entry **p, *tmp; -+ -+ p = &pmb_list; -+ while ((tmp = *p) != NULL) -+ p = &tmp->next; -+ -+ pmbe->next = tmp; -+ *p = pmbe; -+} -+ -+static inline void pmb_list_del(struct pmb_entry *pmbe) -+{ -+ struct pmb_entry **p, *tmp; -+ -+ for (p = &pmb_list; (tmp = *p); p = &tmp->next) -+ if (tmp == pmbe) { -+ *p = tmp->next; -+ return; -+ } -+} -+ -+static struct { -+ unsigned long size; -+ int flag; -+} pmb_sizes[] = { -+ { .size = 0x20000000, .flag = PMB_SZ_512M, }, -+ { .size = 0x08000000, .flag = PMB_SZ_128M, }, -+ { .size = 0x04000000, .flag = PMB_SZ_64M, }, -+ { .size = 0x01000000, .flag = PMB_SZ_16M, }, -+}; -+ -+long pmb_remap(unsigned long vaddr, unsigned long phys, -+ unsigned long size, unsigned long flags) -+{ -+ struct pmb_entry *pmbp; -+ unsigned long wanted; -+ int pmb_flags, i; -+ -+ /* Convert typical pgprot value to the PMB equivalent */ -+ if (flags & _PAGE_CACHABLE) { -+ if (flags & _PAGE_WT) -+ pmb_flags = PMB_WT; -+ else -+ pmb_flags = PMB_C; -+ } else -+ pmb_flags = PMB_WT | PMB_UB; -+ -+ pmbp = NULL; -+ wanted = size; -+ -+again: -+ for (i = 0; i < ARRAY_SIZE(pmb_sizes); i++) { -+ struct pmb_entry *pmbe; -+ int ret; -+ -+ if (size < pmb_sizes[i].size) -+ continue; -+ -+ pmbe = pmb_alloc(vaddr, phys, pmb_flags | pmb_sizes[i].flag); -+ if (IS_ERR(pmbe)) -+ return PTR_ERR(pmbe); -+ -+ ret = set_pmb_entry(pmbe); -+ if (ret != 0) { -+ pmb_free(pmbe); -+ return -EBUSY; -+ } -+ -+ phys += pmb_sizes[i].size; -+ vaddr += pmb_sizes[i].size; -+ size -= pmb_sizes[i].size; -+ -+ /* -+ * Link adjacent entries that span multiple PMB entries -+ * for easier tear-down. -+ */ -+ if (likely(pmbp)) -+ pmbp->link = pmbe; -+ -+ pmbp = pmbe; -+ } -+ -+ if (size >= 0x1000000) -+ goto again; -+ -+ return wanted - size; -+} -+ -+void pmb_unmap(unsigned long addr) -+{ -+ struct pmb_entry **p, *pmbe; -+ -+ for (p = &pmb_list; (pmbe = *p); p = &pmbe->next) -+ if (pmbe->vpn == addr) -+ break; -+ -+ if (unlikely(!pmbe)) -+ return; -+ -+ WARN_ON(!test_bit(pmbe->entry, &pmb_map)); -+ -+ do { -+ struct pmb_entry *pmblink = pmbe; -+ -+ clear_pmb_entry(pmbe); -+ pmbe = pmblink->link; -+ -+ pmb_free(pmblink); -+ } while (pmbe); -+} -+ -+static void pmb_cache_ctor(void *pmb, kmem_cache_t *cachep, unsigned long flags) -+{ -+ struct pmb_entry *pmbe = pmb; -+ -+ memset(pmb, 0, sizeof(struct pmb_entry)); -+ -+ spin_lock_irq(&pmb_list_lock); -+ -+ pmbe->entry = PMB_NO_ENTRY; -+ pmb_list_add(pmbe); -+ -+ spin_unlock_irq(&pmb_list_lock); -+} -+ -+static void pmb_cache_dtor(void *pmb, kmem_cache_t *cachep, unsigned long flags) -+{ -+ spin_lock_irq(&pmb_list_lock); -+ pmb_list_del(pmb); -+ spin_unlock_irq(&pmb_list_lock); -+} -+ -+static int __init pmb_init(void) -+{ -+ unsigned int nr_entries = ARRAY_SIZE(pmb_init_map); -+ unsigned int entry; -+ -+ BUG_ON(unlikely(nr_entries >= NR_PMB_ENTRIES)); -+ -+ pmb_cache = kmem_cache_create("pmb", sizeof(struct pmb_entry), -+ 0, 0, pmb_cache_ctor, pmb_cache_dtor); -+ BUG_ON(!pmb_cache); -+ -+ jump_to_P2(); -+ -+ /* -+ * Ordering is important, P2 must be mapped in the PMB before we -+ * can set PMB.SE, and P1 must be mapped before we jump back to -+ * P1 space. -+ */ -+ for (entry = 0; entry < nr_entries; entry++) { -+ struct pmb_entry *pmbe = pmb_init_map + entry; -+ -+ __set_pmb_entry(pmbe->vpn, pmbe->ppn, pmbe->flags, &entry); -+ } -+ -+ ctrl_outl(0, PMB_IRMCR); -+ -+ /* PMB.SE and UB[7] */ -+ ctrl_outl((1 << 31) | (1 << 7), PMB_PASCR); -+ -+ back_to_P1(); -+ -+ return 0; -+} -+ -+arch_initcall(pmb_init); -+ -+#ifdef CONFIG_DEBUG_FS -+static int pmb_seq_show(struct seq_file *file, void *iter) -+{ -+ int i; -+ -+ seq_printf(file, "V: Valid, C: Cacheable, WT: Write-Through\n" -+ "CB: Copy-Back, B: Buffered, UB: Unbuffered\n"); -+ seq_printf(file, "ety vpn ppn size flags\n"); -+ -+ for (i = 0; i < NR_PMB_ENTRIES; i++) { -+ unsigned long addr, data; -+ unsigned int size; -+ char *sz_str = NULL; -+ -+ addr = ctrl_inl(mk_pmb_addr(i)); -+ data = ctrl_inl(mk_pmb_data(i)); -+ -+ size = data & PMB_SZ_MASK; -+ sz_str = (size == PMB_SZ_16M) ? " 16MB": -+ (size == PMB_SZ_64M) ? " 64MB": -+ (size == PMB_SZ_128M) ? "128MB": -+ "512MB"; -+ -+ /* 02: V 0x88 0x08 128MB C CB B */ -+ seq_printf(file, "%02d: %c 0x%02lx 0x%02lx %s %c %s %s\n", -+ i, ((addr & PMB_V) && (data & PMB_V)) ? 'V' : ' ', -+ (addr >> 24) & 0xff, (data >> 24) & 0xff, -+ sz_str, (data & PMB_C) ? 'C' : ' ', -+ (data & PMB_WT) ? "WT" : "CB", -+ (data & PMB_UB) ? "UB" : " B"); -+ } -+ -+ return 0; -+} -+ -+static int pmb_debugfs_open(struct inode *inode, struct file *file) -+{ -+ return single_open(file, pmb_seq_show, NULL); -+} -+ -+static struct file_operations pmb_debugfs_fops = { -+ .owner = THIS_MODULE, -+ .open = pmb_debugfs_open, -+ .read = seq_read, -+ .llseek = seq_lseek, -+ .release = seq_release, -+}; -+ -+static int __init pmb_debugfs_init(void) -+{ -+ struct dentry *dentry; -+ -+ dentry = debugfs_create_file("pmb", S_IFREG | S_IRUGO, -+ NULL, NULL, &pmb_debugfs_fops); -+ if (IS_ERR(dentry)) -+ return PTR_ERR(dentry); -+ -+ return 0; -+} -+ -+postcore_initcall(pmb_debugfs_init); -+#endif -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/tlb-flush.c linux-2.6.17/arch/sh/mm/tlb-flush.c ---- linux-2.6.17-vanilla/arch/sh/mm/tlb-flush.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/tlb-flush.c 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,132 @@ -+/* -+ * TLB flushing operations for SH with an MMU. -+ * -+ * Copyright (C) 1999 Niibe Yutaka -+ * Copyright (C) 2003 Paul Mundt -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/mm.h> -+#include <asm/mmu_context.h> -+#include <asm/tlbflush.h> -+ -+void flush_tlb_page(struct vm_area_struct *vma, unsigned long page) -+{ -+ if (vma->vm_mm && vma->vm_mm->context != NO_CONTEXT) { -+ unsigned long flags; -+ unsigned long asid; -+ unsigned long saved_asid = MMU_NO_ASID; -+ -+ asid = vma->vm_mm->context & MMU_CONTEXT_ASID_MASK; -+ page &= PAGE_MASK; -+ -+ local_irq_save(flags); -+ if (vma->vm_mm != current->mm) { -+ saved_asid = get_asid(); -+ set_asid(asid); -+ } -+ __flush_tlb_page(asid, page); -+ if (saved_asid != MMU_NO_ASID) -+ set_asid(saved_asid); -+ local_irq_restore(flags); -+ } -+} -+ -+void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, -+ unsigned long end) -+{ -+ struct mm_struct *mm = vma->vm_mm; -+ -+ if (mm->context != NO_CONTEXT) { -+ unsigned long flags; -+ int size; -+ -+ local_irq_save(flags); -+ size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; -+ if (size > (MMU_NTLB_ENTRIES/4)) { /* Too many TLB to flush */ -+ mm->context = NO_CONTEXT; -+ if (mm == current->mm) -+ activate_context(mm); -+ } else { -+ unsigned long asid = mm->context&MMU_CONTEXT_ASID_MASK; -+ unsigned long saved_asid = MMU_NO_ASID; -+ -+ start &= PAGE_MASK; -+ end += (PAGE_SIZE - 1); -+ end &= PAGE_MASK; -+ if (mm != current->mm) { -+ saved_asid = get_asid(); -+ set_asid(asid); -+ } -+ while (start < end) { -+ __flush_tlb_page(asid, start); -+ start += PAGE_SIZE; -+ } -+ if (saved_asid != MMU_NO_ASID) -+ set_asid(saved_asid); -+ } -+ local_irq_restore(flags); -+ } -+} -+ -+void flush_tlb_kernel_range(unsigned long start, unsigned long end) -+{ -+ unsigned long flags; -+ int size; -+ -+ local_irq_save(flags); -+ size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; -+ if (size > (MMU_NTLB_ENTRIES/4)) { /* Too many TLB to flush */ -+ flush_tlb_all(); -+ } else { -+ unsigned long asid = init_mm.context&MMU_CONTEXT_ASID_MASK; -+ unsigned long saved_asid = get_asid(); -+ -+ start &= PAGE_MASK; -+ end += (PAGE_SIZE - 1); -+ end &= PAGE_MASK; -+ set_asid(asid); -+ while (start < end) { -+ __flush_tlb_page(asid, start); -+ start += PAGE_SIZE; -+ } -+ set_asid(saved_asid); -+ } -+ local_irq_restore(flags); -+} -+ -+void flush_tlb_mm(struct mm_struct *mm) -+{ -+ /* Invalidate all TLB of this process. */ -+ /* Instead of invalidating each TLB, we get new MMU context. */ -+ if (mm->context != NO_CONTEXT) { -+ unsigned long flags; -+ -+ local_irq_save(flags); -+ mm->context = NO_CONTEXT; -+ if (mm == current->mm) -+ activate_context(mm); -+ local_irq_restore(flags); -+ } -+} -+ -+void flush_tlb_all(void) -+{ -+ unsigned long flags, status; -+ -+ /* -+ * Flush all the TLB. -+ * -+ * Write to the MMU control register's bit: -+ * TF-bit for SH-3, TI-bit for SH-4. -+ * It's same position, bit #2. -+ */ -+ local_irq_save(flags); -+ status = ctrl_inl(MMUCR); -+ status |= 0x04; -+ ctrl_outl(status, MMUCR); -+ ctrl_barrier(); -+ local_irq_restore(flags); -+} -diff -ruN linux-2.6.17-vanilla/arch/sh/mm/tlb-sh4.c linux-2.6.17/arch/sh/mm/tlb-sh4.c ---- linux-2.6.17-vanilla/arch/sh/mm/tlb-sh4.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/mm/tlb-sh4.c 2006-07-12 16:54:23.000000000 +0000 -@@ -36,7 +36,6 @@ - unsigned long vpn; - struct page *page; - unsigned long pfn; -- unsigned long ptea; - - /* Ptrace may call this routine. */ - if (vma && current->active_mm != vma->vm_mm) -@@ -59,10 +58,11 @@ - ctrl_outl(vpn, MMU_PTEH); - - pteval = pte_val(pte); -+ - /* Set PTEA register */ -- /* TODO: make this look less hacky */ -- ptea = ((pteval >> 28) & 0xe) | (pteval & 0x1); -- ctrl_outl(ptea, MMU_PTEA); -+ if (cpu_data->flags & CPU_HAS_PTEA) -+ /* TODO: make this look less hacky */ -+ ctrl_outl(((pteval >> 28) & 0xe) | (pteval & 0x1), MMU_PTEA); - - /* Set PTEL register */ - pteval &= _PAGE_FLAGS_HARDWARE_MASK; /* drop software flags */ -diff -ruN linux-2.6.17-vanilla/arch/sh/oprofile/CVS/Entries linux-2.6.17/arch/sh/oprofile/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/oprofile/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/oprofile/CVS/Entries 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Kconfig/1.1/Sun Oct 12 21:34:48 2003// -+/Makefile/1.4/Sun Aug 21 23:08:54 2005// -+/op_model_null.c/1.2/Wed Mar 2 13:02:56 2005// -+/op_model_sh7750.c/1.2/Wed Mar 2 13:02:57 2005/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/oprofile/CVS/Repository linux-2.6.17/arch/sh/oprofile/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/oprofile/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/oprofile/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/oprofile -diff -ruN linux-2.6.17-vanilla/arch/sh/oprofile/CVS/Root linux-2.6.17/arch/sh/oprofile/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/oprofile/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/oprofile/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/oprofile/Makefile linux-2.6.17/arch/sh/oprofile/Makefile ---- linux-2.6.17-vanilla/arch/sh/oprofile/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/oprofile/Makefile 2006-07-12 16:54:23.000000000 +0000 -@@ -7,7 +7,11 @@ - timer_int.o ) - - profdrvr-y := op_model_null.o -+ -+# SH7750-style performance counters exist across 7750/7750S and 7091. -+profdrvr-$(CONFIG_CPU_SUBTYPE_SH7750S) := op_model_sh7750.o - profdrvr-$(CONFIG_CPU_SUBTYPE_SH7750) := op_model_sh7750.o -+profdrvr-$(CONFIG_CPU_SUBTYPE_SH7091) := op_model_sh7750.o - - oprofile-y := $(DRIVER_OBJS) $(profdrvr-y) - -diff -ruN linux-2.6.17-vanilla/arch/sh/tools/CVS/Entries linux-2.6.17/arch/sh/tools/CVS/Entries ---- linux-2.6.17-vanilla/arch/sh/tools/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/tools/CVS/Entries 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.2/Fri Sep 24 15:12:43 2004// -+/gen-mach-types/1.1/Fri Sep 24 15:12:45 2004/-ko/ -+/mach-types/1.15/Thu Jul 6 12:38:12 2006// -+D -diff -ruN linux-2.6.17-vanilla/arch/sh/tools/CVS/Repository linux-2.6.17/arch/sh/tools/CVS/Repository ---- linux-2.6.17-vanilla/arch/sh/tools/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/tools/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/arch/sh/tools -diff -ruN linux-2.6.17-vanilla/arch/sh/tools/CVS/Root linux-2.6.17/arch/sh/tools/CVS/Root ---- linux-2.6.17-vanilla/arch/sh/tools/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/arch/sh/tools/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/arch/sh/tools/mach-types linux-2.6.17/arch/sh/tools/mach-types ---- linux-2.6.17-vanilla/arch/sh/tools/mach-types 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/arch/sh/tools/mach-types 2006-07-12 16:54:23.000000000 +0000 -@@ -7,7 +7,7 @@ - # - SE SH_SOLUTION_ENGINE - 7751SE SH_7751_SOLUTION_ENGINE --7300SE SH_7300_SOLUTION_ENGINE -+7300SE SH_7300_SOLUTION_ENGINE - 73180SE SH_73180_SOLUTION_ENGINE - 7751SYSTEMH SH_7751_SYSTEMH - HP6XX SH_HP6XX -@@ -25,4 +25,7 @@ - EDOSK7705 SH_EDOSK7705 - SH4202_MICRODEV SH_SH4202_MICRODEV - SH03 SH_SH03 -- -+LANDISK SH_LANDISK -+R7780RP SH_R7780RP -+R7780MP SH_R7780MP -+TITAN SH_TITAN -diff -ruN linux-2.6.17-vanilla/drivers/CVS/Entries linux-2.6.17/drivers/CVS/Entries ---- linux-2.6.17-vanilla/drivers/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/CVS/Entries 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,12 @@ -+D/char//// -+D/i2c//// -+D/ide//// -+D/input//// -+D/mtd//// -+D/net//// -+D/pcmcia//// -+D/serial//// -+D/sh//// -+D/usb//// -+D/video//// -+D/rtc//// -diff -ruN linux-2.6.17-vanilla/drivers/CVS/Repository linux-2.6.17/drivers/CVS/Repository ---- linux-2.6.17-vanilla/drivers/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers -diff -ruN linux-2.6.17-vanilla/drivers/CVS/Root linux-2.6.17/drivers/CVS/Root ---- linux-2.6.17-vanilla/drivers/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/char/CVS/Entries linux-2.6.17/drivers/char/CVS/Entries ---- linux-2.6.17-vanilla/drivers/char/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/char/CVS/Entries 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,8 @@ -+/rs5c313_rtc.c/1.1/Thu Sep 29 07:19:20 2005/-ko/ -+/rtc.c/1.8/Mon Mar 27 21:06:14 2006/-ko/ -+/rtc9701_rtc.c/1.2/Mon May 30 06:24:28 2005/-ko/ -+/sh03rtc.c/1.3/Wed Jan 18 05:37:19 2006/-ko/ -+D/watchdog//// -+/Kconfig/1.15/Wed Jul 5 14:50:58 2006/-ko/ -+/Makefile/1.50/Wed Jul 5 14:50:59 2006/-ko/ -+/sysrq.c/1.17/Wed Jul 5 14:50:59 2006/-ko/ -diff -ruN linux-2.6.17-vanilla/drivers/char/CVS/Repository linux-2.6.17/drivers/char/CVS/Repository ---- linux-2.6.17-vanilla/drivers/char/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/char/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/char -diff -ruN linux-2.6.17-vanilla/drivers/char/CVS/Root linux-2.6.17/drivers/char/CVS/Root ---- linux-2.6.17-vanilla/drivers/char/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/char/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/char/Kconfig linux-2.6.17/drivers/char/Kconfig ---- linux-2.6.17-vanilla/drivers/char/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/char/Kconfig 2006-07-12 16:54:23.000000000 +0000 -@@ -737,6 +737,22 @@ - To compile this driver as a module, choose M here: the - module will be called rtc. - -+config SH03_RTC -+ tristate "Enhanced Real Time Clock (SH03) Support" -+ depends on SH_SH03 -+ -+config RS5C313_RTC -+ tristate "RICHO RS5C313 RTC Support for LANDISK" -+ depends on SH_LANDISK -+ help -+ Selecting this option will support RICHO RS5C313 RTC for LANDISK. -+ -+config RTC_9701JE -+ tristate "EPSON RTC-9701JE support" -+ depends on SH_RTS7751R2D -+ help -+ Selecting this option will support EPSON RTC-9701JE. -+ - config SGI_DS1286 - tristate "SGI DS1286 RTC support" - depends on SGI_IP22 -diff -ruN linux-2.6.17-vanilla/drivers/char/Makefile linux-2.6.17/drivers/char/Makefile ---- linux-2.6.17-vanilla/drivers/char/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/char/Makefile 2006-07-12 16:54:23.000000000 +0000 -@@ -67,6 +67,9 @@ - obj-$(CONFIG_SGI_IP27_RTC) += ip27-rtc.o - obj-$(CONFIG_DS1302) += ds1302.o - obj-$(CONFIG_S3C2410_RTC) += s3c2410-rtc.o -+obj-$(CONFIG_RTC_9701JE) += rtc9701_rtc.o -+obj-$(CONFIG_RS5C313_RTC) += rs5c313_rtc.o -+obj-$(CONFIG_SH03_RTC) += sh03rtc.o - ifeq ($(CONFIG_GENERIC_NVRAM),y) - obj-$(CONFIG_NVRAM) += generic_nvram.o - else -diff -ruN linux-2.6.17-vanilla/drivers/char/rs5c313_rtc.c linux-2.6.17/drivers/char/rs5c313_rtc.c ---- linux-2.6.17-vanilla/drivers/char/rs5c313_rtc.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/char/rs5c313_rtc.c 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,855 @@ -+/* -+ * RICHO RS5C313 Real Time Clock interface for Linux -+ * -+ * 2005-09-19 modifed by kogiidena -+ * -+ * Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org> -+ * Copyright (C) 1999 Tetsuya Okada & Niibe Yutaka -+ * -+ * Based on code written by Paul Gortmaker. -+ * Copyright (C) 1996 Paul Gortmaker -+ * -+ * This driver allows use of the real time clock (built into -+ * nearly all computers) from user space. It exports the /dev/rtc -+ * interface supporting various ioctl() and also the -+ * /proc/driver/rtc pseudo-file for status information. -+ * -+ * The ioctls can be used to set the interrupt behaviour and -+ * generation rate from the RTC via IRQ 8. Then the /dev/rtc -+ * interface can be used to make use of these timer interrupts, -+ * be they interval or alarm based. -+ * -+ * The /dev/rtc interface will block on reads until an interrupt -+ * has been received. If a RTC interrupt has already happened, -+ * it will output an unsigned long and then block. The output value -+ * contains the interrupt status in the low byte and the number of -+ * interrupts since the last read in the remaining high bytes. The -+ * /dev/rtc interface can also be used with the select(2) call. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version -+ * 2 of the License, or (at your option) any later version. -+ * -+ * Based on other minimal char device drivers, like Alan's -+ * watchdog, Ted's random, etc. etc. -+ * -+ * 1.07 Paul Gortmaker. -+ * 1.08 Miquel van Smoorenburg: disallow certain things on the -+ * DEC Alpha as the CMOS clock is also used for other things. -+ * 1.09 Nikita Schmidt: epoch support and some Alpha cleanup. -+ * 1.09a Pete Zaitcev: Sun SPARC -+ * 1.09b Jeff Garzik: Modularize, init cleanup -+ * 1.09c Jeff Garzik: SMP cleanup -+ * 1.10 Paul Barton-Davis: add support for async I/O -+ * 1.10a Andrea Arcangeli: Alpha updates -+ * 1.10b Andrew Morton: SMP lock fix -+ * 1.10c Cesar Barros: SMP locking fixes and cleanup -+ * 1.10d Paul Gortmaker: delete paranoia check in rtc_exit -+ * 1.10e Maciej W. Rozycki: Handle DECstation's year weirdness. -+ * 1.11 Takashi Iwai: Kernel access functions -+ * rtc_register/rtc_unregister/rtc_control -+ * 1.11a Daniele Bellucci: Audit create_proc_read_entry in rtc_init -+ * 1.12 Venkatesh Pallipadi: Hooks for emulating rtc on HPET base-timer -+ * CONFIG_HPET_EMULATE_RTC -+ * -+ */ -+ -+#define RTC_VERSION "1.12" -+ -+#include <linux/config.h> -+#include <linux/delay.h> -+#include <linux/bcd.h> -+#include <linux/interrupt.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/types.h> -+#include <linux/miscdevice.h> -+#include <linux/ioport.h> -+#include <linux/fcntl.h> -+#include <linux/mc146818rtc.h> -+#include <linux/init.h> -+#include <linux/poll.h> -+#include <linux/proc_fs.h> -+#include <linux/seq_file.h> -+#include <linux/spinlock.h> -+#include <linux/sysctl.h> -+#include <linux/wait.h> -+#include <asm/current.h> -+#include <asm/uaccess.h> -+#include <asm/system.h> -+#include <asm/io.h> -+ -+ -+#ifndef CONFIG_SH_LANDISK -+#error rs5c313 read and write function not defined -+#endif -+ -+#ifdef CONFIG_SH_LANDISK -+/*****************************************************/ -+/* LANDISK dependence part of RS5C313 */ -+/*****************************************************/ -+ -+#define SCSMR1 0xFFE00000 -+#define SCSCR1 0xFFE00008 -+#define SCSMR1_CA 0x80 -+#define SCSCR1_CKE 0x03 -+#define SCSPTR1 0xFFE0001C -+#define SCSPTR1_EIO 0x80 -+#define SCSPTR1_SPB1IO 0x08 -+#define SCSPTR1_SPB1DT 0x04 -+#define SCSPTR1_SPB0IO 0x02 -+#define SCSPTR1_SPB0DT 0x01 -+ -+#define SDA_OEN SCSPTR1_SPB1IO -+#define SDA SCSPTR1_SPB1DT -+#define SCL_OEN SCSPTR1_SPB0IO -+#define SCL SCSPTR1_SPB0DT -+ -+/* RICOH RS5C313 CE port */ -+#define RS5C313_CE 0xB0000003 -+ -+/* RICOH RS5C313 CE port bit */ -+#define RS5C313_CE_RTCCE 0x02 -+ -+/* SCSPTR1 data */ -+unsigned char scsptr1_data; -+ -+#define RS5C313_CEENABLE ctrl_outb(RS5C313_CE_RTCCE, RS5C313_CE); -+#define RS5C313_CEDISABLE ctrl_outb(0x00, RS5C313_CE) -+#define RS5C313_MISCOP ctrl_outb(0x02, 0xB0000008) -+ -+static void rs5c313_initialize(void) -+{ -+ /* Set SCK as I/O port and Initialize SCSPTR1 data & I/O port. */ -+ ctrl_outb(ctrl_inb(SCSMR1) & ~SCSMR1_CA, SCSMR1); -+ ctrl_outb(ctrl_inb(SCSCR1) & ~SCSCR1_CKE, SCSCR1); -+ -+ /* And Initialize SCL for RS5C313 clock */ -+ scsptr1_data = ctrl_inb(SCSPTR1) | SCL; /* SCL:H */ -+ ctrl_outb(scsptr1_data, SCSPTR1); -+ scsptr1_data = ctrl_inb(SCSPTR1) | SCL_OEN; /* SCL output enable */ -+ ctrl_outb(scsptr1_data, SCSPTR1); -+ RS5C313_CEDISABLE; /* CE:L */ -+} -+ -+static void rs5c313_write(unsigned char data) -+{ -+ int i; -+ -+ for (i = 0; i < 8; i++) { -+ /* SDA:Write Data */ -+ scsptr1_data = (scsptr1_data & ~SDA) -+ | ((((0x80 >> i) & data) >> (7 - i)) << 2); -+ ctrl_outb(scsptr1_data, SCSPTR1); -+ if (i == 0) { -+ scsptr1_data |= SDA_OEN; /* SDA:output enable */ -+ ctrl_outb(scsptr1_data, SCSPTR1); -+ } -+ ndelay(700); -+ scsptr1_data &= ~SCL; /* SCL:L */ -+ ctrl_outb(scsptr1_data, SCSPTR1); -+ ndelay(700); -+ scsptr1_data |= SCL; /* SCL:H */ -+ ctrl_outb(scsptr1_data, SCSPTR1); -+ } -+ -+ scsptr1_data &= ~SDA_OEN; /* SDA:output disable */ -+ ctrl_outb(scsptr1_data, SCSPTR1); -+ -+} -+ -+static unsigned char rs5c313_read_data(void) -+{ -+ int i; -+ unsigned char data = 0; -+ -+ for (i = 0; i < 8; i++) { -+ ndelay(700); -+ /* SDA:Read Data */ -+ data |= ((ctrl_inb(SCSPTR1) & SDA) >> 2) << (7 - i); -+ scsptr1_data &= ~SCL; /* SCL:L */ -+ ctrl_outb(scsptr1_data, SCSPTR1); -+ ndelay(700); -+ scsptr1_data |= SCL; /* SCL:H */ -+ ctrl_outb(scsptr1_data, SCSPTR1); -+ } -+ return data & 0x0F; -+} -+ -+#endif /* CONFIG_SH_LANDISK */ -+ -+ -+/*****************************************************/ -+/* machine independence part of RS5C313 */ -+/*****************************************************/ -+ -+/* RICOH RS5C313 address */ -+#define RS5C313_ADDR_SEC 0x00 -+#define RS5C313_ADDR_SEC10 0x01 -+#define RS5C313_ADDR_MIN 0x02 -+#define RS5C313_ADDR_MIN10 0x03 -+#define RS5C313_ADDR_HOUR 0x04 -+#define RS5C313_ADDR_HOUR10 0x05 -+#define RS5C313_ADDR_WEEK 0x06 -+#define RS5C313_ADDR_INTINTVREG 0x07 -+#define RS5C313_ADDR_DAY 0x08 -+#define RS5C313_ADDR_DAY10 0x09 -+#define RS5C313_ADDR_MON 0x0A -+#define RS5C313_ADDR_MON10 0x0B -+#define RS5C313_ADDR_YEAR 0x0C -+#define RS5C313_ADDR_YEAR10 0x0D -+#define RS5C313_ADDR_CNTREG 0x0E -+#define RS5C313_ADDR_TESTREG 0x0F -+ -+/* RICOH RS5C313 control register */ -+#define RS5C313_CNTREG_ADJ_BSY 0x01 -+#define RS5C313_CNTREG_WTEN_XSTP 0x02 -+#define RS5C313_CNTREG_12_24 0x04 -+#define RS5C313_CNTREG_CTFG 0x08 -+ -+/* RICOH RS5C313 test register */ -+#define RS5C313_TESTREG_TEST 0x01 -+ -+/* RICOH RS5C313 control bit */ -+#define RS5C313_CNTBIT_READ 0x40 -+#define RS5C313_CNTBIT_AD 0x20 -+#define RS5C313_CNTBIT_DT 0x10 -+ -+static unsigned char rs5c313_read_reg(unsigned char addr) -+{ -+ -+ rs5c313_write(addr | RS5C313_CNTBIT_READ | RS5C313_CNTBIT_AD); -+ return rs5c313_read_data(); -+ -+} -+ -+static void rs5c313_write_reg(unsigned char addr, unsigned char data) -+{ -+ data &= 0x0f; -+ rs5c313_write(addr | RS5C313_CNTBIT_AD); -+ rs5c313_write(data | RS5C313_CNTBIT_DT); -+ return; -+} -+ -+#define rs5c313_read_cntreg() rs5c313_read_reg(RS5C313_ADDR_CNTREG) -+#define rs5c313_write_cntreg(data) rs5c313_write_reg(RS5C313_ADDR_CNTREG,data) -+#define rs5c313_write_intintvreg(data) rs5c313_write_reg(RS5C313_ADDR_INTINTVREG,data) -+ -+ -+static void rs5c313_get_cur_time(unsigned char *sec, unsigned char *min, -+ unsigned char *hr, -+ unsigned char *day, unsigned char *mon, -+ unsigned char *yr) -+{ -+ -+ while (1) { -+ RS5C313_CEENABLE; /* CE:H */ -+ -+ /* Initialize control reg. 24 hour */ -+ rs5c313_write_cntreg(0x04); -+ -+ if (!(rs5c313_read_cntreg() & RS5C313_CNTREG_ADJ_BSY)) -+ break; -+ RS5C313_MISCOP; -+ RS5C313_CEDISABLE; -+ ndelay(700); /* CE:L */ -+ } -+ -+ *sec = rs5c313_read_reg(RS5C313_ADDR_SEC); -+ *sec |= (rs5c313_read_reg(RS5C313_ADDR_SEC10) << 4); -+ -+ *min = rs5c313_read_reg(RS5C313_ADDR_MIN); -+ *min |= (rs5c313_read_reg(RS5C313_ADDR_MIN10) << 4); -+ -+ *hr = rs5c313_read_reg(RS5C313_ADDR_HOUR); -+ *hr |= (rs5c313_read_reg(RS5C313_ADDR_HOUR10) << 4); -+ -+ *day = rs5c313_read_reg(RS5C313_ADDR_DAY); -+ *day |= (rs5c313_read_reg(RS5C313_ADDR_DAY10) << 4); -+ -+ *mon = rs5c313_read_reg(RS5C313_ADDR_MON); -+ *mon |= (rs5c313_read_reg(RS5C313_ADDR_MON10) << 4); -+ -+ *yr = rs5c313_read_reg(RS5C313_ADDR_YEAR); -+ *yr |= (rs5c313_read_reg(RS5C313_ADDR_YEAR10) << 4); -+ -+ RS5C313_CEDISABLE; -+ ndelay(700); /* CE:L */ -+ -+} -+ -+static void rs5c313_set_cur_time(unsigned char sec, unsigned char min, -+ unsigned char hr, -+ unsigned char day, unsigned char mon, -+ unsigned char yr) -+{ -+ -+ /* bysy check. */ -+ while (1) { -+ RS5C313_CEENABLE; /* CE:H */ -+ -+ /* Initialize control reg. 24 hour */ -+ rs5c313_write_cntreg(0x04); -+ -+ if (!(rs5c313_read_cntreg() & RS5C313_CNTREG_ADJ_BSY)) -+ break; -+ RS5C313_MISCOP; -+ RS5C313_CEDISABLE; -+ ndelay(700); /* CE:L */ -+ } -+ -+ rs5c313_write_reg(RS5C313_ADDR_SEC, sec); -+ rs5c313_write_reg(RS5C313_ADDR_SEC10, (sec >> 4)); -+ -+ rs5c313_write_reg(RS5C313_ADDR_MIN, min); -+ rs5c313_write_reg(RS5C313_ADDR_MIN10, (min >> 4)); -+ -+ rs5c313_write_reg(RS5C313_ADDR_HOUR, hr); -+ rs5c313_write_reg(RS5C313_ADDR_HOUR10, (hr >> 4)); -+ -+ rs5c313_write_reg(RS5C313_ADDR_DAY, day); -+ rs5c313_write_reg(RS5C313_ADDR_DAY10,(day >> 4)); -+ -+ rs5c313_write_reg(RS5C313_ADDR_MON, mon); -+ rs5c313_write_reg(RS5C313_ADDR_MON10, (mon >> 4)); -+ -+ rs5c313_write_reg(RS5C313_ADDR_YEAR, yr); -+ rs5c313_write_reg(RS5C313_ADDR_YEAR10, (yr >> 4)); -+ -+ RS5C313_CEDISABLE; -+ ndelay(700); /* CE:H */ -+ -+} -+ -+unsigned long rs5c313_get_cmos_time( -+ unsigned int *BCD_yr, unsigned int *BCD_mon, -+ unsigned int *BCD_day, unsigned int *BCD_hr, -+ unsigned int *BCD_min, unsigned int *BCD_sec) -+{ -+ -+ unsigned int sec128, sec, min, hr, day, mon, yr, yr100; -+ int clkstop = 0; -+ -+ /* Set SCK as I/O port and Initialize SCSPTR1 data & I/O port. */ -+ /* And Initialize SCL for RS5C313 clock */ -+ rs5c313_initialize(); -+ -+ again: -+ /* check XSTP bit for clock stoped */ -+ RS5C313_CEENABLE; /* CE:H */ -+ if (rs5c313_read_cntreg() & RS5C313_CNTREG_WTEN_XSTP) { -+ /* INT interval reg. OFF */ -+ rs5c313_write_intintvreg(0x00); -+ /* Initialize control reg. 24 hour & adjust */ -+ rs5c313_write_cntreg(0x07); -+ /* bysy check. */ -+ while (rs5c313_read_cntreg() & RS5C313_CNTREG_ADJ_BSY) -+ RS5C313_MISCOP; -+ /* Initialize control reg. 24 hour */ -+ rs5c313_write_cntreg(0x04); -+ clkstop = 1; -+ } else { -+ clkstop = 0; -+ } -+ RS5C313_CEDISABLE; -+ ndelay(700); /* CE:L */ -+ -+ /* Get current time. */ -+ sec = 0; -+ min = 0; -+ hr = 0; -+ day = 0; -+ mon = 0; -+ yr = 0; -+ rs5c313_get_cur_time((unsigned char *)&sec, -+ (unsigned char *)&min, (unsigned char *)&hr, -+ (unsigned char *)&day, -+ (unsigned char *)&mon, (unsigned char *)&yr); -+ -+ /* S-3531A count year from 2000 to 2099. */ -+ yr100 = 0x20; -+ /* S-3531A can't get sec128. */ -+ sec128 = 0; -+ -+ *BCD_yr = yr; -+ *BCD_mon = mon; -+ *BCD_day = day; -+ *BCD_hr = hr; -+ *BCD_min = min; -+ *BCD_sec = sec; -+ -+ yr100 = BCD2BIN(yr100); -+ yr = BCD2BIN(yr); -+ mon = BCD2BIN(mon); -+ day = BCD2BIN(day); -+ hr = BCD2BIN(hr); -+ min = BCD2BIN(min); -+ sec = BCD2BIN(sec); -+ -+ if (yr > 99 || mon < 1 || mon > 12 || day > 31 || day < 1 || -+ hr > 23 || min > 59 || sec > 59 || clkstop) { -+ printk(KERN_ERR -+ "RICHO RS5C313: invalid value, resetting to 1 Jan 2000\n"); -+ /* Reset S-3531A set (20)00year/01month/01day */ -+ /* 00hour 00minute 00second */ -+ sec = 0; -+ min = 0; -+ hr = 0; -+ day = 1; -+ mon = 1; -+ yr = 00; -+ rs5c313_set_cur_time((unsigned char)sec, -+ (unsigned char)min, (unsigned char)hr, -+ (unsigned char)day, -+ (unsigned char)mon, (unsigned char)yr); -+ -+ goto again; -+ } -+ -+ return mktime(yr100 * 100 + yr, mon, day, hr, min, sec); -+} -+ -+void rs5c313_set_cmos_time(unsigned int BCD_yr, unsigned int BCD_mon, -+ unsigned int BCD_day, unsigned int BCD_hr, -+ unsigned int BCD_min, unsigned int BCD_sec) -+{ -+ -+ rs5c313_set_cur_time((unsigned char)BCD_sec, -+ (unsigned char)BCD_min, -+ (unsigned char)BCD_hr, -+ (unsigned char)BCD_day, -+ (unsigned char)BCD_mon, (unsigned char)BCD_yr); -+ -+} -+ -+/*****************************************************/ -+/* machine independence part of RTC driver */ -+/*****************************************************/ -+ -+#define RTC_IO_EXTENT 0x8 -+ -+static struct fasync_struct *rtc_async_queue; -+static DECLARE_WAIT_QUEUE_HEAD(rtc_wait); -+static ssize_t rtc_read(struct file *file, char __user *buf, -+ size_t count, loff_t *ppos); -+static int rtc_ioctl(struct inode *inode, struct file *file, -+ unsigned int cmd, unsigned long arg); -+static int rtc_proc_open(struct inode *inode, struct file *file); -+ -+/* -+ * Bits in rtc_status. (6 bits of room for future expansion) -+ */ -+ -+#define RTC_IS_OPEN 0x01 /* means /dev/rtc is in use */ -+#define RTC_TIMER_ON 0x02 /* missed irq timer active */ -+ -+/* -+ * rtc_status is never changed by rtc_interrupt, and ioctl/open/close is -+ * protected by the big kernel lock. However, ioctl can still disable the timer -+ * in rtc_status and then with del_timer after the interrupt has read -+ * rtc_status but before mod_timer is called, which would then reenable the -+ * timer (but you would need to have an awful timing before you'd trip on it) -+ */ -+static unsigned long rtc_status = 0; /* bitmapped status byte. */ -+static unsigned long rtc_freq = 0; /* Current periodic IRQ rate */ -+static unsigned long rtc_irq_data = 0; /* our output to the world */ -+static unsigned long rtc_max_user_freq = 64; /* > this, need CAP_SYS_RESOURCE */ -+ -+/* -+ * If this driver ever becomes modularised, it will be really nice -+ * to make the epoch retain its value across module reload... -+ */ -+ -+static unsigned long epoch = 1900; /* year corresponding to 0x00 */ -+ -+static const unsigned char days_in_mo[] = -+{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; -+ -+/* -+ * sysctl-tuning infrastructure. -+ */ -+static ctl_table rtc_table[] = { -+ { -+ .ctl_name = 1, -+ .procname = "max-user-freq", -+ .data = &rtc_max_user_freq, -+ .maxlen = sizeof(int), -+ .mode = 0644, -+ .proc_handler = &proc_dointvec, -+ }, -+ { .ctl_name = 0 } -+}; -+ -+static ctl_table rtc_root[] = { -+ { -+ .ctl_name = 1, -+ .procname = "rtc", -+ .maxlen = 0, -+ .mode = 0555, -+ .child = rtc_table, -+ }, -+ { .ctl_name = 0 } -+}; -+ -+static ctl_table dev_root[] = { -+ { -+ .ctl_name = CTL_DEV, -+ .procname = "dev", -+ .maxlen = 0, -+ .mode = 0555, -+ .child = rtc_root, -+ }, -+ { .ctl_name = 0 } -+}; -+ -+static struct ctl_table_header *sysctl_header; -+ -+static int __init init_sysctl(void) -+{ -+ sysctl_header = register_sysctl_table(dev_root, 0); -+ return 0; -+} -+ -+static void __exit cleanup_sysctl(void) -+{ -+ unregister_sysctl_table(sysctl_header); -+} -+ -+/* -+ * Now all the various file operations that we export. -+ */ -+ -+static ssize_t rtc_read(struct file *file, char __user *buf, -+ size_t count, loff_t *ppos) -+{ -+ return -EIO; -+} -+ -+static int rtc_do_ioctl(unsigned int cmd, unsigned long arg, int kernel) -+{ -+ struct rtc_time wtime; -+ -+ switch (cmd) { -+ case RTC_RD_TIME: /* Read the time/date from RTC */ -+ { -+ memset(&wtime, 0, sizeof(struct rtc_time)); -+ rtc_get_rtc_time(&wtime); -+ break; -+ } -+ case RTC_SET_TIME: /* Set the RTC */ -+ { -+ struct rtc_time rtc_tm; -+ unsigned char mon, day, hrs, min, sec, leap_yr; -+ unsigned int yrs; -+ -+ if (!capable(CAP_SYS_TIME)) -+ return -EACCES; -+ -+ if (copy_from_user(&rtc_tm, (struct rtc_time __user *)arg, -+ sizeof(struct rtc_time))) -+ return -EFAULT; -+ -+ yrs = rtc_tm.tm_year + 1900; -+ mon = rtc_tm.tm_mon + 1; /* tm_mon starts at zero */ -+ day = rtc_tm.tm_mday; -+ hrs = rtc_tm.tm_hour; -+ min = rtc_tm.tm_min; -+ sec = rtc_tm.tm_sec; -+ -+ if (yrs < 1970) -+ return -EINVAL; -+ -+ leap_yr = ((!(yrs % 4) && (yrs % 100)) || !(yrs % 400)); -+ -+ if ((mon > 12) || (day == 0)) -+ return -EINVAL; -+ -+ if (day > (days_in_mo[mon] + ((mon == 2) && leap_yr))) -+ return -EINVAL; -+ -+ if ((hrs >= 24) || (min >= 60) || (sec >= 60)) -+ return -EINVAL; -+ -+ if ((yrs -= epoch) > 255) /* They are unsigned */ -+ return -EINVAL; -+ -+ /* These limits and adjustments are independent of -+ * whether the chip is in binary mode or not. -+ */ -+ if (yrs > 169) { -+ return -EINVAL; -+ } -+ if (yrs >= 100) -+ yrs -= 100; -+ -+ sec = BIN2BCD(sec); -+ min = BIN2BCD(min); -+ hrs = BIN2BCD(hrs); -+ day = BIN2BCD(day); -+ mon = BIN2BCD(mon); -+ yrs = BIN2BCD(yrs); -+ -+ spin_lock_irq(&rtc_lock); -+ rs5c313_set_cmos_time(yrs, mon, day, hrs, min, sec); -+ spin_unlock_irq(&rtc_lock); -+ -+ return 0; -+ } -+ case RTC_EPOCH_READ: /* Read the epoch. */ -+ { -+ return put_user (epoch, (unsigned long __user *)arg); -+ } -+ case RTC_EPOCH_SET: /* Set the epoch. */ -+ { -+ /* -+ * There were no RTC clocks before 1900. -+ */ -+ if (arg < 1900) -+ return -EINVAL; -+ -+ if (!capable(CAP_SYS_TIME)) -+ return -EACCES; -+ -+ epoch = arg; -+ return 0; -+ } -+ default: -+ return -ENOTTY; -+ } -+ return copy_to_user((void __user *)arg, &wtime, sizeof wtime) ? -EFAULT : 0; -+} -+ -+static int rtc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, -+ unsigned long arg) -+{ -+ return rtc_do_ioctl(cmd, arg, 0); -+} -+ -+/* -+ * We enforce only one user at a time here with the open/close. -+ * Also clear the previous interrupt data on an open, and clean -+ * up things on a close. -+ */ -+ -+/* We use rtc_lock to protect against concurrent opens. So the BKL is not -+ * needed here. Or anywhere else in this driver. */ -+static int rtc_open(struct inode *inode, struct file *file) -+{ -+ spin_lock_irq (&rtc_lock); -+ -+ if(rtc_status & RTC_IS_OPEN) -+ goto out_busy; -+ -+ rtc_status |= RTC_IS_OPEN; -+ -+ rtc_irq_data = 0; -+ spin_unlock_irq (&rtc_lock); -+ return 0; -+ -+out_busy: -+ spin_unlock_irq (&rtc_lock); -+ return -EBUSY; -+} -+ -+static int rtc_fasync (int fd, struct file *filp, int on) -+ -+{ -+ return fasync_helper (fd, filp, on, &rtc_async_queue); -+} -+ -+static int rtc_release(struct inode *inode, struct file *file) -+{ -+ spin_lock_irq (&rtc_lock); -+ rtc_irq_data = 0; -+ rtc_status &= ~RTC_IS_OPEN; -+ spin_unlock_irq (&rtc_lock); -+ return 0; -+} -+ -+ -+/* -+ * exported stuffs -+ */ -+ -+EXPORT_SYMBOL(rtc_register); -+EXPORT_SYMBOL(rtc_unregister); -+EXPORT_SYMBOL(rtc_control); -+ -+int rtc_register(rtc_task_t *task) -+{ -+ return -EIO; -+} -+ -+int rtc_unregister(rtc_task_t *task) -+{ -+ return -EIO; -+} -+ -+int rtc_control(rtc_task_t *task, unsigned int cmd, unsigned long arg) -+{ -+ return -EIO; -+} -+ -+ -+/* -+ * The various file operations we support. -+ */ -+ -+static struct file_operations rtc_fops = { -+ .owner = THIS_MODULE, -+ .llseek = no_llseek, -+ .read = rtc_read, -+ .ioctl = rtc_ioctl, -+ .open = rtc_open, -+ .release = rtc_release, -+ .fasync = rtc_fasync, -+}; -+ -+static struct miscdevice rtc_dev = { -+ .minor = RTC_MINOR, -+ .name = "rtc", -+ .fops = &rtc_fops, -+}; -+ -+static struct file_operations rtc_proc_fops = { -+ .owner = THIS_MODULE, -+ .open = rtc_proc_open, -+ .read = seq_read, -+ .llseek = seq_lseek, -+ .release = single_release, -+}; -+ -+ -+static int __init rtc_init(void) -+{ -+ struct proc_dir_entry *ent; -+ -+ if (!request_region(RTC_PORT(0), RTC_IO_EXTENT, "rtc")) { -+ printk(KERN_ERR "rtc: I/O port %d is not free.\n", RTC_PORT (0)); -+ return -EIO; -+ } -+ -+ if (misc_register(&rtc_dev)) { -+ release_region(RTC_PORT(0), RTC_IO_EXTENT); -+ return -ENODEV; -+ } -+ -+ ent = create_proc_entry("driver/rtc", 0, NULL); -+ if (!ent) { -+ release_region(RTC_PORT(0), RTC_IO_EXTENT); -+ misc_deregister(&rtc_dev); -+ return -ENOMEM; -+ } -+ ent->proc_fops = &rtc_proc_fops; -+ (void) init_sysctl(); -+ -+ printk(KERN_INFO "RICHO RS5C313 Real Time Clock Driver v" RTC_VERSION "\n"); -+ -+ return 0; -+} -+ -+static void __exit rtc_exit (void) -+{ -+ cleanup_sysctl(); -+ remove_proc_entry ("driver/rtc", NULL); -+ misc_deregister(&rtc_dev); -+ release_region (RTC_PORT (0), RTC_IO_EXTENT); -+} -+ -+module_init(rtc_init); -+module_exit(rtc_exit); -+ -+ -+/* -+ * Info exported via "/proc/driver/rtc". -+ */ -+ -+static int rtc_proc_show(struct seq_file *seq, void *v) -+{ -+#define YN(bit) ((ctrl & bit) ? "yes" : "no") -+#define NY(bit) ((ctrl & bit) ? "no" : "yes") -+ struct rtc_time tm; -+ unsigned char batt, ctrl; -+ unsigned long freq; -+ -+ batt = 1; -+ freq = rtc_freq; -+ ctrl = RTC_24H; -+ -+ rtc_get_rtc_time(&tm); -+ -+ /* -+ * There is no way to tell if the luser has the RTC set for local -+ * time or for Universal Standard Time (GMT). Probably local though. -+ */ -+ seq_printf(seq, -+ "rtc_time\t: %02d:%02d:%02d\n" -+ "rtc_date\t: %04d-%02d-%02d\n" -+ "rtc_epoch\t: %04lu\n", -+ tm.tm_hour, tm.tm_min, tm.tm_sec, -+ tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, epoch); -+ -+ seq_puts(seq, "alarm\t\t: **:**:**\n"); -+ -+ seq_printf(seq, -+ "DST_enable\t: %s\n" -+ "BCD\t\t: %s\n" -+ "24hr\t\t: %s\n" -+ "square_wave\t: %s\n" -+ "alarm_IRQ\t: %s\n" -+ "update_IRQ\t: %s\n" -+ "periodic_IRQ\t: %s\n" -+ "periodic_freq\t: %ld\n" -+ "batt_status\t: %s\n", -+ YN(RTC_DST_EN), -+ NY(RTC_DM_BINARY), -+ YN(RTC_24H), -+ YN(RTC_SQWE), -+ YN(RTC_AIE), -+ YN(RTC_UIE), -+ YN(RTC_PIE), -+ freq, -+ batt ? "okay" : "dead"); -+ -+ return 0; -+#undef YN -+#undef NY -+} -+ -+static int rtc_proc_open(struct inode *inode, struct file *file) -+{ -+ return single_open(file, rtc_proc_show, NULL); -+} -+ -+void rtc_get_rtc_time(struct rtc_time *rtc_tm) -+{ -+ unsigned int BCD_yr, BCD_mon, BCD_day, BCD_hr, BCD_min, BCD_sec; -+ -+ spin_lock_irq(&rtc_lock); -+ rs5c313_get_cmos_time(&BCD_yr, &BCD_mon, &BCD_day, -+ &BCD_hr, &BCD_min, &BCD_sec); -+ spin_unlock_irq(&rtc_lock); -+ -+ rtc_tm->tm_sec = BCD2BIN(BCD_sec); -+ rtc_tm->tm_min = BCD2BIN(BCD_min); -+ rtc_tm->tm_hour = BCD2BIN(BCD_hr); -+ rtc_tm->tm_mday = BCD2BIN(BCD_day); -+ rtc_tm->tm_mon = BCD2BIN(BCD_mon); -+ rtc_tm->tm_year = BCD2BIN(BCD_yr); -+ -+ /* -+ * Account for differences between how the RTC uses the values -+ * and how they are defined in a struct rtc_time; -+ */ -+ if ((rtc_tm->tm_year += (epoch - 1900)) <= 69) -+ rtc_tm->tm_year += 100; -+ -+ rtc_tm->tm_mon--; -+} -+ -+ -+MODULE_AUTHOR("kogiidena"); -+MODULE_LICENSE("GPL"); -+MODULE_ALIAS_MISCDEV(RTC_MINOR); -+ -diff -ruN linux-2.6.17-vanilla/drivers/char/rtc.c linux-2.6.17/drivers/char/rtc.c ---- linux-2.6.17-vanilla/drivers/char/rtc.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/char/rtc.c 2006-07-12 16:54:23.000000000 +0000 -@@ -104,7 +104,7 @@ - #endif - - #ifdef RTC_IRQ --static int rtc_has_irq = 1; -+static int rtc_has_irq = RTC_IRQ; - #endif - - #ifndef CONFIG_HPET_EMULATE_RTC -diff -ruN linux-2.6.17-vanilla/drivers/char/rtc9701_rtc.c linux-2.6.17/drivers/char/rtc9701_rtc.c ---- linux-2.6.17-vanilla/drivers/char/rtc9701_rtc.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/char/rtc9701_rtc.c 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,888 @@ -+/* -+ * linux/drivers/char/rtc9701_rtc.c -+ * -+ * Real Time Clock interface for Linux -+ * EPSON RTC-9701JE support -+ * -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/fs.h> -+#include <linux/miscdevice.h> -+#include <linux/delay.h> -+#include <asm/delay.h> -+#include <linux/string.h> -+#include <linux/interrupt.h> -+#include <linux/init.h> -+#include <linux/poll.h> -+#ifdef CONFIG_PROC_FS -+#include <linux/proc_fs.h> -+#endif -+ -+#include <asm/io.h> -+#include <asm/rts7751r2d/rts7751r2d.h> -+ -+#include <linux/rtc.h> -+ -+/* define to 1 enable copious debugging info */ -+#undef RTC9701_DEBUG -+#undef RTC9701_DEBUG_IO -+#undef RTC9701_DEBUG_INTR -+ -+#ifndef BCD_TO_BIN -+#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10) -+#endif -+ -+#ifndef BIN_TO_BCD -+#define BIN_TO_BCD(val) ((val)=(((val)/10)<<4) + (val)%10) -+#endif -+ -+#define DRIVER_VERSION "0.02" -+ -+#define RSECCNT 0x00 /* Second Counter */ -+#define RMINCNT 0x01 /* Minute Counter */ -+#define RHRCNT 0x02 /* Hour Counter */ -+#define RWKCNT 0x03 /* Week Counter */ -+#define RDAYCNT 0x04 /* Day Counter */ -+#define RMONCNT 0x05 /* Month Counter */ -+#define RYRCNT 0x06 /* Year Counter */ -+#define R100CNT 0x07 /* Y100 Counter */ -+#define RMINAR 0x08 /* Minute Alarm */ -+#define RHRAR 0x09 /* Hour Alarm */ -+#define RWKAR 0x0a /* Week/Day Alarm */ -+#define RTIMCNT 0x0c /* Interval Timer */ -+#define REXT 0x0d /* Extension Register */ -+#define RFLAG 0x0e /* RTC Flag Register */ -+#define RCR 0x0f /* RTC Control Register */ -+ -+#define WRITE_CMD 0x00 /* Write Command */ -+#define READ_CMD 0x08 /* Read Command */ -+ -+#define SCSMR1 0xffe00000 /* Serial Mode Register(SCI) */ -+#define SCSCR1 0xffe00008 /* Serial Control Register(SCI) */ -+#define SCSPTR1 0xffe0001c /* Serial Port Register(SCI) */ -+ -+static int rtc_usage; -+static int rtc_irq_data; -+ -+static struct fasync_struct* rtc_async_queue; -+ -+static DECLARE_WAIT_QUEUE_HEAD(rtc_wait); -+extern spinlock_t rtc_lock; -+static unsigned int epoch = 1900; /* year corresponding to 0x00 */ -+ -+static const unsigned char days_in_mo[] = -+{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; -+ -+static __inline__ unsigned char rtc9701_inb(unsigned long addr) -+{ -+ unsigned char data, retval; -+ int i; -+ -+ ctrl_outw(0x0001, PA_RTCCE); /* CE=1 */ -+ ndelay(170); /* 170ns delay (tZR) */ -+ ctrl_outb(0x8c, SCSPTR1); -+ for (i=0 ; i<18 ; i++) -+ if (ctrl_inb(SCSPTR1) & 0x01) /* Check ready */ -+ break; -+ else -+ mdelay(1); /* 1ms delay */ -+//#ifdef RTC9701_DEBUG_IO -+ if (i >= 18) -+ printk("RTC-9701JE Read Time out ready wait\n"); -+//#endif -+ ndelay(65); /* 65ns delay (tRDY) */ -+ -+ for (i=0 ; i<4 ; i++) { /* Command Set */ -+ if ((READ_CMD << i) & 0x08) -+ data = 0x8b; /* DATA=1 */ -+ else -+ data = 0x8a; /* DATA=0 */ -+ ctrl_outb(data, SCSPTR1); /* CLK=0, DATA */ -+ ndelay(250); /* 250ns delay (tWL) */ -+ data |= 0x04; -+ ctrl_outb(data, SCSPTR1); /* CLK=1 */ -+ ndelay(250); /* 250ns delay (tWH) */ -+ } -+ -+ for (i=0 ; i<4 ; i++) { /* Address Set */ -+ if ((addr << i) & 0x08) -+ data = 0x8b; /* DATA=1 */ -+ else -+ data = 0x8a; /* DATA=0 */ -+ ctrl_outb(data, SCSPTR1); /* CLK=0, DATA */ -+ ndelay(250); /* 250ns delay (tWL) */ -+ data |= 0x04; -+ ctrl_outb(data, SCSPTR1); /* CLK=1 */ -+ ndelay(250); /* 250ns delay (tWH) */ -+ } -+ -+#if 0 -+ /* Dummy clock */ -+ ctrl_outb(0x88, SCSPTR1); /* CLK=0 */ -+ ndelay(250); /* 250ns delay (tWL) */ -+ ctrl_inb(SCSPTR1); /* Dummy read */ -+ ctrl_outb(0x8c, SCSPTR1); /* CLK=1 */ -+ ndelay(250); /* 250ns delay (tWH) */ -+#endif -+ -+ retval = 0; -+ for (i=0 ; i<8 ; i++) { /* DATA Read */ -+ ctrl_outb(0x88, SCSPTR1); /* CLK=0 */ -+#if 0 -+ if (i == 0) -+ ndelay(200); /* 200ns delay (tZR) */ -+#endif -+ ndelay(250); /* 250ns delay (tWL) */ -+ retval <<= 1; -+ retval &= 0xfe; -+ if (ctrl_inb(SCSPTR1) & 0x01) -+ retval |= 0x01; -+ ctrl_outb(0x8c, SCSPTR1); /* CLK=1 */ -+ ndelay(250); /* 250ns delay (tWH) */ -+ } -+ -+ ctrl_outw(0x0000, PA_RTCCE); /* CE=0 */ -+#if 0 -+ mdelay(1); /* 1ms delay (tCR) */ -+#endif -+ -+#ifdef RTC9701_DEBUG_IO -+ printk("rtc9701_inb addr=%x value=%x\n", (unsigned int)addr, retval); -+#endif -+ return retval; -+} -+ -+static __inline__ void rtc9701_outb(unsigned char b, unsigned long addr) -+{ -+ int i; -+ unsigned char data; -+ -+#ifdef RTC9701_DEBUG_IO -+ printk("rtc9701_outb addr=%x value=%x\n", (unsigned int)addr, b); -+#endif -+ ctrl_outw(0x0001, PA_RTCCE); /* CE=1 */ -+ ndelay(170); /* 170ns delay (tZR) */ -+ ctrl_outb(0x8c, SCSPTR1); -+ for (i=0 ; i<18 ; i++) -+ if (ctrl_inb(SCSPTR1) & 0x01) /* Check ready */ -+ break; -+ else -+ mdelay(1); /* 1ms delay */ -+//#ifdef RTC9701_DEBUG_IO -+ if (i >= 18) -+ printk("RTC-9701JE Write Time out ready wait\n"); -+//#endif -+ ndelay(65); /* 65ns delay (tRDY) */ -+ -+ for (i=0 ; i<4 ; i++) { /* Command Set */ -+ if ((WRITE_CMD << i) & 0x08) -+ data = 0x8b; /* DATA=1 */ -+ else -+ data = 0x8a; /* DATA=0 */ -+ ctrl_outb(data, SCSPTR1); /* CLK=0, DATA */ -+ ndelay(250); /* 250ns delay (tWL) */ -+ data |= 0x04; -+ ctrl_outb(data, SCSPTR1); /* CLK=1 */ -+ ndelay(250); /* 250ns delay (tWH) */ -+ } -+ -+ for (i=0 ; i<4 ; i++) { /* Address Set */ -+ if ((addr << i) & 0x08) -+ data = 0x8b; /* DATA=1 */ -+ else -+ data = 0x8a; /* DATA=0 */ -+ ctrl_outb(data, SCSPTR1); /* CLK=0, DATA */ -+ ndelay(250); /* 250ns delay (tWL) */ -+ data |= 0x04; -+ ctrl_outb(data, SCSPTR1); /* CLK=1 */ -+ ndelay(250); /* 250ns delay (tWH) */ -+ } -+ -+ for (i=0 ; i<8 ; i++) { /* DATA Write */ -+ if ((b << i ) & 0x80) -+ data = 0x8b; /* DATA=1 */ -+ else -+ data = 0x8a; /* DATA=0 */ -+ ctrl_outb(data, SCSPTR1); /* CLK=0, DATA */ -+ ndelay(250); /* 250ns delay (tWL) */ -+ data |= 0x04; -+ ctrl_outb(data, SCSPTR1); /* CLK=1 */ -+ ndelay(250); /* 250ns delay (tWH) */ -+ } -+ -+ ctrl_outw(0x0000, PA_RTCCE); /* CE=0 */ -+#if 0 -+ mdelay(1); /* 1ms delay (tCR) */ -+#endif -+} -+ -+static irqreturn_t rtc9701_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs) -+{ -+ unsigned char wk; -+ -+#ifdef RTC9701_DEBUG -+ printk("RTC-9701JE Interrupt irq=%d\n", irq); -+#endif -+ spin_lock(&rtc_lock); -+ -+ if (irq == IRQ_RTCALM) { -+ wk = rtc9701_inb(RFLAG); -+#ifdef RTC9701_DEBUG_INTR -+ printk("RTC-9701JE Interrupt alarm flag=%02x\n", wk); -+#endif -+ if (wk & 0x08) { -+ wk &= 0xb6; -+ rtc9701_outb(wk, RFLAG); -+ rtc_irq_data = 1; -+ } -+ } else if (irq == IRQ_RTCTIME) { -+ wk = rtc9701_inb(RFLAG); -+#ifdef RTC9701_DEBUG_INTR -+ printk("RTC-9701JE Interrupt timer flag=%02x\n", wk); -+#endif -+ if (wk & 0x10) { /* Interval timer */ -+ wk &= 0xae; -+ rtc9701_outb(wk, RFLAG); -+ rtc_irq_data = 2; -+ } -+ if (wk & 0x20) { /* Update time */ -+ wk &= 0x9e; -+ rtc9701_outb(wk, RFLAG); -+ rtc_irq_data = 2; -+ } -+ } -+ -+ spin_unlock(&rtc_lock); -+#if 0 -+ mdelay(20); -+#endif -+ wake_up_interruptible(&rtc_wait); -+ -+ kill_fasync(&rtc_async_queue, SIGIO, POLL_IN); -+ -+ return IRQ_HANDLED; -+} -+ -+static int rtc9701_rtc_open(struct inode *minode, struct file *mfile) -+{ -+ if (rtc_usage != 0) -+ return -EBUSY; -+ -+ rtc_usage = 1; -+ -+ return 0; -+} -+ -+static int rtc9701_rtc_release(struct inode *minode, struct file *mfile) -+{ -+ rtc_usage = 0; -+ -+ return 0; -+} -+ -+static int rtc9701_rtc_fasync(int fd, struct file *filp, int on) -+{ -+ return fasync_helper(fd, filp, on, &rtc_async_queue); -+} -+ -+static loff_t rtc9701_rtc_llseek(struct file *file, loff_t offset, int origin) -+{ -+ return -ESPIPE; -+} -+ -+static ssize_t rtc9701_rtc_read(struct file* file, -+ char* buf, -+ size_t count, -+ loff_t* ppos) -+{ -+ DECLARE_WAITQUEUE(wait, current); -+ unsigned long data = 1; -+ ssize_t retval; -+ -+ if (count < sizeof(unsigned long)) -+ return -EINVAL; -+ -+ add_wait_queue(&rtc_wait, &wait); -+ -+ current->state = TASK_INTERRUPTIBLE; -+ -+ do { -+ spin_lock_irq (&rtc_lock); -+ data = rtc_irq_data; -+ spin_unlock_irq (&rtc_lock); -+ -+ if (data != 0) { -+ rtc_irq_data = 0; -+ break; -+ } -+ -+ if (file->f_flags & O_NONBLOCK) { -+ retval = -EAGAIN; -+ goto out; -+ } -+ if (signal_pending(current)) { -+ retval = -ERESTARTSYS; -+ goto out; -+ } -+ schedule(); -+ } while (1); -+ -+ retval = put_user(data, (unsigned long *)buf); -+ if (!retval) -+ retval = sizeof(unsigned long); -+out: -+ current->state = TASK_RUNNING; -+ remove_wait_queue(&rtc_wait, &wait); -+ -+ return retval; -+} -+ -+static void rtc_set_timer(unsigned long value) -+{ -+ unsigned char time; -+ -+ time = (unsigned char)value | 0x80; -+ rtc9701_outb(time, RTIMCNT); -+#ifdef RTC9701_DEBUG -+ time = rtc9701_inb(RTIMCNT); -+ printk("RTC-9701JE Set timer value=%x\n", time); -+#endif -+} -+ -+static unsigned long rtc_read_timer(void) -+{ -+ unsigned char time; -+ -+ time = rtc9701_inb(RTIMCNT); -+#ifdef RTC9701_DEBUG -+ printk("RTC-9701JE Read timer value=%x\n", time); -+#endif -+ return (unsigned long)time; -+} -+ -+static void control_periodic_irq(int mode) -+{ -+ unsigned char wk; -+ unsigned char rcr; -+ -+ if (mode == 0) { /* OFF */ -+ rcr = rtc9701_inb(RCR); -+ wk = rcr & 0x2e; -+ rtc9701_outb(wk, RCR); -+ } else { /* ON */ -+ rcr = rtc9701_inb(RCR); -+ wk = rcr | 0x10; -+ rtc9701_outb(wk, RCR); -+ } -+ -+ rtc_irq_data = 0; -+} -+ -+static void control_alarm_irq(int mode) -+{ -+ unsigned char rcr; -+ -+ if (mode == 0) { /* AIE = OFF */ -+ rcr = rtc9701_inb(RCR); -+ rcr &= 0x36; -+ rtc9701_outb(rcr, RCR); -+ } else { /* AIE = ON */ -+ rcr = rtc9701_inb(RCR); -+ rcr |= 0x08; -+ rtc9701_outb(rcr, RCR); -+ } -+ -+ rtc_irq_data = 0; -+} -+ -+static void get_rtc_data(struct rtc_time *tm) -+{ -+ unsigned char wk; -+ -+ tm->tm_sec = 0; -+ tm->tm_min = 0; -+ tm->tm_hour = 0; -+ tm->tm_mday = 0; -+ tm->tm_mon = 0; -+ tm->tm_year = 0; -+ tm->tm_wday = 0; -+ tm->tm_yday = 0; -+ tm->tm_isdst = 0; -+ -+ wk = rtc9701_inb(RSECCNT); -+ wk &= 0x7f; -+ BCD_TO_BIN(wk); -+ tm->tm_sec = wk; -+ -+ wk = rtc9701_inb(RMINCNT); -+ wk &= 0x7f; -+ BCD_TO_BIN(wk); -+ tm->tm_min = wk; -+ -+ wk = rtc9701_inb(RHRCNT); -+ wk &= 0x7f; -+ BCD_TO_BIN(wk); -+ tm->tm_hour = wk; -+ -+ wk = rtc9701_inb(RWKCNT); -+ wk &= 0x7f; -+ tm->tm_wday = wk - 1; -+ -+ wk = rtc9701_inb(RDAYCNT); -+ wk &= 0x7f; -+ BCD_TO_BIN(wk); -+ tm->tm_mday = wk; -+ -+ wk = rtc9701_inb(RMONCNT); -+ wk &= 0x7f; -+ BCD_TO_BIN(wk); -+ tm->tm_mon = wk - 1; -+ -+ wk = rtc9701_inb(RYRCNT); -+ BCD_TO_BIN(wk); -+ tm->tm_year = wk + 100; -+} -+ -+static void get_rtc_alarm_data(struct rtc_time *tm) -+{ -+ unsigned char wk; -+ unsigned char rflag, rcr; -+ -+ tm->tm_sec = 0; -+ tm->tm_min = 0; -+ tm->tm_hour = 0; -+ tm->tm_mday = 0; -+ tm->tm_mon = 0; -+ tm->tm_year = 0; -+ tm->tm_wday = 0; -+ tm->tm_yday = 0; -+ tm->tm_isdst = 0; -+ -+ rflag = rtc9701_inb(RFLAG); -+ wk = rflag & 0xf7; -+ rtc9701_outb(wk, RFLAG); /* AF=0 */ -+ rcr = rtc9701_inb(RCR); -+ wk = rcr & 0xf7; -+ rtc9701_outb(wk, RCR); /* AIE=0 */ -+ -+ wk = rtc9701_inb(RMINAR); -+ wk &= 0x7f; -+ BCD_TO_BIN(wk); -+ tm->tm_min = wk; -+ -+ wk = rtc9701_inb(RHRAR); -+ wk &= 0x7f; -+ BCD_TO_BIN(wk); -+ tm->tm_hour = wk; -+ -+ rtc9701_outb(rflag, RFLAG); -+ rtc9701_outb(rcr, RCR); -+#ifdef RTC9701_DEBUG -+ printk("get_rtc_alarm_data: hour:%x min:%x\n", tm->tm_hour, tm->tm_min); -+#endif -+} -+ -+static void set_rtc_data(struct rtc_time *tm) -+{ -+ unsigned char sec, min, hour, mday, wday, mon, year; -+ -+#ifdef RTC9701_DEBUG -+ printk("set_rtc_data:%d/%d/%d %d:%d:%d\n", tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); -+#endif -+ sec = tm->tm_sec; -+ min = tm->tm_min; -+ hour = tm->tm_hour; -+ mday = tm->tm_mday; -+ wday = tm->tm_wday; -+ mon = tm->tm_mon; -+ -+ BIN_TO_BCD(sec); -+ rtc9701_outb(sec, RSECCNT); -+ -+ BIN_TO_BCD(min); -+ rtc9701_outb(min, RMINCNT); -+ -+ BIN_TO_BCD(hour); -+ rtc9701_outb(hour, RHRCNT); -+ -+ rtc9701_outb(wday, RWKCNT); -+ -+ BIN_TO_BCD(mday); -+ rtc9701_outb(mday, RDAYCNT); -+ -+ BIN_TO_BCD(mon); -+ rtc9701_outb(mon, RMONCNT); -+ -+ if (tm->tm_year > 100) -+ tm->tm_year -= 100; -+ year = tm->tm_year; -+ BIN_TO_BCD(year); -+ rtc9701_outb(year, RYRCNT); -+} -+ -+static void set_rtc_alarm_data(struct rtc_time *tm) -+{ -+ unsigned char wk; -+ unsigned char min, hour; -+ -+#ifdef RTC9701_DEBUG -+ printk("set_rtc_alarm_data: hour:%x min:%x\n", tm->tm_hour, tm->tm_min); -+#endif -+ wk = rtc9701_inb(RFLAG); -+ wk &= 0xf7; -+ rtc9701_outb(wk, RFLAG); /* AF=0 */ -+ wk = rtc9701_inb(RCR); -+ wk &= 0xf7; -+ rtc9701_outb(wk, RCR); /* AIE=0 */ -+ -+ min = tm->tm_min; -+ BIN_TO_BCD(min); -+ rtc9701_outb(min, RMINAR); -+ -+ hour = tm->tm_hour; -+ BIN_TO_BCD(hour); -+ rtc9701_outb(hour, RHRAR); -+ -+ wk = rtc9701_inb(RFLAG); -+ wk &= 0xf7; -+ rtc9701_outb(wk, RFLAG); /* AF=0 */ -+} -+ -+static int rtc9701_rtc_ioctl(struct inode* inode, -+ struct file* file, -+ unsigned int cmd, -+ unsigned long arg) -+{ -+ struct rtc_time wtime, rtc_tm; -+ unsigned char mon, day, hrs, min, sec, week, leap_yr; -+ unsigned int yrs; -+ unsigned long value; -+ -+ wtime.tm_sec = 0; -+ wtime.tm_min = 0; -+ wtime.tm_hour = 0; -+ wtime.tm_mday = 0; -+ wtime.tm_mon = 0; -+ wtime.tm_year = 0; -+ wtime.tm_wday = 0; -+ wtime.tm_yday = 0; -+ wtime.tm_isdst = 0; -+ -+ switch (cmd) { -+ case RTC_AIE_OFF: /* =2:Alarm int. disable */ -+ spin_lock_irq(&rtc_lock); -+ control_alarm_irq(0); -+ spin_unlock_irq(&rtc_lock); -+ mdelay(20); -+ return 0; -+ -+ case RTC_AIE_ON: /* =1:Alarm int. enable */ -+ spin_lock_irq(&rtc_lock); -+ control_alarm_irq(1); -+ spin_unlock_irq(&rtc_lock); -+ mdelay(20); -+ return 0; -+ -+ case RTC_PIE_OFF: /* =6:Periodic int. disable */ -+ spin_lock_irq(&rtc_lock); -+ control_periodic_irq(0); -+ spin_unlock_irq(&rtc_lock); -+ mdelay(20); -+ return 0; -+ -+ case RTC_PIE_ON: /* =5:Periodic int. enable */ -+ spin_lock_irq(&rtc_lock); -+ control_periodic_irq(1); -+ spin_unlock_irq(&rtc_lock); -+ mdelay(20); -+ return 0; -+ -+ case RTC_IRQP_SET: -+ if (copy_from_user(&value, (unsigned long *)arg, sizeof(value))) -+ return -EFAULT; -+ rtc_set_timer(value); -+ mdelay(20); -+ return 0; -+ -+ case RTC_IRQP_READ: -+ value = rtc_read_timer(); -+ mdelay(20); -+ return put_user(value, (unsigned long *)arg); -+ -+ case RTC_ALM_READ: /* =8:Read alarm time */ -+ get_rtc_alarm_data(&wtime); -+ mdelay(20); -+ break; -+ -+ case RTC_ALM_SET: /* =7:Set alarm time */ -+ if (copy_from_user(&rtc_tm, (struct rtc_time*)arg, -+ sizeof(struct rtc_time))) -+ return -EFAULT; -+ -+ hrs = rtc_tm.tm_hour; -+ min = rtc_tm.tm_min; -+ -+ if ((hrs >= 24) || (min >= 60)) { -+ return -EINVAL; -+ } -+ -+ /* update the alarm register */ -+ spin_lock_irq(&rtc_lock); -+ wtime.tm_min = min; -+ wtime.tm_hour = hrs; -+ set_rtc_alarm_data(&wtime); -+ spin_unlock_irq(&rtc_lock); -+ mdelay(20); -+ return 0; -+ -+ case RTC_RD_TIME: /* =9:Read RTC time */ -+ spin_lock_irq(&rtc_lock); -+ get_rtc_data(&wtime); -+ spin_unlock_irq(&rtc_lock); -+ mdelay(20); -+ break; -+ -+ case RTC_SET_TIME: /* =10:Set RTC time */ -+ if (copy_from_user(&rtc_tm, (struct rtc_time*)arg, -+ sizeof(struct rtc_time))) -+ return -EFAULT; -+ -+ yrs = rtc_tm.tm_year + epoch; -+ mon = rtc_tm.tm_mon+1; -+ day = rtc_tm.tm_mday; -+ hrs = rtc_tm.tm_hour; -+ min = rtc_tm.tm_min; -+ sec = rtc_tm.tm_sec; -+ week = rtc_tm.tm_wday+1; -+ -+ if (yrs < epoch){ -+ return -EINVAL; -+ } -+ leap_yr = ((!(yrs % 4) && (yrs % 100)) || !(yrs % 400)); -+ if ((mon > 12) || (day == 0)){ -+ return -EINVAL; -+ } -+ if (day > (days_in_mo[mon] + ((mon == 2) && leap_yr))){ -+ return -EINVAL; -+ } -+ if ((hrs >= 24) || (min >= 60) || (sec >= 60) || (week > 64)){ -+ return -EINVAL; -+ } -+ if ((yrs - epoch) > 255){ -+ return -EINVAL; -+ } -+ -+ spin_lock_irq(&rtc_lock); -+ wtime.tm_sec = sec; -+ wtime.tm_min = min; -+ wtime.tm_hour = hrs; -+ wtime.tm_mday = day; -+ wtime.tm_mon = mon; -+ wtime.tm_wday = week; -+ wtime.tm_year = yrs - epoch; -+ set_rtc_data(&wtime); -+ spin_unlock_irq(&rtc_lock); -+ mdelay(20); -+ return 0; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ return copy_to_user((void*)arg, &wtime, sizeof(wtime)) ? -EFAULT : 0; -+} -+ -+static unsigned int rtc9701_rtc_poll(struct file* file, poll_table* wait) -+{ -+ unsigned long l; -+ -+ poll_wait(file, &rtc_wait, wait); -+ -+ spin_lock_irq(&rtc_lock); -+ l = rtc_irq_data; -+ spin_unlock_irq(&rtc_lock); -+ -+ if (l != 0) -+ return POLLIN | POLLRDNORM; -+ else -+ return 0; -+} -+ -+#ifdef CONFIG_PROC_FS -+ -+static int rtc9701_rtc_proc_output(char *buf) -+{ -+ char *p; -+ struct rtc_time tm; -+ -+ get_rtc_data(&tm); -+ mdelay(20); -+ -+ p = buf; -+ p += sprintf(p, -+ "rtc_time\t: %02d:%02d:%02d\n" -+ "rtc_date\t: %04d-%02d-%02d\n" -+ "rtc_epoch\t: %04lu\n", -+ tm.tm_hour, tm.tm_min, tm.tm_sec, -+ tm.tm_year + epoch, tm.tm_mon+1, tm.tm_mday, -+ (unsigned long)epoch); -+ -+ get_rtc_alarm_data(&tm); -+ mdelay(20); -+ -+ p += sprintf(p, -+ "alrm_time\t: %02d:%02d\n", -+ tm.tm_hour, tm.tm_min); -+ -+ p += sprintf(p,"alarm_IRQ\t: %s\n", -+ (rtc9701_inb(RCR) & 0x08) ? "yes" : "no" ); -+ mdelay(20); -+ p += sprintf(p,"periodic_IRQ\t: %s\n", -+ (rtc9701_inb(RCR) & 0x10) ? "yes" : "no" ); -+ mdelay(20); -+ -+ p += sprintf(p,"periodic_freq\t: 1\n"); -+ p += sprintf(p,"batt_status\t: unsupported\n"); -+ -+ return (p - buf); -+} -+ -+static int rtc9701_rtc_read_proc(char* page, -+ char** start, -+ off_t off, -+ int count, -+ int* eof, -+ void* data) -+{ -+ int len = rtc9701_rtc_proc_output(page); -+ -+ if (len <= off + count) { *eof = 1; } -+ *start = page + off; -+ len -= off; -+ if (len > count) { len = count; } -+ if (len < 0) { len = 0; } -+ -+ return len; -+} -+ -+#endif -+ -+static void rtc9701_initial_check(void) -+{ -+ unsigned int sec, min, hr, day, mon, yr; -+ -+ sec = rtc9701_inb(RSECCNT) & 0x7f; -+ min = rtc9701_inb(RMINCNT) & 0x7f; -+ hr = rtc9701_inb(RHRCNT) & 0x7f; -+ day = rtc9701_inb(RDAYCNT) & 0x7f; -+ mon = rtc9701_inb(RMONCNT) & 0x7f; -+ yr = rtc9701_inb(RYRCNT) & 0x7f; -+ -+ BCD_TO_BIN(sec); -+ BCD_TO_BIN(min); -+ BCD_TO_BIN(hr); -+ BCD_TO_BIN(day); -+ BCD_TO_BIN(mon); -+ BCD_TO_BIN(yr); -+ -+ if (yr > 99 || mon < 1 || mon > 12 || day > 31 || day < 1 || -+ hr > 23 || min > 59 || sec > 59) { -+ printk("Current RTC Time:%d-%d-%d %d:%d:%d\n", yr, mon, day, hr, min, sec); -+ printk(KERN_ERR "RTC-9701: invalid value, resetting to 1 Jan 2000\n"); -+ rtc9701_outb(0, RSECCNT); -+ rtc9701_outb(0, RMINCNT); -+ rtc9701_outb(0, RHRCNT); -+ rtc9701_outb(0x40, RWKCNT); -+ rtc9701_outb(1, RDAYCNT); -+ rtc9701_outb(1, RMONCNT); -+ rtc9701_outb(0, RYRCNT); -+ } -+} -+ -+static struct file_operations rtc_fops = { -+ .owner = THIS_MODULE, -+ .llseek = rtc9701_rtc_llseek, -+ .read = rtc9701_rtc_read, -+ .poll = rtc9701_rtc_poll, -+ .ioctl = rtc9701_rtc_ioctl, -+ .open = rtc9701_rtc_open, -+ .release = rtc9701_rtc_release, -+ .fasync = rtc9701_rtc_fasync, -+}; -+ -+ -+static struct miscdevice rts7751r2drtc_miscdev = { -+ RTC_MINOR, -+ "rtc", -+ &rtc_fops -+}; -+ -+static void rtc9701_rtc_exit(void) -+{ -+ spin_lock_irq(&rtc_lock); -+ rtc9701_outb(0x00, RCR); -+ spin_unlock_irq(&rtc_lock); -+ mdelay(20); -+ -+ free_irq(IRQ_RTCALM, NULL); -+ free_irq(IRQ_RTCTIME, NULL); -+#ifdef CONFIG_PROC_FS -+ remove_proc_entry("driver/rtc", NULL); -+#endif -+ -+ misc_deregister(&rts7751r2drtc_miscdev); -+} -+ -+static int __init rtc9701_rtc_init(void) -+{ -+ unsigned char val; -+ -+ misc_register(&rts7751r2drtc_miscdev); -+ -+#ifdef CONFIG_PROC_FS -+ create_proc_read_entry("driver/rtc", 0, 0, rtc9701_rtc_read_proc, NULL); -+#endif -+ ctrl_outb((ctrl_inb(SCSMR1) & 0x7f), SCSMR1); -+ ctrl_outb((ctrl_inb(SCSCR1) & 0x9c), SCSCR1); -+ ctrl_outw(0x0000, PA_RTCCE); /* CE=0 */ -+ ctrl_outb(0x8c, SCSPTR1); /* EIO=1, SPB1IO=1, SPB1DT=1, SPB0IO=0 */ -+ -+ rtc9701_initial_check(); /* RTC Data Initial check */ -+ mdelay(20); -+ -+ rtc9701_outb(0x02, REXT); /* WADA=0, UDUTY=0, USEL=0, TSEL1=1, TSEL0=0 */ -+ mdelay(20); -+ rtc9701_outb(0x00, RCR); /* UIE=0, TIE=0, AIE=0, EXIE=0, VLIE=0 */ -+ mdelay(20); -+ rtc9701_outb(0x00, RFLAG); -+ mdelay(20); -+#if 0 -+ val = rtc9701_inb(REXT); -+ val &= 0x33; -+ rtc9701_outb(val, REXT); /* WADA=0 */ -+#endif -+ val = 0xff; -+ rtc9701_outb(val, RWKAR); -+ mdelay(20); -+ -+ rtc9701_outb(0x00, RTIMCNT); -+ mdelay(20); -+ -+ if (request_irq(IRQ_RTCALM, rtc9701_rtc_interrupt, SA_INTERRUPT, "rtc_alarm", NULL)) { -+ printk(KERN_ERR "rtc: IRQ %d already in use.\n", IRQ_RTCALM); -+ return -EIO; -+ } -+ -+ if (request_irq(IRQ_RTCTIME, rtc9701_rtc_interrupt, SA_INTERRUPT, "rtc_timer", NULL)) { -+ printk(KERN_ERR "rtc: IRQ %d already in use.\n", IRQ_RTCTIME); -+ return -EIO; -+ } -+ -+ printk(KERN_INFO "RTC-9701JE Real Time Clock Driver v" DRIVER_VERSION "\n"); -+ -+ return 0; -+} -+ -+module_init(rtc9701_rtc_init); -+module_exit(rtc9701_rtc_exit); -diff -ruN linux-2.6.17-vanilla/drivers/char/sh03rtc.c linux-2.6.17/drivers/char/sh03rtc.c ---- linux-2.6.17-vanilla/drivers/char/sh03rtc.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/char/sh03rtc.c 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,1185 @@ -+/* -+ * Real Time Clock interface for Linux -+ * -+ * Copyright (C) 2004 Interface Corporation Saito.K -+ * -+ * Based on skelrton from the drivers/char/rtc.c -+ * -+ * This driver allows use of the real time clock (built into -+ * nearly all computers) from user space. It exports the /dev/rtc -+ * interface supporting various ioctl() and also the -+ * /proc/driver/rtc pseudo-file for status information. -+ * -+ * The ioctls can be used to set the interrupt behaviour and -+ * generation rate from the RTC via IRQ 8. Then the /dev/rtc -+ * interface can be used to make use of these timer interrupts, -+ * be they interval or alarm based. -+ * -+ * The /dev/rtc interface will block on reads until an interrupt -+ * has been received. If a RTC interrupt has already happened, -+ * it will output an unsigned long and then block. The output value -+ * contains the interrupt status in the low byte and the number of -+ * interrupts since the last read in the remaining high bytes. The -+ * /dev/rtc interface can also be used with the select(2) call. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version -+ * 2 of the License, or (at your option) any later version. -+ * -+ * Based on other minimal char device drivers, like Alan's -+ * watchdog, Ted's random, etc. etc. -+ * -+ * 1.07 Paul Gortmaker. -+ * 1.08 Miquel van Smoorenburg: disallow certain things on the -+ * DEC Alpha as the CMOS clock is also used for other things. -+ * 1.09 Nikita Schmidt: epoch support and some Alpha cleanup. -+ * 1.09a Pete Zaitcev: Sun SPARC -+ * 1.09b Jeff Garzik: Modularize, init cleanup -+ * 1.09c Jeff Garzik: SMP cleanup -+ * 1.10 Paul Barton-Davis: add support for async I/O -+ * 1.10a Andrea Arcangeli: Alpha updates -+ * 1.10b Andrew Morton: SMP lock fix -+ * 1.10c Cesar Barros: SMP locking fixes and cleanup -+ * 1.10d Paul Gortmaker: delete paranoia check in rtc_exit -+ * 1.10e Maciej W. Rozycki: Handle DECstation's year weirdness. -+ * 1.11 Takashi Iwai: Kernel access functions -+ * rtc_register/rtc_unregister/rtc_control -+ * 1.11a Daniele Bellucci: Audit create_proc_read_entry in rtc_init -+ * 1.12 Venkatesh Pallipadi: Hooks for emulating rtc on HPET base-timer -+ * CONFIG_HPET_EMULATE_RTC -+ * -+ */ -+ -+#define SH03_RTC_VERSION "0.09" -+ -+#define RTC_IO_EXTENT 0x8 -+ -+/* -+ * Note that *all* calls to CMOS_READ and CMOS_WRITE are done with -+ * interrupts disabled. Due to the index-port/data-port (0x70/0x71) -+ * design of the RTC, we don't want two different things trying to -+ * get to it at once. (e.g. the periodic 11 min sync from time.c vs. -+ * this driver.) -+ */ -+ -+#include <linux/config.h> -+#include <linux/interrupt.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/types.h> -+#include <linux/miscdevice.h> -+#include <linux/ioport.h> -+#include <linux/fcntl.h> -+ -+// @@@@@ 16.09.29 #include <linux/mc146818rtc.h> -+#include <linux/rtc.h> -+ -+#include <linux/init.h> -+#include <linux/poll.h> -+#include <linux/proc_fs.h> -+#include <linux/spinlock.h> -+#include <linux/sysctl.h> -+#include <linux/wait.h> -+#include <linux/bcd.h> -+ -+#include <asm/current.h> -+#include <asm/uaccess.h> -+#include <asm/system.h> -+#include <asm/io.h> -+ -+extern spinlock_t rtc_lock; -+ -+/* -+TODO: Timer -+*/ -+#define SH03_RTC_IRQ 11 -+ -+#define RTC_BASE 0xb0000000 -+#define RTC_SEC1 (RTC_BASE + 0) -+#define RTC_SEC10 (RTC_BASE + 1) -+#define RTC_MIN1 (RTC_BASE + 2) -+#define RTC_MIN10 (RTC_BASE + 3) -+#define RTC_HOU1 (RTC_BASE + 4) -+#define RTC_HOU10 (RTC_BASE + 5) -+#define RTC_WEE1 (RTC_BASE + 6) -+#define RTC_DAY1 (RTC_BASE + 7) -+#define RTC_DAY10 (RTC_BASE + 8) -+#define RTC_MON1 (RTC_BASE + 9) -+#define RTC_MON10 (RTC_BASE + 10) -+#define RTC_YEA1 (RTC_BASE + 11) -+#define RTC_YEA10 (RTC_BASE + 12) -+#define RTC_YEA100 (RTC_BASE + 13) -+#define RTC_YEA1000 (RTC_BASE + 14) -+#define RTC_CTL (RTC_BASE + 15) -+#define RTC_BUSY 1 -+#define RTC_STOP 2 -+#define RTC_BANK0 (0 << 2) -+#define RTC_BANK1 (1 << 2) -+#define RTC_BANK2 (2 << 2) -+ -+#define RTC_ATCTL (RTC_BASE + 14) -+#define RTC_AIE 1 -+#define RTC_AF 2 -+ -+#define RTC_TE_CLOCK (RTC_BASE + 8) -+#define RTC_TMCTL (RTC_BASE + 14) -+#define RTC_TIE 1 -+#define RTC_TF 2 -+ -+#define SH03_RTC_PORT(n) ((RTC_BASE) + n) -+#define SH03_RTC_IO_EXTENT 0x10 -+ -+#ifndef BIN_TO_BCD -+#define BIN_TO_BCD(val) ((val)=(((val)/10)<<4) + (val)%10) -+#endif -+ -+#define SELECT_BANK(n) ctrl_outb((n), RTC_CTL) -+ -+#define READ_SECONDS ((ctrl_inb(RTC_SEC1) & 15) + (ctrl_inb(RTC_SEC10) & 7) * 10) -+#define READ_MINUTES ((ctrl_inb(RTC_MIN1) & 15) + (ctrl_inb(RTC_MIN10) & 7) * 10) -+#define READ_HOURS ((ctrl_inb(RTC_HOU1) & 15) + (ctrl_inb(RTC_HOU10) & 3) * 10) -+#define READ_WEEK (ctrl_inb(RTC_WEE1) & 7) -+#define READ_DAY ((ctrl_inb(RTC_DAY1) & 15) + (ctrl_inb(RTC_DAY10) & 3) * 10) -+#define READ_MONTH ((ctrl_inb(RTC_MON1) & 15) + (ctrl_inb(RTC_MON10) & 1) * 10) -+#define READ_YEAR ((ctrl_inb(RTC_YEA1) & 15) + (ctrl_inb(RTC_YEA10) & 15) * 10 \ -+ + (ctrl_inb(RTC_YEA100) & 15) * 100 + (ctrl_inb(RTC_YEA1000) & 3) * 1000) -+ -+#define WRITE_SECONDS(d) ctrl_outb((d) & 15, RTC_SEC1); ctrl_outb((d) >> 4, RTC_SEC10) -+#define WRITE_MINUTES(d) ctrl_outb((d) & 15, RTC_MIN1); ctrl_outb((d) >> 4, RTC_MIN10) -+#define WRITE_HOURS(d) ctrl_outb((d) & 15, RTC_HOU1); ctrl_outb((d) >> 4, RTC_HOU10) -+#define WRITE_WEEK(d) ctrl_outb((d) & 15, RTC_WEE1) -+#define WRITE_DAY(d) ctrl_outb((d) & 15, RTC_DAY1); ctrl_outb((d) >> 4, RTC_DAY10) -+#define WRITE_MONTH(d) ctrl_outb((d) & 15, RTC_MON1); ctrl_outb((d) >> 4, RTC_MON10) -+#define WRITE_YEAR_LOW(d) ctrl_outb((d) & 15, RTC_YEA1); ctrl_outb((d) >> 4, RTC_YEA10) -+#define WRITE_YEAR_HIGH(d) ctrl_outb((d) & 15, RTC_YEA100); ctrl_outb((d) >> 4, RTC_YEA1000) -+ -+#define READ_ATCTL (ctrl_inb(RTC_ATCTL)) -+#define WRITE_ATCTL(d) ctrl_outb((d), RTC_ATCTL) -+ -+#define READ_TMCTL (ctrl_inb(RTC_TMCTL)) -+#define WRITE_TMCTL(d) ctrl_outb((d), RTC_TMCTL) -+ -+#define READ_CLOCK (ctrl_inb(RTC_TE_CLOCK)) -+#define WRITE_CLOCK(d) ctrl_outb((d) & 15, RTC_TE_CLOCK) -+ -+ -+ -+#ifdef SH03_RTC_IRQ -+static int sh03_rtc_has_irq = SH03_RTC_IRQ; -+#endif -+ -+/* -+ * We sponge a minor off of the misc major. No need slurping -+ * up another valuable major dev number for this. If you add -+ * an ioctl, make sure you don't conflict with SPARC's RTC -+ * ioctls. -+ */ -+ -+static struct fasync_struct *sh03_rtc_async_queue; -+ -+static DECLARE_WAIT_QUEUE_HEAD(sh03_rtc_wait); -+ -+#ifdef SH03_RTC_IRQ -+static struct timer_list sh03_rtc_irq_timer; -+#endif -+ -+static ssize_t sh03_rtc_read(struct file *file, char __user *buf, -+ size_t count, loff_t *ppos); -+ -+static int sh03_rtc_ioctl(struct inode *inode, struct file *file, -+ unsigned int cmd, unsigned long arg); -+ -+#ifdef SH03_RTC_IRQ -+static unsigned int sh03_rtc_poll(struct file *file, poll_table *wait); -+#endif -+ -+void sh03_rtc_get_rtc_time(struct rtc_time *rtc_tm); -+static void sh03_get_rtc_alm_time (struct rtc_time *alm_tm); -+#ifdef SH03_RTC_IRQ -+static void sh03_rtc_dropped_irq(unsigned long data); -+ -+static void sh03_set_rtc_irq_bit(unsigned int bit); -+static void sh03_mask_rtc_irq_bit(unsigned int bit); -+#endif -+ -+static int sh03_rtc_read_proc(char *page, char **start, off_t off, -+ int count, int *eof, void *data); -+ -+/* -+ * Bits in rtc_status. (6 bits of room for future expansion) -+ */ -+ -+#define RTC_IS_OPEN 0x01 /* means /dev/rtc is in use */ -+#define RTC_TIMER_ON 0x02 /* missed irq timer active */ -+ -+/* -+ * rtc_status is never changed by rtc_interrupt, and ioctl/open/close is -+ * protected by the big kernel lock. However, ioctl can still disable the timer -+ * in rtc_status and then with del_timer after the interrupt has read -+ * rtc_status but before mod_timer is called, which would then reenable the -+ * timer (but you would need to have an awful timing before you'd trip on it) -+ */ -+static unsigned long rtc_status = 0; /* bitmapped status byte. */ -+static unsigned long rtc_freq = 0; /* Current periodic IRQ rate */ -+static unsigned long rtc_irq_data = 0; /* our output to the world */ -+static unsigned long rtc_max_user_freq = 64; /* > this, need CAP_SYS_RESOURCE */ -+ -+#ifdef SH03_RTC_IRQ -+/* -+ * rtc_task_lock nests inside rtc_lock. -+ */ -+static spinlock_t rtc_task_lock = SPIN_LOCK_UNLOCKED; -+static rtc_task_t *rtc_callback = NULL; -+#endif -+ -+/* -+ * If this driver ever becomes modularised, it will be really nice -+ * to make the epoch retain its value across module reload... -+ */ -+ -+static unsigned long epoch = 1900; /* year corresponding to 0x00 */ -+ -+static const unsigned char days_in_mo[] = -+{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; -+ -+#if 0 /* @@@@@ 16.09.29 TODO */ -+/* -+ * Returns true if a clock update is in progress -+ */ -+static inline unsigned char rtc_is_updating(void) -+{ -+ unsigned char uip; -+ -+ spin_lock_irq(&rtc_lock); -+ uip = (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP); -+ spin_unlock_irq(&rtc_lock); -+ return uip; -+} -+#endif -+ -+#ifdef SH03_RTC_IRQ -+/* -+ * A very tiny interrupt handler. It runs with SA_INTERRUPT set, -+ * but there is possibility of conflicting with the set_rtc_mmss() -+ * call (the rtc irq and the timer irq can easily run at the same -+ * time in two different CPUs). So we need to serialize -+ * accesses to the chip with the rtc_lock spinlock that each -+ * architecture should implement in the timer code. -+ * (See ./arch/XXXX/kernel/time.c for the set_rtc_mmss() function.) -+ */ -+ -+irqreturn_t sh03_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs) -+{ -+ /* -+ * Can be an alarm interrupt, update complete interrupt, -+ * or a periodic interrupt. We store the status in the -+ * low byte and the number of interrupts received since -+ * the last read in the remainder of rtc_irq_data. -+ */ -+ -+ spin_lock (&rtc_lock); -+ rtc_irq_data += 0x100; -+ rtc_irq_data &= ~0xff; -+ SELECT_BANK(RTC_BANK1); -+ rtc_irq_data |= (READ_ATCTL & RTC_AF) >> 1; -+ WRITE_ATCTL(READ_ATCTL & ~ RTC_AF); -+ SELECT_BANK(RTC_BANK2); -+ rtc_irq_data |= (READ_TMCTL & RTC_TF); -+ WRITE_TMCTL(READ_TMCTL & ~ RTC_TF); -+ SELECT_BANK(RTC_BANK0); -+ -+ if (rtc_status & RTC_TIMER_ON) -+ mod_timer(&sh03_rtc_irq_timer, jiffies + HZ/rtc_freq + 2*HZ/100); -+ -+ spin_unlock (&rtc_lock); -+ -+ /* Now do the rest of the actions */ -+ spin_lock(&rtc_task_lock); -+ if (rtc_callback) -+ rtc_callback->func(rtc_callback->private_data); -+ spin_unlock(&rtc_task_lock); -+ wake_up_interruptible(&sh03_rtc_wait); -+ -+ kill_fasync (&sh03_rtc_async_queue, SIGIO, POLL_IN); -+ -+ return IRQ_HANDLED; -+} -+#endif -+ -+/* -+ * sysctl-tuning infrastructure. -+ */ -+static ctl_table rtc_table[] = { -+ { -+ .ctl_name = 1, -+ .procname = "max-user-freq", -+ .data = &rtc_max_user_freq, -+ .maxlen = sizeof(int), -+ .mode = 0644, -+ .proc_handler = &proc_dointvec, -+ }, -+ { .ctl_name = 0 } -+}; -+ -+static ctl_table rtc_root[] = { -+ { -+ .ctl_name = 1, -+ .procname = "rtc", -+ .maxlen = 0, -+ .mode = 0555, -+ .child = rtc_table, -+ }, -+ { .ctl_name = 0 } -+}; -+ -+static ctl_table dev_root[] = { -+ { -+ .ctl_name = CTL_DEV, -+ .procname = "dev", -+ .maxlen = 0, -+ .mode = 0555, -+ .child = rtc_root, -+ }, -+ { .ctl_name = 0 } -+}; -+ -+static struct ctl_table_header *sysctl_header; -+ -+static int __init init_sysctl(void) -+{ -+ sysctl_header = register_sysctl_table(dev_root, 0); -+ return 0; -+} -+ -+static void __exit cleanup_sysctl(void) -+{ -+ unregister_sysctl_table(sysctl_header); -+} -+ -+/* -+ * Now all the various file operations that we export. -+ */ -+ -+static ssize_t sh03_rtc_read(struct file *file, char __user *buf, -+ size_t count, loff_t *ppos) -+{ -+#ifndef SH03_RTC_IRQ -+ return -EIO; -+#else -+ DECLARE_WAITQUEUE(wait, current); -+ unsigned long data; -+ ssize_t retval; -+ -+ if (sh03_rtc_has_irq == 0) -+ return -EIO; -+ -+ if (count < sizeof(unsigned)) -+ return -EINVAL; -+ -+ add_wait_queue(&sh03_rtc_wait, &wait); -+ -+ do { -+ /* First make it right. Then make it fast. Putting this whole -+ * block within the parentheses of a while would be too -+ * confusing. And no, xchg() is not the answer. */ -+ -+ __set_current_state(TASK_INTERRUPTIBLE); -+ -+ spin_lock_irq (&rtc_lock); -+ data = rtc_irq_data; -+ rtc_irq_data = 0; -+ spin_unlock_irq (&rtc_lock); -+ -+ if (data != 0) -+ break; -+ -+ if (file->f_flags & O_NONBLOCK) { -+ retval = -EAGAIN; -+ goto out; -+ } -+ if (signal_pending(current)) { -+ retval = -ERESTARTSYS; -+ goto out; -+ } -+ schedule(); -+ } while (1); -+ -+ if (count < sizeof(unsigned long)) -+ retval = put_user(data, (unsigned int __user *)buf) ?: sizeof(int); -+ else -+ retval = put_user(data, (unsigned long __user *)buf) ?: sizeof(long); -+ out: -+ current->state = TASK_RUNNING; -+ remove_wait_queue(&sh03_rtc_wait, &wait); -+ -+ return retval; -+#endif -+} -+ -+static int sh03_rtc_do_ioctl(unsigned int cmd, unsigned long arg, int kernel) -+{ -+ struct rtc_time wtime; -+ -+#ifdef SH03_RTC_IRQ -+ if (sh03_rtc_has_irq == 0) { -+ switch (cmd) { -+ case RTC_AIE_OFF: -+ case RTC_AIE_ON: -+ case RTC_PIE_OFF: -+ case RTC_PIE_ON: -+ case RTC_UIE_OFF: -+ case RTC_UIE_ON: -+ case RTC_IRQP_READ: -+ case RTC_IRQP_SET: -+ return -EINVAL; -+ }; -+ } -+#endif -+ -+ switch (cmd) { -+#ifdef SH03_RTC_IRQ -+ case RTC_AIE_OFF: /* Mask alarm int. enab. bit */ -+ { -+ sh03_mask_rtc_irq_bit(RTC_AIE); -+ return 0; -+ } -+ case RTC_AIE_ON: /* Allow alarm interrupts. */ -+ { -+ sh03_set_rtc_irq_bit(RTC_AIE); -+ return 0; -+ } -+ case RTC_PIE_OFF: /* Mask periodic int. enab. bit */ -+ { -+ sh03_mask_rtc_irq_bit(RTC_PIE_OFF); -+ if (rtc_status & RTC_TIMER_ON) { -+ spin_lock_irq (&rtc_lock); -+ rtc_status &= ~RTC_TIMER_ON; -+ del_timer(&sh03_rtc_irq_timer); -+ spin_unlock_irq (&rtc_lock); -+ } -+ return 0; -+ } -+ case RTC_PIE_ON: /* Allow periodic ints */ -+ { -+ -+ /* -+ * We don't really want Joe User enabling more -+ * than 64Hz of interrupts on a multi-user machine. -+ */ -+ if (!kernel && (rtc_freq > rtc_max_user_freq) && -+ (!capable(CAP_SYS_RESOURCE))) -+ return -EACCES; -+ -+ if (!(rtc_status & RTC_TIMER_ON)) { -+ spin_lock_irq (&rtc_lock); -+ sh03_rtc_irq_timer.expires = jiffies + HZ/rtc_freq + 2*HZ/100; -+ add_timer(&sh03_rtc_irq_timer); -+ rtc_status |= RTC_TIMER_ON; -+ spin_unlock_irq (&rtc_lock); -+ } -+ sh03_set_rtc_irq_bit(RTC_PIE_ON); -+ return 0; -+ } -+#if 1 /* @@@@@ 16.09.29 TODO */ -+ case RTC_UIE_OFF: /* Mask ints from RTC updates. */ -+ case RTC_UIE_ON: /* Allow ints for RTC updates. */ -+ return -EINVAL; -+#else -+ case RTC_UIE_OFF: /* Mask ints from RTC updates. */ -+ { -+ sh03_mask_rtc_irq_bit(RTC_UIE); -+ return 0; -+ } -+ case RTC_UIE_ON: /* Allow ints for RTC updates. */ -+ { -+ sh03_set_rtc_irq_bit(RTC_UIE); -+ return 0; -+ } -+#endif -+#endif -+ case RTC_ALM_READ: /* Read the present alarm time */ -+ { -+ /* -+ * This returns a struct rtc_time. Reading >= 0xc0 -+ * means "don't care" or "match all". Only the tm_hour, -+ * tm_min, and tm_sec values are filled in. -+ */ -+ memset(&wtime, 0, sizeof(struct rtc_time)); -+ sh03_get_rtc_alm_time(&wtime); -+ break; -+ } -+ case RTC_ALM_SET: /* Store a time into the alarm */ -+ { -+ /* -+ * This expects a struct rtc_time. Writing 0xff means -+ * "don't care" or "match all". Only the tm_hour, -+ * tm_min and tm_sec are used. -+ */ -+ unsigned char day, week, hrs, min, sec; -+ struct rtc_time alm_tm; -+ -+ if (copy_from_user(&alm_tm, (struct rtc_time __user *)arg, -+ sizeof(struct rtc_time))) -+ return -EFAULT; -+ -+ day = alm_tm.tm_mday; -+ week = alm_tm.tm_wday; -+ hrs = alm_tm.tm_hour; -+ min = alm_tm.tm_min; -+ sec = alm_tm.tm_sec; -+ if (day >= 31) -+ day = 99; -+ -+ if (week >= 7) -+ week = 9; -+ -+ if (hrs >= 24) -+ hrs = 99; -+ -+ if (min >= 60) -+ min = 99; -+ -+ if (sec >= 60) -+ sec = 99; -+ -+ spin_lock_irq(&rtc_lock); -+ BIN_TO_BCD(sec); -+ BIN_TO_BCD(min); -+ BIN_TO_BCD(hrs); -+ BIN_TO_BCD(day); -+ SELECT_BANK(RTC_BANK1); -+ WRITE_DAY(day); -+ WRITE_WEEK(week); -+ WRITE_HOURS(hrs); -+ WRITE_MINUTES(min); -+ WRITE_SECONDS(sec); -+ SELECT_BANK(RTC_BANK0); -+ spin_unlock_irq(&rtc_lock); -+ -+ return 0; -+ } -+ case RTC_RD_TIME: /* Read the time/date from RTC */ -+ { -+ memset(&wtime, 0, sizeof(struct rtc_time)); -+ sh03_rtc_get_rtc_time(&wtime); -+ break; -+ } -+ case RTC_SET_TIME: /* Set the RTC */ -+ { -+ struct rtc_time rtc_tm; -+ unsigned char mon, day, hrs, min, sec, leap_yr; -+ unsigned int yrs, yrs_low, yrs_high; -+ -+ if (!capable(CAP_SYS_TIME)) -+ return -EACCES; -+ -+ if (copy_from_user(&rtc_tm, (struct rtc_time __user *)arg, -+ sizeof(struct rtc_time))) -+ return -EFAULT; -+ -+ yrs = rtc_tm.tm_year + 1900; -+ mon = rtc_tm.tm_mon + 1; /* tm_mon starts at zero */ -+ day = rtc_tm.tm_mday; -+ hrs = rtc_tm.tm_hour; -+ min = rtc_tm.tm_min; -+ sec = rtc_tm.tm_sec; -+ -+ if (yrs < 1970) -+ return -EINVAL; -+ -+ leap_yr = ((!(yrs % 4) && (yrs % 100)) || !(yrs % 400)); -+ -+ if ((mon > 12) || (day == 0)) -+ return -EINVAL; -+ -+ if (day > (days_in_mo[mon] + ((mon == 2) && leap_yr))) -+ return -EINVAL; -+ -+ if ((hrs >= 24) || (min >= 60) || (sec >= 60)) -+ return -EINVAL; -+ -+ if ((yrs -= epoch) > 255) /* They are unsigned */ -+ return -EINVAL; -+ -+ spin_lock_irq(&rtc_lock); -+ -+ /* These limits and adjustments are independent of -+ * whether the chip is in binary mode or not. -+ */ -+ if (yrs > 169) { -+ spin_unlock_irq(&rtc_lock); -+ return -EINVAL; -+ } -+ if (yrs >= 100) -+ yrs -= 100; -+ -+ yrs += epoch; -+ BIN_TO_BCD(sec); -+ BIN_TO_BCD(min); -+ BIN_TO_BCD(hrs); -+ BIN_TO_BCD(day); -+ BIN_TO_BCD(mon); -+ yrs_low = yrs % 100; -+ yrs_high = yrs / 100; -+ BIN_TO_BCD(yrs_low); -+ BIN_TO_BCD(yrs_high); -+ -+ WRITE_YEAR_HIGH(yrs_high); -+ WRITE_YEAR_LOW(yrs_low); -+ WRITE_MONTH(mon); -+ WRITE_DAY(day); -+ WRITE_HOURS(hrs); -+ WRITE_MINUTES(min); -+ WRITE_SECONDS(sec); -+ -+ spin_unlock_irq(&rtc_lock); -+ return 0; -+ } -+#ifdef SH03_RTC_IRQ -+ case RTC_IRQP_READ: /* Read the periodic IRQ rate. */ -+ { -+ return put_user(rtc_freq, (unsigned long __user *)arg); -+ } -+ case RTC_IRQP_SET: /* Set periodic IRQ rate. */ -+ { -+ int tmp = 0; -+ -+ /* -+ * We don't really want Joe User generating more -+ * than 64Hz of interrupts on a multi-user machine. -+ */ -+ if (!kernel && (arg > rtc_max_user_freq) && (!capable(CAP_SYS_RESOURCE))) -+ return -EACCES; -+ -+ switch (arg) { -+ case 1: tmp = 2; break; -+ case 64: tmp = 1; break; -+ case 4096: tmp = 0; break; -+ default: return -EINVAL; -+ } -+ -+ spin_lock_irq(&rtc_lock); -+ rtc_freq = arg; -+ SELECT_BANK(RTC_BANK2); -+ WRITE_CLOCK((READ_CLOCK & ~3) | tmp); -+ SELECT_BANK(RTC_BANK0); -+ spin_unlock_irq(&rtc_lock); -+ return 0; -+ } -+#endif -+ case RTC_EPOCH_READ: /* Read the epoch. */ -+ { -+ return put_user (epoch, (unsigned long __user *)arg); -+ } -+ case RTC_EPOCH_SET: /* Set the epoch. */ -+ { -+ /* -+ * There were no RTC clocks before 1900. -+ */ -+ if (arg < 1900) -+ return -EINVAL; -+ -+ if (!capable(CAP_SYS_TIME)) -+ return -EACCES; -+ -+ epoch = arg; -+ return 0; -+ } -+ default: -+ return -ENOTTY; -+ } -+ return copy_to_user((void __user *)arg, &wtime, sizeof wtime) ? -EFAULT : 0; -+} -+ -+static int sh03_rtc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, -+ unsigned long arg) -+{ -+ return sh03_rtc_do_ioctl(cmd, arg, 0); -+} -+ -+/* -+ * We enforce only one user at a time here with the open/close. -+ * Also clear the previous interrupt data on an open, and clean -+ * up things on a close. -+ */ -+ -+/* We use rtc_lock to protect against concurrent opens. So the BKL is not -+ * needed here. Or anywhere else in this driver. */ -+static int sh03_rtc_open(struct inode *inode, struct file *file) -+{ -+ spin_lock_irq (&rtc_lock); -+ -+ if(rtc_status & RTC_IS_OPEN) -+ goto out_busy; -+ -+ rtc_status |= RTC_IS_OPEN; -+ -+ rtc_irq_data = 0; -+ spin_unlock_irq (&rtc_lock); -+ return 0; -+ -+out_busy: -+ spin_unlock_irq (&rtc_lock); -+ return -EBUSY; -+} -+ -+static int sh03_rtc_fasync (int fd, struct file *filp, int on) -+ -+{ -+ return fasync_helper (fd, filp, on, &sh03_rtc_async_queue); -+} -+ -+static int sh03_rtc_release(struct inode *inode, struct file *file) -+{ -+#ifdef SH03_RTC_IRQ -+ if (sh03_rtc_has_irq == 0) -+ goto no_irq; -+ -+ /* -+ * Turn off all interrupts once the device is no longer -+ * in use, and clear the data. -+ */ -+ -+ spin_lock_irq(&rtc_lock); -+ SELECT_BANK(RTC_BANK1); -+ ctrl_outb(0, RTC_ATCTL); -+ SELECT_BANK(RTC_BANK2); -+ ctrl_outb(0, RTC_TMCTL); -+ SELECT_BANK(RTC_BANK0); -+ -+ if (rtc_status & RTC_TIMER_ON) { -+ rtc_status &= ~RTC_TIMER_ON; -+ del_timer(&sh03_rtc_irq_timer); -+ } -+ spin_unlock_irq(&rtc_lock); -+ -+ if (file->f_flags & FASYNC) { -+ sh03_rtc_fasync (-1, file, 0); -+ } -+no_irq: -+#endif -+ -+ spin_lock_irq (&rtc_lock); -+ rtc_irq_data = 0; -+ rtc_status &= ~RTC_IS_OPEN; -+ spin_unlock_irq (&rtc_lock); -+ return 0; -+} -+ -+#ifdef SH03_RTC_IRQ -+/* Called without the kernel lock - fine */ -+static unsigned int sh03_rtc_poll(struct file *file, poll_table *wait) -+{ -+ unsigned long l; -+ -+ if (sh03_rtc_has_irq == 0) -+ return 0; -+ -+ poll_wait(file, &sh03_rtc_wait, wait); -+ -+ spin_lock_irq (&rtc_lock); -+ l = rtc_irq_data; -+ spin_unlock_irq (&rtc_lock); -+ -+ if (l != 0) -+ return POLLIN | POLLRDNORM; -+ return 0; -+} -+#endif -+ -+int rtc_control(rtc_task_t *task, unsigned int cmd, unsigned long arg) -+{ -+#ifndef SH03_RTC_IRQ -+ return -EIO; -+#else -+ spin_lock_irq(&rtc_task_lock); -+ if (rtc_callback != task) { -+ spin_unlock_irq(&rtc_task_lock); -+ return -ENXIO; -+ } -+ spin_unlock_irq(&rtc_task_lock); -+ return sh03_rtc_do_ioctl(cmd, arg, 1); -+#endif -+} -+ -+ -+/* -+ * The various file operations we support. -+ */ -+ -+static struct file_operations sh03_rtc_fops = { -+ .owner = THIS_MODULE, -+ .llseek = no_llseek, -+ .read = sh03_rtc_read, -+#ifdef SH03_RTC_IRQ -+ .poll = sh03_rtc_poll, -+#endif -+ .ioctl = sh03_rtc_ioctl, -+ .open = sh03_rtc_open, -+ .release = sh03_rtc_release, -+ .fasync = sh03_rtc_fasync, -+}; -+ -+static struct miscdevice sh03_rtc_dev= -+{ -+ RTC_MINOR, -+ "sh03-rtc", -+ &sh03_rtc_fops -+}; -+ -+#ifdef SH03_RTC_IRQ -+static irqreturn_t (*rtc_int_handler_ptr)(int irq, void *dev_id, struct pt_regs *regs); -+#endif -+ -+static int __init sh03_rtc_init(void) -+{ -+ if (!request_region(SH03_RTC_PORT(0), SH03_RTC_IO_EXTENT, "sh03-rtc")) { -+ printk(KERN_ERR "sh03-rtc: I/O port %d is not free.\n", SH03_RTC_PORT (0)); -+ return -EIO; -+ } -+ -+#ifdef SH03_RTC_IRQ -+ rtc_int_handler_ptr = sh03_rtc_interrupt; -+ if(request_irq(SH03_RTC_IRQ, rtc_int_handler_ptr, SA_INTERRUPT, "sh03-rtc", NULL)) { -+ /* Yeah right, seeing as irq 8 doesn't even hit the bus. */ -+ printk(KERN_ERR "sh03-rtc: IRQ %d is not free.\n", RTC_IRQ); -+ release_region(SH03_RTC_PORT(0), SH03_RTC_IO_EXTENT); -+ return -EIO; -+ } -+#endif -+ -+ if (misc_register(&sh03_rtc_dev)) { -+#ifdef SH03_RTC_IRQ -+ free_irq(SH03_RTC_IRQ, NULL); -+#endif -+ release_region(SH03_RTC_PORT(0), SH03_RTC_IO_EXTENT); -+ return -ENODEV; -+ } -+ if (!create_proc_read_entry ("driver/sh03-rtc", 0, NULL, sh03_rtc_read_proc, NULL)) { -+#ifdef SH03_RTC_IRQ -+ free_irq(SH03_RTC_IRQ, NULL); -+#endif -+ release_region(SH03_RTC_PORT(0), SH03_RTC_IO_EXTENT); -+ misc_deregister(&sh03_rtc_dev); -+ return -ENOMEM; -+ } -+ -+#ifdef SH03_RTC_IRQ -+ if (sh03_rtc_has_irq == 0) -+ goto no_irq2; -+ -+ init_timer(&sh03_rtc_irq_timer); -+ sh03_rtc_irq_timer.function = sh03_rtc_dropped_irq; -+ spin_lock_irq(&rtc_lock); -+ SELECT_BANK(RTC_BANK2); -+ WRITE_CLOCK(2); -+ SELECT_BANK(RTC_BANK0); -+ rtc_freq = 1; -+ spin_unlock_irq(&rtc_lock); -+no_irq2: -+#endif -+ -+ (void) init_sysctl(); -+ -+ printk(KERN_INFO "CTP/PCI-SH03 Real Time Clock Driver v" SH03_RTC_VERSION "\n"); -+ -+ return 0; -+} -+ -+static void __exit sh03_rtc_exit (void) -+{ -+ cleanup_sysctl(); -+ remove_proc_entry ("driver/sh03-rtc", NULL); -+ misc_deregister(&sh03_rtc_dev); -+ release_region (SH03_RTC_PORT (0), SH03_RTC_IO_EXTENT); -+#ifdef SH03_RTC_IRQ -+ if (sh03_rtc_has_irq) -+ free_irq (SH03_RTC_IRQ, NULL); -+#endif -+} -+ -+module_init(sh03_rtc_init); -+module_exit(sh03_rtc_exit); -+ -+#ifdef SH03_RTC_IRQ -+/* -+ * At IRQ rates >= 4096Hz, an interrupt may get lost altogether. -+ * (usually during an IDE disk interrupt, with IRQ unmasking off) -+ * Since the interrupt handler doesn't get called, the IRQ status -+ * byte doesn't get read, and the RTC stops generating interrupts. -+ * A timer is set, and will call this function if/when that happens. -+ * To get it out of this stalled state, we just read the status. -+ * At least a jiffy of interrupts (rtc_freq/HZ) will have been lost. -+ * (You *really* shouldn't be trying to use a non-realtime system -+ * for something that requires a steady > 1KHz signal anyways.) -+ */ -+ -+static void sh03_rtc_dropped_irq(unsigned long data) -+{ -+ unsigned long freq; -+ -+ spin_lock_irq (&rtc_lock); -+ -+ /* Just in case someone disabled the timer from behind our back... */ -+ if (rtc_status & RTC_TIMER_ON) -+ mod_timer(&sh03_rtc_irq_timer, jiffies + HZ/rtc_freq + 2*HZ/100); -+ -+ rtc_irq_data += ((rtc_freq/HZ)<<8); -+ rtc_irq_data &= ~0xff; -+ SELECT_BANK(RTC_BANK1); -+ rtc_irq_data |= (READ_ATCTL & RTC_AF) >> 1; -+ SELECT_BANK(RTC_BANK2); -+ rtc_irq_data |= (READ_TMCTL & RTC_TF); -+ SELECT_BANK(RTC_BANK0); -+ -+ freq = rtc_freq; -+ -+ spin_unlock_irq(&rtc_lock); -+ -+ printk(KERN_WARNING "sh03-rtc: lost some interrupts at %ldHz.\n", freq); -+ -+ /* Now we have new data */ -+ wake_up_interruptible(&sh03_rtc_wait); -+ -+ kill_fasync (&sh03_rtc_async_queue, SIGIO, POLL_IN); -+} -+#endif -+ -+/* -+ * Info exported via "/proc/driver/sh03-rtc". -+ */ -+ -+static int sh03_rtc_proc_output (char *buf) -+{ -+#define YN(bit) ((bit) ? "yes" : "no") -+#define NY(bit) ((bit) ? "no" : "yes") -+ char *p; -+ struct rtc_time tm; -+ unsigned char aie, tie, af, tf; -+ unsigned long freq; -+ int sec_ae, min_ae, hour_ae, week_ae, day_ae; -+ -+ spin_lock_irq(&rtc_lock); -+ SELECT_BANK(RTC_BANK1); -+ aie = READ_ATCTL & RTC_AIE; -+ af = READ_ATCTL & 2; -+ sec_ae = ctrl_inb(RTC_SEC10) & 8; -+ min_ae = ctrl_inb(RTC_MIN10) & 8; -+ hour_ae = ctrl_inb(RTC_HOU10) & 8; -+ week_ae = ctrl_inb(RTC_WEE1 ) & 8; -+ day_ae = ctrl_inb(RTC_DAY10) & 8; -+ SELECT_BANK(RTC_BANK2); -+ tie = READ_TMCTL & RTC_TIE; -+ tf = READ_TMCTL & 2; -+ SELECT_BANK(RTC_BANK0); -+ freq = rtc_freq; -+ spin_unlock_irq(&rtc_lock); -+ -+ p = buf; -+ -+ sh03_rtc_get_rtc_time(&tm); -+ -+ /* -+ * There is no way to tell if the luser has the RTC set for local -+ * time or for Universal Standard Time (GMT). Probably local though. -+ */ -+ p += sprintf(p, -+ "rtc_time\t: %02d:%02d:%02d\n" -+ "rtc_date\t: %04d-%02d-%02d\n" -+ "rtc_epoch\t: %04lu\n", -+ tm.tm_hour, tm.tm_min, tm.tm_sec, -+ tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, epoch); -+ -+ sh03_get_rtc_alm_time(&tm); -+ -+ /* -+ * We implicitly assume 24hr mode here. Alarm values >= 0xc0 will -+ * match any value for that particular field. Values that are -+ * greater than a valid time, but less than 0xc0 shouldn't appear. -+ */ -+ p += sprintf(p, "alarm\t\t: "); -+ if (!day_ae) -+ p += sprintf(p, "%02d ", tm.tm_mday); -+ else -+ p += sprintf(p, "** "); -+ if (!week_ae) -+ p += sprintf(p, "%01d ", tm.tm_wday); -+ else -+ p += sprintf(p, "* "); -+ if (!hour_ae) -+ p += sprintf(p, "%02d:", tm.tm_hour); -+ else -+ p += sprintf(p, "**:"); -+ -+ if (!min_ae) -+ p += sprintf(p, "%02d:", tm.tm_min); -+ else -+ p += sprintf(p, "**:"); -+ -+ if (!sec_ae) -+ p += sprintf(p, "%02d\n", tm.tm_sec); -+ else -+ p += sprintf(p, "**\n"); -+ -+ p += sprintf(p, -+ "alarm_IRQ\t: %s-%s\n" -+ "periodic_IRQ\t: %s-%s\n" -+ "periodic_freq\t: %ld\n" -+ "FOS\t\t: %s\n" -+ "Control Reg\t: %x\n", -+ YN(aie),YN(af), -+ YN(tie),YN(tf), -+ freq, -+ ctrl_inb(RTC_SEC10) & 8 ? "on" : "off", -+ ctrl_inb(RTC_CTL) & 15); -+ -+ return p - buf; -+#undef YN -+#undef NY -+} -+ -+static int sh03_rtc_read_proc(char *page, char **start, off_t off, -+ int count, int *eof, void *data) -+{ -+ int len = sh03_rtc_proc_output (page); -+ if (len <= off+count) *eof = 1; -+ *start = page + off; -+ len -= off; -+ if (len>count) len = count; -+ if (len<0) len = 0; -+ return len; -+} -+ -+void sh03_rtc_get_rtc_time(struct rtc_time *rtc_tm) -+{ -+// @@@@@ 16.09.29 TODO unsigned long uip_watchdog = jiffies; -+ -+ /* -+ * read RTC once any update in progress is done. The update -+ * can take just over 2ms. We wait 10 to 20ms. There is no need to -+ * to poll-wait (up to 1s - eeccch) for the falling edge of RTC_UIP. -+ * If you need to know *exactly* when a second has started, enable -+ * periodic update complete interrupts, (via ioctl) and then -+ * immediately read /dev/rtc which will block until you get the IRQ. -+ * Once the read clears, read the RTC time (again via ioctl). Easy. -+ */ -+ -+#if 0 /* @@@@@ 16.09.29 TODO */ -+ if (rtc_is_updating() != 0) -+ while (jiffies - uip_watchdog < 2*HZ/100) { -+ barrier(); -+ cpu_relax(); -+ } -+#endif -+ /* -+ * Only the values that we read from the RTC are set. We leave -+ * tm_wday, tm_yday and tm_isdst untouched. Even though the -+ * RTC has RTC_DAY_OF_WEEK, we ignore it, as it is only updated -+ * by the RTC when initially set to a non-zero value. -+ */ -+ spin_lock_irq(&rtc_lock); -+ rtc_tm->tm_sec = READ_SECONDS; -+ rtc_tm->tm_min = READ_MINUTES; -+ rtc_tm->tm_hour = READ_HOURS; -+ rtc_tm->tm_wday = READ_WEEK; -+ rtc_tm->tm_mday = READ_DAY; -+ rtc_tm->tm_mon = READ_MONTH; -+ rtc_tm->tm_year = READ_YEAR - epoch; -+ spin_unlock_irq(&rtc_lock); -+ -+ /* -+ * Account for differences between how the RTC uses the values -+ * and how they are defined in a struct rtc_time; -+ */ -+ if ((rtc_tm->tm_year += (epoch - 1900)) <= 69) -+ rtc_tm->tm_year += 100; -+ -+ rtc_tm->tm_mon--; -+} -+ -+static void sh03_get_rtc_alm_time(struct rtc_time *alm_tm) -+{ -+ /* -+ * Only the values that we read from the RTC are set. That -+ * means only tm_hour, tm_min, and tm_sec. -+ */ -+ spin_lock_irq(&rtc_lock); -+ SELECT_BANK(RTC_BANK1); -+ alm_tm->tm_sec = READ_SECONDS; -+ alm_tm->tm_min = READ_MINUTES; -+ alm_tm->tm_hour = READ_HOURS; -+ alm_tm->tm_wday = READ_WEEK; -+ alm_tm->tm_mday = READ_DAY; -+ SELECT_BANK(RTC_BANK0); -+ spin_unlock_irq(&rtc_lock); -+} -+ -+#ifdef SH03_RTC_IRQ -+/* -+ * Used to disable/enable interrupts for any one of UIE, AIE, PIE. -+ * Rumour has it that if you frob the interrupt enable/disable -+ * bits in RTC_CONTROL, you should read RTC_INTR_FLAGS, to -+ * ensure you actually start getting interrupts. Probably for -+ * compatibility with older/broken chipset RTC implementations. -+ * We also clear out any old irq data after an ioctl() that -+ * meddles with the interrupt enable/disable bits. -+ */ -+ -+static void sh03_mask_rtc_irq_bit(unsigned int bit) -+{ -+ unsigned char val; -+ -+ spin_lock_irq(&rtc_lock); -+ switch(bit) { -+ case RTC_AIE_OFF: -+ SELECT_BANK(RTC_BANK1); -+ val = READ_ATCTL; -+ val &= ~RTC_AIE; -+ WRITE_ATCTL(val); -+ SELECT_BANK(RTC_BANK0); -+ break; -+ case RTC_PIE_OFF: -+ SELECT_BANK(RTC_BANK2); -+ val = READ_TMCTL; -+ val &= ~RTC_TIE; -+ WRITE_TMCTL(val); -+ SELECT_BANK(RTC_BANK0); -+ break; -+ } -+ -+ rtc_irq_data = 0; -+ spin_unlock_irq(&rtc_lock); -+} -+ -+static void sh03_set_rtc_irq_bit(unsigned int bit) -+{ -+ unsigned char val; -+ -+ spin_lock_irq(&rtc_lock); -+ switch(bit) { -+ case RTC_AIE_ON: -+ SELECT_BANK(RTC_BANK1); -+ val = READ_ATCTL; -+ val |= RTC_AIE; -+ WRITE_ATCTL(val); -+ SELECT_BANK(RTC_BANK0); -+ break; -+ case RTC_PIE_ON: -+ SELECT_BANK(RTC_BANK2); -+ val = READ_TMCTL; -+ val |= RTC_TIE; -+ WRITE_TMCTL(val); -+ SELECT_BANK(RTC_BANK0); -+ break; -+ } -+ -+ rtc_irq_data = 0; -+ spin_unlock_irq(&rtc_lock); -+} -+#endif -+ -+MODULE_AUTHOR("Saito.K Interface Corporation"); -+MODULE_LICENSE("GPL"); -+MODULE_ALIAS_MISCDEV(RTC_MINOR); -+ -diff -ruN linux-2.6.17-vanilla/drivers/char/sysrq.c linux-2.6.17/drivers/char/sysrq.c ---- linux-2.6.17-vanilla/drivers/char/sysrq.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/char/sysrq.c 2006-07-12 16:54:23.000000000 +0000 -@@ -38,6 +38,18 @@ - #include <linux/kexec.h> - - #include <asm/ptrace.h> -+#ifdef CONFIG_KGDB_SYSRQ -+#include <asm/kgdb.h> -+#define GDB_OP &kgdb_op -+static struct sysrq_key_op kgdb_op={ -+ .handler = (void *)breakpoint, -+ .help_msg = "kGdb ", -+ .action_msg = "Debug breakpoint\n", -+}; -+ -+#else -+#define GDB_OP NULL -+#endif - - /* Whether we react on sysrq keys or just ignore them */ - int sysrq_enabled = 1; -@@ -296,7 +308,7 @@ - &sysrq_showlocks_op, /* d */ - &sysrq_term_op, /* e */ - &sysrq_moom_op, /* f */ -- NULL, /* g */ -+ GDB_OP, /* g */ - NULL, /* h */ - &sysrq_kill_op, /* i */ - NULL, /* j */ -diff -ruN linux-2.6.17-vanilla/drivers/char/watchdog/CVS/Entries linux-2.6.17/drivers/char/watchdog/CVS/Entries ---- linux-2.6.17-vanilla/drivers/char/watchdog/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/char/watchdog/CVS/Entries 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,2 @@ -+/shwdt.c/1.12/Mon Aug 29 21:01:18 2005/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/char/watchdog/CVS/Repository linux-2.6.17/drivers/char/watchdog/CVS/Repository ---- linux-2.6.17-vanilla/drivers/char/watchdog/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/char/watchdog/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/char/watchdog -diff -ruN linux-2.6.17-vanilla/drivers/char/watchdog/CVS/Root linux-2.6.17/drivers/char/watchdog/CVS/Root ---- linux-2.6.17-vanilla/drivers/char/watchdog/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/char/watchdog/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/i2c/CVS/Entries linux-2.6.17/drivers/i2c/CVS/Entries ---- linux-2.6.17-vanilla/drivers/i2c/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/CVS/Entries 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,2 @@ -+D/algos//// -+D/busses//// -diff -ruN linux-2.6.17-vanilla/drivers/i2c/CVS/Repository linux-2.6.17/drivers/i2c/CVS/Repository ---- linux-2.6.17-vanilla/drivers/i2c/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/i2c -diff -ruN linux-2.6.17-vanilla/drivers/i2c/CVS/Root linux-2.6.17/drivers/i2c/CVS/Root ---- linux-2.6.17-vanilla/drivers/i2c/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/i2c/algos/CVS/Entries linux-2.6.17/drivers/i2c/algos/CVS/Entries ---- linux-2.6.17-vanilla/drivers/i2c/algos/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/algos/CVS/Entries 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Kconfig/1.3/Wed Mar 2 13:02:57 2005/-ko/ -+/Makefile/1.3/Wed Mar 2 13:02:57 2005/-ko/ -+/i2c-algo-voyager.c/1.1/Wed Apr 21 00:09:16 2004/-ko/ -+/i2c-algo-voyager.h/1.2/Wed Feb 8 22:08:10 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/i2c/algos/CVS/Repository linux-2.6.17/drivers/i2c/algos/CVS/Repository ---- linux-2.6.17-vanilla/drivers/i2c/algos/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/algos/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/i2c/algos -diff -ruN linux-2.6.17-vanilla/drivers/i2c/algos/CVS/Root linux-2.6.17/drivers/i2c/algos/CVS/Root ---- linux-2.6.17-vanilla/drivers/i2c/algos/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/algos/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/i2c/algos/Kconfig linux-2.6.17/drivers/i2c/algos/Kconfig ---- linux-2.6.17-vanilla/drivers/i2c/algos/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/algos/Kconfig 2006-07-12 16:54:23.000000000 +0000 -@@ -53,6 +53,10 @@ - tristate "MPC8xx CPM I2C interface" - depends on 8xx && I2C - -+config I2C_ALGOVOYAGER -+ tristate "Silicon Motion Voyager GX Algorithm" -+ depends on SH_RTS7751R2D && I2C -+ - config I2C_ALGO_SIBYTE - tristate "SiByte SMBus interface" - depends on SIBYTE_SB1xxx_SOC && I2C -diff -ruN linux-2.6.17-vanilla/drivers/i2c/algos/Makefile linux-2.6.17/drivers/i2c/algos/Makefile ---- linux-2.6.17-vanilla/drivers/i2c/algos/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/algos/Makefile 2006-07-12 16:54:23.000000000 +0000 -@@ -6,6 +6,7 @@ - obj-$(CONFIG_I2C_ALGOPCF) += i2c-algo-pcf.o - obj-$(CONFIG_I2C_ALGOPCA) += i2c-algo-pca.o - obj-$(CONFIG_I2C_ALGOITE) += i2c-algo-ite.o -+obj-$(CONFIG_I2C_ALGOVOYAGER) += i2c-algo-voyager.o - obj-$(CONFIG_I2C_ALGO_SIBYTE) += i2c-algo-sibyte.o - obj-$(CONFIG_I2C_ALGO_SGI) += i2c-algo-sgi.o - -diff -ruN linux-2.6.17-vanilla/drivers/i2c/algos/i2c-algo-voyager.c linux-2.6.17/drivers/i2c/algos/i2c-algo-voyager.c ---- linux-2.6.17-vanilla/drivers/i2c/algos/i2c-algo-voyager.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/algos/i2c-algo-voyager.c 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,415 @@ -+/* -------------------------------------------------------------------- */ -+/* i2c-algo-voyagergx.c: */ -+/* -------------------------------------------------------------------- */ -+/* -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ -+ Copyright 2003 (c) Lineo uSolutions,Inc. -+ Copyright 2004 (c) Paul Mundt -+*/ -+/* -------------------------------------------------------------------- */ -+ -+ -+#include <linux/kernel.h> -+#include <linux/module.h> -+#include <linux/delay.h> -+#include <linux/slab.h> -+#include <linux/version.h> -+#include <linux/init.h> -+#include <asm/uaccess.h> -+#include <linux/ioport.h> -+#include <linux/errno.h> -+#include <linux/sched.h> -+ -+#include <linux/i2c.h> -+#include "i2c-algo-voyager.h" -+ -+/* ----- global defines ----------------------------------------------- */ -+#define DEB(x) if (i2c_debug>=1) x -+#define DEB2(x) if (i2c_debug>=2) x -+#define DEB3(x) if (i2c_debug>=3) x /* print several statistical values*/ -+#define DEBPROTO(x) if (i2c_debug>=9) x; -+ /* debug the protocol by showing transferred bits */ -+#define DEF_TIMEOUT 16 -+ -+/* debugging - slow down transfer to have a look at the data .. */ -+/* I use this with two leds&resistors, each one connected to sda,scl */ -+/* respectively. This makes sure that the algorithm works. Some chips */ -+/* might not like this, as they have an internal timeout of some mils */ -+ -+ -+/* ----- global variables --------------------------------------------- */ -+ -+/* module parameters: -+ */ -+static int i2c_debug=0; -+ -+/* --- setting states on the bus with the right timing: --------------- */ -+ -+#define iic_outb(adap, reg, val) adap->setiic(adap->data, reg, val) -+#define iic_inb(adap, reg) adap->getiic(adap->data, reg) -+ -+/* --- other auxiliary functions -------------------------------------- */ -+ -+static void iic_start(struct i2c_algo_iic_data *adap) -+{ -+ unsigned char ctl; -+ ctl = iic_inb(adap, I2C_CONTROL); -+ ctl = (ctl | I2C_CONTROL_STATUS); -+ DEB(printk("iic_start I2C_CONTROL = 0x%x\n", ctl)); -+ iic_outb(adap,I2C_CONTROL,ctl); -+} -+ -+static void iic_stop(struct i2c_algo_iic_data *adap) -+{ -+ unsigned char ctl; -+ ctl = iic_inb(adap, I2C_CONTROL); -+ ctl = (ctl & ~I2C_CONTROL_STATUS); -+ DEB(printk("iic_stop I2C_CONTROL = 0x%x\n", ctl)); -+ iic_outb(adap,I2C_CONTROL,ctl); -+} -+ -+static void iic_reset(struct i2c_algo_iic_data *adap) -+{ -+ unsigned char ctl; -+ ctl = iic_inb(adap, I2C_RESET); -+ ctl = (ctl & ~I2C_RESET_ERROR); -+ DEB(printk("iic_reset I2C_CONTROL = 0x%x\n", ctl)); -+ iic_outb(adap,I2C_RESET,ctl); -+} -+ -+ -+static int wait_for_bb(struct i2c_algo_iic_data *adap) -+{ -+ int timeout = DEF_TIMEOUT; -+ char status; -+ -+ status = iic_inb(adap, I2C_STATUS); -+#ifndef STUB_I2C -+ while (timeout-- && (status & I2C_STATUS_BUSY)) { -+ udelay(1000); /* How much is this? */ -+ status = iic_inb(adap, I2C_STATUS); -+ } -+#endif -+ if (timeout<=0) { -+ printk(KERN_ERR "Timeout, host is busy (%d)\n",timeout); -+ iic_reset(adap); -+ } -+ return(timeout<=0); -+} -+ -+/* -+ * Puts this process to sleep for a period equal to timeout -+ */ -+static inline void iic_sleep(unsigned long timeout) -+{ -+ schedule_timeout( timeout * HZ); -+} -+ -+static int wait_for_pin(struct i2c_algo_iic_data *adap, char *status) -+{ -+ int timeout = DEF_TIMEOUT; -+ -+ timeout = wait_for_bb(adap); -+ if (timeout) { -+ DEB2(printk("Timeout waiting for host not busy\n");) -+ return -EIO; -+ } -+ -+ timeout = DEF_TIMEOUT; -+ -+ *status = iic_inb(adap, I2C_STATUS); -+ while (timeout-- && !(*status & I2C_STATUS_ACK)) { -+ adap->waitforpin(); -+ *status = iic_inb(adap, I2C_STATUS); -+ } -+ if (timeout <= 0) -+ return(-1); -+ else -+ return(0); -+} -+ -+/* Verify the device we want to talk to on the IIC bus really exists. */ -+static inline int try_address(struct i2c_algo_iic_data *adap, -+ unsigned int addr, int retries) -+{ -+ int i, ret = -1; -+ unsigned char status; -+ -+ for (i=0;i<retries;i++) { -+ iic_outb(adap, I2C_SADDRESS, addr); -+ iic_start(adap); -+ if (wait_for_pin(adap, &status) == 0) { -+ ret=1; -+ break; /* success! */ -+ } -+ iic_stop(adap); -+ udelay(adap->udelay); -+ } -+ DEB2(if (i) printk("try_address: needed %d retries for 0x%x\n",i, -+ addr)); -+ return ret; -+} -+ -+int iic_sendbytes(struct i2c_adapter *i2c_adap,const char *buf, -+ int count) -+{ -+ struct i2c_algo_iic_data *adap = i2c_adap->algo_data; -+ int wrcount,timeout,i; -+ unsigned char *addr,status; -+ -+ if (count != PACKET_SIZE) -+ return -EPROTO; -+ -+ iic_outb(adap,I2C_BYTECOUNT,(unsigned char)(count - 1)); -+ iic_outb(adap,I2C_SADDRESS,(unsigned char)SERIAL_WRITE_ADDR); -+ -+ timeout = wait_for_bb(adap); -+ if (timeout) -+ return -ETIMEDOUT; -+ -+ wrcount = 0; -+ addr = (unsigned char *)I2C_DATA; -+ -+ for (i = 0;i < count;i++){ -+ iic_outb(adap,(int)addr++,buf[wrcount++]); -+ } -+ -+ iic_start(adap); -+ -+ /* Wait for transmission to complete */ -+ timeout = wait_for_pin(adap,&status); -+ if (timeout){ -+ iic_stop(adap); -+ printk("iic_sendbytes: %s write timeout.\n", i2c_adap->name); -+ return -EREMOTEIO; /* got a better one ?? */ -+ } -+ -+ iic_stop(adap); -+ -+ return wrcount; -+} -+ -+static int iic_readbytes(struct i2c_adapter *i2c_adap, char *buf, int count, -+ int sread) -+{ -+ struct i2c_algo_iic_data *adap = i2c_adap->algo_data; -+ int rdcount,timeout,i; -+ unsigned char *addr,wk,status; -+ -+ iic_outb(adap,I2C_BYTECOUNT,(unsigned char)(PACKET_SIZE - 1)); -+ iic_outb(adap,I2C_SADDRESS,(unsigned char)SERIAL_READ_ADDR); -+ -+ rdcount = 0; -+ addr = (unsigned char *)I2C_DATA; -+ -+ iic_start(adap); -+ -+ timeout = wait_for_pin(adap,&status); -+ if (timeout){ -+ iic_stop(adap); -+ printk("iic_readbytes: %s read timeout.\n", i2c_adap->name); -+ return -EREMOTEIO; /* got a better one ?? */ -+ } -+ -+ for (i = 0;i < PACKET_SIZE;i++){ -+ wk = iic_inb(adap,(int)addr++); -+ buf[rdcount++] = wk; -+ } -+ -+ iic_stop(adap); -+ -+ return rdcount; -+} -+ -+/* Whenever we initiate a transaction, the first byte clocked -+ * onto the bus after the start condition is the address (7 bit) of the -+ * device we want to talk to. This function manipulates the address specified -+ * so that it makes sense to the hardware when written to the IIC peripheral. -+ * -+ * Note: 10 bit addresses are not supported in this driver, although they are -+ * supported by the hardware. This functionality needs to be implemented. -+ */ -+static inline int iic_doAddress(struct i2c_algo_iic_data *adap, -+ struct i2c_msg *msg, int retries) -+{ -+ unsigned int addr; -+ int ret; -+ -+ addr = ( msg->addr << 1 ); -+ -+ if (iic_inb(adap, I2C_SADDRESS) != addr) { -+ iic_outb(adap, I2C_SADDRESS, addr); -+ ret = try_address(adap, addr, retries); -+ if (ret!=1) { -+ printk("iic_doAddress: died at address code.\n"); -+ return -EREMOTEIO; -+ } -+ } -+ -+ return 0; -+} -+ -+ -+/* Description: Prepares the controller for a transaction (clearing status -+ * registers, data buffers, etc), and then calls either iic_readbytes or -+ * iic_sendbytes to do the actual transaction. -+ * -+ * still to be done: Before we issue a transaction, we should -+ * verify that the bus is not busy or in some unknown state. -+ */ -+static int iic_xfer(struct i2c_adapter *i2c_adap, -+ struct i2c_msg msgs[], -+ int num) -+{ -+ struct i2c_algo_iic_data *adap = i2c_adap->algo_data; -+ struct i2c_msg *pmsg; -+ int i = 0; -+ int ret, timeout; -+ -+ pmsg = &msgs[i]; -+ -+ if(!pmsg->len) { -+ DEB2(printk("iic_xfer: read/write length is 0\n");) -+ return -EIO; -+ } -+ -+ /* Wait for any pending transfers to complete */ -+ timeout = wait_for_bb(adap); -+ if (timeout) { -+ DEB2(printk("iic_xfer: Timeout waiting for host not busy\n");) -+ return -EIO; -+ } -+ -+ /* Load address */ -+ ret = iic_doAddress(adap, pmsg, i2c_adap->retries); -+ if (ret) -+ return -EIO; -+ -+ DEB3(printk("iic_xfer: Msg %d, addr=0x%x, flags=0x%x, len=%d\n", -+ i, msgs[i].addr, msgs[i].flags, msgs[i].len);) -+ -+ if (pmsg->flags & I2C_M_RD) { /* Read */ -+ ret = iic_readbytes(i2c_adap, pmsg->buf, pmsg->len, 0); -+ } else { /* Write */ -+ udelay(1000); -+ ret = iic_sendbytes(i2c_adap, pmsg->buf, pmsg->len); -+ } -+ -+ if (ret != pmsg->len) { -+ DEB3(printk("iic_xfer: error or fail on read/write %d bytes.\n",ret)); -+ } else { -+ DEB3(printk("iic_xfer: read/write %d bytes.\n",ret)); -+ } -+ -+ return ret; -+} -+ -+ -+/* Implements device specific ioctls. Higher level ioctls can -+ * be found in i2c-core.c and are typical of any i2c controller (specifying -+ * slave address, timeouts, etc). These ioctls take advantage of any hardware -+ * features built into the controller for which this algorithm-adapter set -+ * was written. These ioctls allow you to take control of the data and clock -+ * lines and set the either high or low, -+ * similar to a GPIO pin. -+ */ -+static int algo_control(struct i2c_adapter *adapter, -+ unsigned int cmd, unsigned long arg) -+{ -+ struct i2c_iic_msg s_msg; -+ char *buf; -+ int ret; -+ -+ if (cmd == I2C_SREAD) { -+ if(copy_from_user(&s_msg, (struct i2c_iic_msg *)arg, -+ sizeof(struct i2c_iic_msg))) -+ return -EFAULT; -+ buf = kmalloc(s_msg.len, GFP_KERNEL); -+ if (buf== NULL) -+ return -ENOMEM; -+ -+ ret = iic_readbytes(adapter, buf, s_msg.len, 1); -+ if (ret>=0) { -+ if(copy_to_user( s_msg.buf, buf, s_msg.len) ) -+ ret = -EFAULT; -+ } -+ kfree(buf); -+ } -+ return 0; -+} -+ -+ -+static u32 iic_func(struct i2c_adapter *adap) -+{ -+ return I2C_FUNC_SMBUS_EMUL | I2C_FUNC_10BIT_ADDR | -+ I2C_FUNC_PROTOCOL_MANGLING; -+} -+ -+/* -----exported algorithm data: ------------------------------------- */ -+ -+static struct i2c_algorithm iic_algo = { -+ .name = "VoyagerGX I2C algorithm", -+ .id = I2C_ALGO_VOYAGER, -+ .master_xfer = iic_xfer, -+ .algo_control = algo_control, -+ .functionality = iic_func, -+}; -+ -+ -+/* -+ * registering functions to load algorithms at runtime -+ */ -+int i2c_voyager_add_bus(struct i2c_adapter *adap) -+{ -+ DEB2(printk("i2c-algo-voyagergx: hw routines for %s registered.\n", -+ adap->name)); -+ -+ adap->id |= iic_algo.id; -+ adap->algo = &iic_algo; -+ -+ adap->timeout = 100; /* default values, should */ -+ adap->retries = 3; /* be replaced by defines */ -+ adap->flags = 0; -+ -+ return i2c_add_adapter(adap); -+} -+ -+ -+int i2c_voyager_del_bus(struct i2c_adapter *adap) -+{ -+ return i2c_del_adapter(adap); -+} -+ -+int __init i2c_algo_iic_init (void) -+{ -+ printk(KERN_INFO "VoyagerGX iic (i2c) algorithm module\n"); -+ return 0; -+} -+ -+void i2c_algo_iic_exit(void) -+{ -+} -+ -+MODULE_AUTHOR("Lineo uSolutions,Inc. <www.lineo.co.jp>"); -+MODULE_DESCRIPTION("VoyagerGX I2C algorithm"); -+MODULE_LICENSE("GPL"); -+ -+MODULE_PARM(i2c_debug,"i"); -+MODULE_PARM_DESC(i2c_debug, -+ "debug level - 0 off; 1 normal; 2,3 more verbose; 9 iic-protocol"); -+ -+module_init(i2c_algo_iic_init); -+module_exit(i2c_algo_iic_exit); -diff -ruN linux-2.6.17-vanilla/drivers/i2c/algos/i2c-algo-voyager.h linux-2.6.17/drivers/i2c/algos/i2c-algo-voyager.h ---- linux-2.6.17-vanilla/drivers/i2c/algos/i2c-algo-voyager.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/algos/i2c-algo-voyager.h 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,99 @@ -+/* ------------------------------------------------------------------------- */ -+/* i2c-algo-ite.h i2c driver algorithms for ITE IIC adapters */ -+/* ------------------------------------------------------------------------- */ -+/* Copyright (C) 1995-97 Simon G. Vogl -+ 1998-99 Hans Berglund -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -+/* ------------------------------------------------------------------------- */ -+ -+/* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and even -+ Frodo Looijaard <frodol@dds.nl> */ -+ -+/* Modifications by MontaVista Software, 2001 -+ Changes made to support the ITE IIC peripheral */ -+ -+ -+#ifndef I2C_ALGO_ITE_H -+#define I2C_ALGO_ITE_H 1 -+ -+#include <linux/i2c.h> -+#include <asm/mach/voyagergx_reg.h> -+ -+/* Example of a sequential read request: -+ struct i2c_iic_msg s_msg; -+ -+ s_msg.addr=device_address; -+ s_msg.len=length; -+ s_msg.buf=buffer; -+ s_msg.waddr=word_address; -+ ioctl(file,I2C_SREAD, &s_msg); -+ */ -+#define I2C_SREAD 0x780 /* SREAD ioctl command */ -+ -+struct i2c_iic_msg { -+ __u16 addr; /* device address */ -+ __u16 waddr; /* word address */ -+ short len; /* msg length */ -+ char *buf; /* pointer to msg data */ -+}; -+ -+struct i2c_algo_iic_data { -+ void *data; /* private data for lolevel routines */ -+ void (*setiic) (void *data, int ctl, int val); -+ int (*getiic) (void *data, int ctl); -+ int (*getown) (void *data); -+ int (*getclock) (void *data); -+ void (*waitforpin) (void); -+ -+ /* local settings */ -+ int udelay; -+ int mdelay; -+ int timeout; -+}; -+ -+int i2c_voyager_add_bus(struct i2c_adapter *); -+int i2c_voyager_del_bus(struct i2c_adapter *); -+ -+//#define TC56XX -+#define OV7640 -+//#define OV7141 -+ -+#if defined(TC56XX) -+#define PACKET_SIZE 4 -+#define SERIAL_WRITE_ADDR ((0x56 << 1) + 0) //0xAC -+#define SERIAL_READ_ADDR ((0x56 << 1) + 1) //0xAD -+//#define SERIAL_WRITE_ADDR ((0x57 << 1) + 0) //0xAE -+//#define SERIAL_READ_ADDR ((0x57 << 1) + 0) //0xAF -+ -+#elif defined(OV7640) -+#define PACKET_SIZE 2 -+//#define SERIAL_WRITE_ADDR ((0x42 << 1) + 0) -+//#define SERIAL_READ_ADDR ((0x42 << 1) + 1) -+#define SERIAL_WRITE_ADDR (0x42) -+#define SERIAL_READ_ADDR (0x43) -+ -+#elif defined(OV7141) -+#define PACKET_SIZE 2 -+#define SERIAL_WRITE_ADDR ((0x42 << 1) + 0) -+#define SERIAL_READ_ADDR ((0x42 << 1) + 1) -+//#define SERIAL_WRITE_ADDR ((0x43 << 1) + 0) -+//#define SERIAL_READ_ADDR ((0x43 << 1) + 1) -+ -+#else -+#define PACKET_SIZE 16 -+#endif -+ -+#endif /* I2C_ALGO_ITE_H */ -diff -ruN linux-2.6.17-vanilla/drivers/i2c/busses/CVS/Entries linux-2.6.17/drivers/i2c/busses/CVS/Entries ---- linux-2.6.17-vanilla/drivers/i2c/busses/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/busses/CVS/Entries 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.9/Mon Mar 27 21:06:14 2006/-ko/ -+/i2c-voyager.c/1.1/Wed Apr 21 00:09:16 2004/-ko/ -+/Kconfig/1.12/Wed Jul 5 14:51:03 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/i2c/busses/CVS/Repository linux-2.6.17/drivers/i2c/busses/CVS/Repository ---- linux-2.6.17-vanilla/drivers/i2c/busses/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/busses/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/i2c/busses -diff -ruN linux-2.6.17-vanilla/drivers/i2c/busses/CVS/Root linux-2.6.17/drivers/i2c/busses/CVS/Root ---- linux-2.6.17-vanilla/drivers/i2c/busses/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/busses/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/i2c/busses/Kconfig linux-2.6.17/drivers/i2c/busses/Kconfig ---- linux-2.6.17-vanilla/drivers/i2c/busses/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/busses/Kconfig 2006-07-12 16:54:23.000000000 +0000 -@@ -496,6 +496,16 @@ - This driver can also be built as a module. If so, the module - will be called i2c-voodoo3. - -+config I2C_VOYAGER -+ tristate "Silicon Motion Voyager GX" -+ depends on I2C && SH_RTS7751R2D -+ help -+ If you say yes to this option, support will be included for the -+ Silicon Motion SM501 of mainboard I2C interfaces. -+ -+ This driver can also be built as a module. If so, the module -+ will be called i2c-voyager. -+ - config I2C_PCA_ISA - tristate "PCA9564 on an ISA bus" - depends on I2C -diff -ruN linux-2.6.17-vanilla/drivers/i2c/busses/Makefile linux-2.6.17/drivers/i2c/busses/Makefile ---- linux-2.6.17-vanilla/drivers/i2c/busses/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/busses/Makefile 2006-07-12 16:54:23.000000000 +0000 -@@ -40,6 +40,7 @@ - obj-$(CONFIG_I2C_VIA) += i2c-via.o - obj-$(CONFIG_I2C_VIAPRO) += i2c-viapro.o - obj-$(CONFIG_I2C_VOODOO3) += i2c-voodoo3.o -+obj-$(CONFIG_I2C_VOYAGER) += i2c-voyager.o - obj-$(CONFIG_SCx200_ACB) += scx200_acb.o - obj-$(CONFIG_SCx200_I2C) += scx200_i2c.o - -diff -ruN linux-2.6.17-vanilla/drivers/i2c/busses/i2c-voyager.c linux-2.6.17/drivers/i2c/busses/i2c-voyager.c ---- linux-2.6.17-vanilla/drivers/i2c/busses/i2c-voyager.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/i2c/busses/i2c-voyager.c 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1,216 @@ -+/* -------------------------------------------------------------------- */ -+/* i2c-voyagergx.c: */ -+/* -------------------------------------------------------------------- */ -+/* This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ -+ Copyright 2003 (c) Lineo uSolutions,Inc. -+ Copyright 2004 (c) Paul Mundt -+*/ -+/* -------------------------------------------------------------------- */ -+ -+#include <linux/kernel.h> -+#include <linux/ioport.h> -+#include <linux/module.h> -+#include <linux/delay.h> -+#include <linux/slab.h> -+#include <linux/version.h> -+#include <linux/init.h> -+#include <linux/interrupt.h> -+#include <asm/irq.h> -+#include <asm/io.h> -+ -+#include <linux/i2c.h> -+#include "../algos/i2c-algo-voyager.h" -+ -+//#define I2C_USE_INTR -+ -+#if defined(I2C_USE_INTR) -+#define DEFAULT_IRQ 10 -+#else -+#define DEFAULT_IRQ 0 -+#endif -+ -+struct iic_voyagergx { -+ unsigned long iic_base; -+ int iic_irq; -+}; -+static struct iic_voyagergx gpi; -+ -+static wait_queue_head_t iic_wait; -+static int iic_pending; -+ -+static void iic_voyagergx_setiic(void *data, int ctl, int val) -+{ -+ outw(val,ctl); -+} -+ -+static int iic_voyagergx_getiic(void *data, int ctl) -+{ -+ return inw(ctl); -+} -+ -+/* Put this process to sleep. We will wake up when the -+ * IIC controller interrupts. -+ */ -+static void iic_voyagergx_waitforpin(void) -+{ -+ int timeout = 2; -+ -+ /* If interrupts are enabled (which they are), then put the process to -+ * sleep. This process will be awakened by two events -- either the -+ * the IIC peripheral interrupts or the timeout expires. -+ * If interrupts are not enabled then delay for a reasonable amount -+ * of time and return. -+ */ -+ if (gpi.iic_irq > 0) { -+ local_irq_disable(); -+ -+ if (iic_pending == 0) { -+ interruptible_sleep_on_timeout(&iic_wait, timeout*HZ); -+ } else { -+ iic_pending = 0; -+ } -+ -+ local_irq_enable(); -+ } else { -+ udelay(100); -+ } -+} -+ -+#if defined(I2C_USE_INTR) -+static irqreturn_t iic_voyagergx_handler(int this_irq, void *dev_id, -+ struct pt_regs *regs) -+{ -+ iic_pending = 1; -+ -+ pr_debug("iic_voyagergx_handler: in interrupt handler\n"); -+ wake_up_interruptible(&iic_wait); -+ -+ return IRQ_HANDLED; -+} -+#endif -+ -+/* Lock the region of memory where I/O registers exist. Request our -+ * interrupt line and register its associated handler. -+ */ -+static int iic_hw_resrc_init(void) -+{ -+ unsigned char ctl; -+ unsigned long val; -+ -+ // Power Mode Gate -+ val = inl(POWER_MODE0_GATE); -+ val |= 0x00000040; -+ outl(val, POWER_MODE0_GATE); -+ val = inl(POWER_MODE1_GATE); -+ val |= 0x00000040; -+ outl(val, POWER_MODE1_GATE); -+ -+ // GPIO Control -+ val = inl( GPIO_MUX_HIGH); -+ val |= 0x0000c000; -+ outl(val, GPIO_MUX_HIGH); -+ -+#if defined(I2C_USE_INTR) -+ // Interrupt Mask -+ val = inl(VOYAGER_INT_MASK); -+ val |= 0x00800000; -+ outl(val, VOYAGER_INT_MASK); -+#endif -+ -+ // Enable I2c controller and select mode to high -+ ctl = inb(I2C_CONTROL); -+ outb((ctl | I2C_CONTROL_E | I2C_CONTROL_MODE), I2C_CONTROL); -+ -+#if defined(I2C_USE_INTR) -+ if (gpi.iic_irq > 0) { -+ if (request_irq(gpi.iic_irq, iic_voyagergx_handler, 0, -+ "VoyagerGX IIC", 0) < 0) { -+ gpi.iic_irq = 0; -+ } else { -+ pr_debug("Enabled IIC IRQ %d\n", gpi.iic_irq); -+ } -+ -+ enable_irq(gpi.iic_irq); -+ } -+#endif -+ -+ return 0; -+} -+ -+static struct i2c_algo_iic_data iic_voyagergx_data = { -+ .setiic = iic_voyagergx_setiic, -+ .getiic = iic_voyagergx_getiic, -+ .waitforpin = iic_voyagergx_waitforpin, -+ .udelay = 80, -+ .mdelay = 80, -+ .timeout = 100, -+}; -+ -+static struct i2c_adapter iic_voyagergx_ops = { -+ .owner = THIS_MODULE, -+ .name = "VoyagerGX I2C", -+ .id = I2C_HW_SMBUS_VOYAGER, -+ .class = I2C_ADAP_CLASS_SMBUS, -+ .algo_data = &iic_voyagergx_data, -+}; -+ -+static int __init iic_voyagergx_init(void) -+{ -+ struct iic_voyagergx *piic = &gpi; -+ -+ printk(KERN_INFO "Initialize VoyagerGX I2C module\n"); -+ -+ piic->iic_base = VOYAGER_BASE; -+ piic->iic_irq = DEFAULT_IRQ; -+ -+ iic_voyagergx_data.data = (void *)piic; -+ init_waitqueue_head(&iic_wait); -+ -+ if (iic_hw_resrc_init() == 0) { -+ if (i2c_voyager_add_bus(&iic_voyagergx_ops) < 0) -+ return -ENODEV; -+ } else { -+ return -ENODEV; -+ } -+ -+#if defined(I2C_USE_INTR) -+ printk(KERN_INFO " found device at %#lx irq %d.\n", -+ piic->iic_base, piic->iic_irq); -+#else -+ printk(KERN_INFO " found device at %#lx\n", piic->iic_base); -+#endif -+ -+ return 0; -+} -+ -+ -+static void iic_voyagergx_exit(void) -+{ -+ if (gpi.iic_irq > 0) { -+ disable_irq(gpi.iic_irq); -+ free_irq(gpi.iic_irq, 0); -+ } -+ -+ release_region(gpi.iic_base, 2); -+} -+ -+MODULE_AUTHOR("Lineo uSolutions,Inc. <www.lineo.co.jp>"); -+MODULE_DESCRIPTION("I2C-Bus adapter for VoyagerGX Silicon Motion, Inc."); -+MODULE_LICENSE("GPL"); -+ -+module_init(iic_voyagergx_init); -+module_exit(iic_voyagergx_exit); -+ -diff -ruN linux-2.6.17-vanilla/drivers/ide/CVS/Entries linux-2.6.17/drivers/ide/CVS/Entries ---- linux-2.6.17-vanilla/drivers/ide/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,6 @@ -+/Kconfig/1.28/Mon Mar 27 21:06:14 2006/-ko/ -+/Makefile/1.7/Tue Jan 3 22:35:55 2006/-ko/ -+D/legacy//// -+D/pci//// -+D/sh//// -+/ide.c/1.11/Wed Jul 5 14:51:04 2006/-ko/ -diff -ruN linux-2.6.17-vanilla/drivers/ide/CVS/Repository linux-2.6.17/drivers/ide/CVS/Repository ---- linux-2.6.17-vanilla/drivers/ide/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/CVS/Repository 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/ide -diff -ruN linux-2.6.17-vanilla/drivers/ide/CVS/Root linux-2.6.17/drivers/ide/CVS/Root ---- linux-2.6.17-vanilla/drivers/ide/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/CVS/Root 2006-07-12 16:54:23.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/ide/Kconfig linux-2.6.17/drivers/ide/Kconfig ---- linux-2.6.17-vanilla/drivers/ide/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/ide/Kconfig 2006-07-12 16:54:24.000000000 +0000 -@@ -780,6 +780,9 @@ - This option enables the use of the sleep LED as a hard drive - activity LED. - -+config IDE_SH -+ def_bool SUPERH -+ - config BLK_DEV_IDE_SWARM - tristate "IDE for Sibyte evaluation boards" - depends on SIBYTE_SB1xxx_SOC -diff -ruN linux-2.6.17-vanilla/drivers/ide/Makefile linux-2.6.17/drivers/ide/Makefile ---- linux-2.6.17-vanilla/drivers/ide/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/ide/Makefile 2006-07-12 16:54:24.000000000 +0000 -@@ -37,6 +37,8 @@ - ide-core-$(CONFIG_BLK_DEV_MPC8xx_IDE) += ppc/mpc8xx.o - ide-core-$(CONFIG_BLK_DEV_IDE_PMAC) += ppc/pmac.o - -+# built-in only drivers from sh/ -+ide-core-$(CONFIG_IDE_SH) += sh/ide-sh.o - # built-in only drivers from h8300/ - ide-core-$(CONFIG_H8300) += h8300/ide-h8300.o - -diff -ruN linux-2.6.17-vanilla/drivers/ide/ide.c linux-2.6.17/drivers/ide/ide.c ---- linux-2.6.17-vanilla/drivers/ide/ide.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/ide/ide.c 2006-07-12 16:54:24.000000000 +0000 -@@ -1776,6 +1776,7 @@ - - extern void pnpide_init(void); - extern void h8300_ide_init(void); -+extern void ide_sh_init(void); - - /* - * probe_for_hwifs() finds/initializes "known" IDE interfaces -@@ -1840,6 +1841,9 @@ - #ifdef CONFIG_H8300 - h8300_ide_init(); - #endif -+#ifdef CONFIG_IDE_SH -+ ide_sh_init(); -+#endif - } - - void ide_register_subdriver(ide_drive_t *drive, ide_driver_t *driver) -diff -ruN linux-2.6.17-vanilla/drivers/ide/legacy/CVS/Entries linux-2.6.17/drivers/ide/legacy/CVS/Entries ---- linux-2.6.17-vanilla/drivers/ide/legacy/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/legacy/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,2 @@ -+/ide-cs.c/1.13/Thu Jul 6 12:38:14 2006// -+D -diff -ruN linux-2.6.17-vanilla/drivers/ide/legacy/CVS/Repository linux-2.6.17/drivers/ide/legacy/CVS/Repository ---- linux-2.6.17-vanilla/drivers/ide/legacy/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/legacy/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/ide/legacy -diff -ruN linux-2.6.17-vanilla/drivers/ide/legacy/CVS/Root linux-2.6.17/drivers/ide/legacy/CVS/Root ---- linux-2.6.17-vanilla/drivers/ide/legacy/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/legacy/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/ide/legacy/ide-cs.c linux-2.6.17/drivers/ide/legacy/ide-cs.c ---- linux-2.6.17-vanilla/drivers/ide/legacy/ide-cs.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/ide/legacy/ide-cs.c 2006-07-12 16:54:24.000000000 +0000 -@@ -73,6 +73,11 @@ - #define DEBUG(n, args...) - #endif - -+ -+#if defined(CONFIG_HD64461_PCMCIA) || defined(CONFIG_HD64461_PCMCIA_MODULE) -+#define USE_MEM 1 -+#endif -+ - /*====================================================================*/ - - static const char ide_major[] = { -@@ -117,13 +122,19 @@ - info->p_dev = link; - link->priv = info; - -+#ifndef USE_MEM - link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; - link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; - link->io.IOAddrLines = 3; -+#endif - link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; - link->irq.IRQInfo1 = IRQ_LEVEL_ID; - link->conf.Attributes = CONF_ENABLE_IRQ; -+#ifdef USE_MEM -+ link->conf.IntType = INT_MEMORY; -+#else - link->conf.IntType = INT_MEMORY_AND_IO; -+#endif - - return ide_config(link); - } /* ide_attach */ -@@ -229,6 +240,22 @@ - } - } - -+#ifdef USE_MEM -+ if ((cfg->mem.nwin > 0) || (stk->dflt.mem.nwin > 0)) { -+ win_req_t wr; -+ wr.Attributes = WIN_ENABLE|WIN_MEMORY_TYPE_CM; -+ wr.Base = 0; -+ wr.Size = 0; -+ wr.AccessSpeed = 0; -+ link->win = (window_handle_t)link; -+ link->conf.ConfigIndex = cfg->index; -+ if (pcmcia_request_window(&link, &wr, &link->win) != 0) -+ goto next_entry; -+ io_base = wr.Base; -+ ctl_base = io_base + 0x0e; -+ break; -+ } -+#else - if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM)) - link->conf.Vpp = - cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000; -@@ -262,6 +289,7 @@ - /* If we've got this far, we're done */ - break; - } -+#endif - - next_entry: - if (cfg->flags & CISTPL_CFTABLE_DEFAULT) -@@ -278,12 +306,19 @@ - CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); - CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); - -+#ifndef USE_MEM -+ /* deal with brain dead IDE resource management */ -+ release_region(link->io.BasePort1, link->io.NumPorts1); -+ if (link->io.NumPorts2) -+ release_region(link->io.BasePort2, link->io.NumPorts2); -+ - /* disable drive interrupts during IDE probe */ - outb(0x02, ctl_base); - - /* special setup for KXLC005 card */ - if (is_kme) - outb(0x81, ctl_base+1); -+#endif - - /* retry registration in case device is still spinning up */ - for (hd = -1, i = 0; i < 10; i++) { -@@ -352,6 +387,13 @@ - -- need to investigate the required PCMCIA magic */ - ide_unregister(info->hd); - } -+ -+#ifndef USE_MEM -+ request_region(link->io.BasePort1, link->io.NumPorts1,"ide-cs"); -+ if (link->io.NumPorts2) -+ request_region(link->io.BasePort2, link->io.NumPorts2,"ide-cs"); -+#endif -+ - info->ndev = 0; - - pcmcia_disable_device(link); -diff -ruN linux-2.6.17-vanilla/drivers/ide/pci/CVS/Entries linux-2.6.17/drivers/ide/pci/CVS/Entries ---- linux-2.6.17-vanilla/drivers/ide/pci/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/pci/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,2 @@ -+/alim15x3.c/1.16/Wed Jul 5 14:51:05 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/ide/pci/CVS/Repository linux-2.6.17/drivers/ide/pci/CVS/Repository ---- linux-2.6.17-vanilla/drivers/ide/pci/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/pci/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/ide/pci -diff -ruN linux-2.6.17-vanilla/drivers/ide/pci/CVS/Root linux-2.6.17/drivers/ide/pci/CVS/Root ---- linux-2.6.17-vanilla/drivers/ide/pci/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/pci/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/ide/pci/alim15x3.c linux-2.6.17/drivers/ide/pci/alim15x3.c ---- linux-2.6.17-vanilla/drivers/ide/pci/alim15x3.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/ide/pci/alim15x3.c 2006-07-12 16:54:24.000000000 +0000 -@@ -65,6 +65,16 @@ - "PIO mode" }; - - static char *udmaT[8] = { -+#if defined(CONFIG_SH_MPC1211) -+ " 1T", -+ "1.5T", -+ " 2T", -+ " 3T", -+ " 4T", -+ "2.5T", -+ " 6T", -+ "3.5T" -+#else - "1.5T", - " 2T", - "2.5T", -@@ -73,6 +83,7 @@ - " 4T", - " 6T", - " 8T" -+#endif - }; - - static char *channel_status[8] = { -@@ -303,7 +314,11 @@ - u8 cd_dma_fifo = 0; - int unit = drive->select.b.unit & 1; - -+#if defined(CONFIG_SH_MPC1211) -+ pio = ide_get_best_pio_mode(drive, pio, 0, &d); -+#else - pio = ide_get_best_pio_mode(drive, pio, 5, &d); -+#endif - s_time = ide_pio_timings[pio].setup_time; - a_time = ide_pio_timings[pio].active_time; - if ((s_clc = (s_time * bus_speed + 999) / 1000) >= 8) -@@ -420,6 +435,10 @@ - return 0; - } - -+#ifdef CONFIG_SH_MPC1211 -+ mode = 1; -+#endif -+ - /* - * If the drive sees no suitable cable then UDMA 33 - * is the highest permitted mode -diff -ruN linux-2.6.17-vanilla/drivers/ide/sh/CVS/Entries linux-2.6.17/drivers/ide/sh/CVS/Entries ---- linux-2.6.17-vanilla/drivers/ide/sh/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/sh/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,2 @@ -+/ide-sh.c/1.2/Thu Mar 17 10:26:58 2005/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/ide/sh/CVS/Repository linux-2.6.17/drivers/ide/sh/CVS/Repository ---- linux-2.6.17-vanilla/drivers/ide/sh/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/sh/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/ide/sh -diff -ruN linux-2.6.17-vanilla/drivers/ide/sh/CVS/Root linux-2.6.17/drivers/ide/sh/CVS/Root ---- linux-2.6.17-vanilla/drivers/ide/sh/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/sh/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/ide/sh/ide-sh.c linux-2.6.17/drivers/ide/sh/ide-sh.c ---- linux-2.6.17-vanilla/drivers/ide/sh/ide-sh.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/ide/sh/ide-sh.c 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,95 @@ -+/* -+ * SuperH default IDE host driver -+ * -+ * Copyright (C) 2004, 2005 Paul Mundt -+ * -+ * Based on the old include/asm-sh/ide.h -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/ide.h> -+ -+#include <asm/irq.h> -+ -+enum { -+ IDE_SH_CFCARD_IO = 0x1f0, -+ IDE_SH_PCMCIA_IO = 0x170, -+}; -+ -+static struct sh_ide_hwif { -+ unsigned long base; -+ int irq; -+} sh_ide_hwifs[] __initdata = { -+ { IDE_SH_CFCARD_IO, IRQ_CFCARD }, -+ { IDE_SH_PCMCIA_IO, IRQ_PCMCIA }, -+ { 0, }, -+}; -+ -+static inline int __init hw_setup(hw_regs_t *hw, int idx) -+{ -+ unsigned long base = sh_ide_hwifs[idx].base; -+ -+ if (!request_region(base, 8, "ide-sh")) -+ return -EBUSY; -+ if (!request_region(base + 0x206, 1, "ide-sh")) { -+ release_region(base, 8); -+ return -EBUSY; -+ } -+ -+ memset(hw, 0, sizeof(hw_regs_t)); -+ ide_std_init_ports(hw, base, base + 0x206); -+ -+ hw->irq = sh_ide_hwifs[idx].irq; -+ hw->chipset = ide_generic; -+ -+ return 0; -+} -+ -+static inline void __init hwif_setup(ide_hwif_t *hwif) -+{ -+ hwif->mmio = 2; -+} -+ -+void __init ide_sh_init(void) -+{ -+ int i, idx; -+ -+ printk(KERN_INFO "ide: SuperH generic IDE interface\n"); -+ -+ for (i = 0; i < MAX_HWIFS; i++) { -+ ide_hwif_t *hwif; -+ hw_regs_t hw; -+ -+ if (!sh_ide_hwifs[i].base) { -+ printk(KERN_ERR "ide-sh: Attempting to register ide%d " -+ "when only %d interfaces are available.\n", -+ i, i - 1); -+ break; -+ } -+ -+ if (hw_setup(&hw, i) < 0) -+ goto region_cleanup; -+ -+ idx = ide_register_hw(&hw, &hwif); -+ if (idx == -1) { -+ printk(KERN_ERR "ide-sh: IDE interface registration failed\n"); -+ i++; /* release this interface too */ -+ goto region_cleanup; -+ } -+ -+ hwif_setup(hwif); -+ } -+ -+region_cleanup: -+ for (idx = 0; idx < i; idx++) { -+ unsigned long base = sh_ide_hwifs[idx].base; -+ -+ release_region(base + 0x206, 1); -+ release_region(base, 8); -+ } -+} -+ -diff -ruN linux-2.6.17-vanilla/drivers/input/CVS/Entries linux-2.6.17/drivers/input/CVS/Entries ---- linux-2.6.17-vanilla/drivers/input/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,2 @@ -+D/keyboard//// -+D/touchscreen//// -diff -ruN linux-2.6.17-vanilla/drivers/input/CVS/Repository linux-2.6.17/drivers/input/CVS/Repository ---- linux-2.6.17-vanilla/drivers/input/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/input -diff -ruN linux-2.6.17-vanilla/drivers/input/CVS/Root linux-2.6.17/drivers/input/CVS/Root ---- linux-2.6.17-vanilla/drivers/input/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/input/keyboard/CVS/Entries linux-2.6.17/drivers/input/keyboard/CVS/Entries ---- linux-2.6.17-vanilla/drivers/input/keyboard/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/keyboard/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,7 @@ -+/Makefile/1.6/Thu Nov 10 14:20:52 2005/-ko/ -+/hp620_keyb.c/1.2/Mon Jan 30 11:14:01 2006// -+/hp680_keyb.c/1.2/Mon Jan 30 11:14:01 2006// -+/scan_keyb.c/1.3/Mon Jan 30 11:14:01 2006/-ko/ -+/scan_keyb.h/1.2/Mon Jan 30 11:14:01 2006/-ko/ -+/Kconfig/1.14/Wed Jul 5 14:51:11 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/input/keyboard/CVS/Repository linux-2.6.17/drivers/input/keyboard/CVS/Repository ---- linux-2.6.17-vanilla/drivers/input/keyboard/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/keyboard/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/input/keyboard -diff -ruN linux-2.6.17-vanilla/drivers/input/keyboard/CVS/Root linux-2.6.17/drivers/input/keyboard/CVS/Root ---- linux-2.6.17-vanilla/drivers/input/keyboard/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/keyboard/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/input/keyboard/Kconfig linux-2.6.17/drivers/input/keyboard/Kconfig ---- linux-2.6.17-vanilla/drivers/input/keyboard/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/input/keyboard/Kconfig 2006-07-12 16:54:24.000000000 +0000 -@@ -183,4 +183,21 @@ - This driver implements support for HIL-keyboards attached - to your machine, so normally you should say Y here. - -+choice -+ prompt "HP6XX keyboard" -+ depends on SH_HP6XX -+ default KEYBOARD_HP680 -+ -+config KEYBOARD_HP620 -+ tristate "HP620 keyboard" -+ help -+ Say Y here if you are running Linux on HP Jornada 620. -+ -+config KEYBOARD_HP680 -+ tristate "HP680 keyboard" -+ help -+ Say Y here if you are running Linux on HP Jornada 680. -+ -+endchoice -+ - endif -diff -ruN linux-2.6.17-vanilla/drivers/input/keyboard/Makefile linux-2.6.17/drivers/input/keyboard/Makefile ---- linux-2.6.17-vanilla/drivers/input/keyboard/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/input/keyboard/Makefile 2006-07-12 16:54:24.000000000 +0000 -@@ -11,8 +11,11 @@ - obj-$(CONFIG_KEYBOARD_AMIGA) += amikbd.o - obj-$(CONFIG_KEYBOARD_LOCOMO) += locomokbd.o - obj-$(CONFIG_KEYBOARD_NEWTON) += newtonkbd.o -+obj-$(CONFIG_KEYBOARD_98KBD) += 98kbd.o - obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o - obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o - obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o - obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o -+obj-$(CONFIG_KEYBOARD_HP620) += scan_keyb.o hp620_keyb.o -+obj-$(CONFIG_KEYBOARD_HP680) += scan_keyb.o hp680_keyb.o - -diff -ruN linux-2.6.17-vanilla/drivers/input/keyboard/hp620_keyb.c linux-2.6.17/drivers/input/keyboard/hp620_keyb.c ---- linux-2.6.17-vanilla/drivers/input/keyboard/hp620_keyb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/keyboard/hp620_keyb.c 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,169 @@ -+/* -+ * drivers/input/keyboard/hp680_keyb.c -+ * -+ * HP Jornada 620 scan keyboard -+ * -+ * Copyright (C) 2005 Andriy Skulysh -+ * Copyright (C) 2006 Paul Mundt -+ * -+ * Splited from drivers/input/keyboard/hp600_keyb.c -+ * -+ * Copyright (C) 2000 YAEGASHI Takeshi -+ * HP600 keyboard scan routine and translation table -+ * Copyright (C) 2000 Niibe Yutaka -+ * HP620 keyboard translation table -+ */ -+#include <linux/kernel.h> -+#include <linux/module.h> -+#include <linux/init.h> -+#include <asm/delay.h> -+#include <asm/io.h> -+#include "scan_keyb.h" -+ -+#define PCDR 0xa4000124 -+#define PDDR 0xa4000126 -+#define PEDR 0xa4000128 -+#define PFDR 0xa400012a -+#define PGDR 0xa400012c -+#define PHDR 0xa400012e -+#define PJDR 0xa4000130 -+#define PKDR 0xa4000132 -+#define PLDR 0xa4000134 -+ -+/**************************************************************** -+HP Jornada 620(Japanese version) keyboard scan matrix -+ -+ PTC7 PTC6 PTC5 PTC4 PTC3 PTC2 PTC1 PTC0 -+PTD1 EREC BS Ctrl on/off - 0 9 -+PTD5 EREC BS Ctrl on/off ^ P O -+PTD7 EREC BS Ctrl on/off ] @ L -+PTE0 EREC BS Ctrl on/off Han/Zen [ ; -+PTE1 EREC BS Ctrl on/off Enter : / -+PTE3 EREC BS Ctrl on/off Right Up -+PTE6 EREC BS Ctrl on/off Down Left -+PTE7 EREC BS Ctrl on/off F8 F7 -+ -+ PTF7 PTF6 PTF5 PTF4 PTF3 PTF2 PTF1 PTF0 -+PTD1 8 7 6 5 4 3 2 1 -+PTD5 I U Y T R E W Q -+PTD7 K J H G F D S A -+PTE0 ESC Tab Shift -+PTE1 . V Caps Hira -+PTE3 , M N B Muhen C X -+PTE6 _ \ Henkan Space Alt Z -+PTE7 F6 F5 F4 F3 F2 F1 REC -+ -+ PTH0 -+* on/off -+ -+ 7 6 5 4 3 2 1 0 -+C: 0xffff 0xff IP IP IP IP IP IP IP IP -+D: 0x4404 0xaf O F O F F F O F -+E: 0x5045 0xff O O F F O F O O -+F: 0xffff 0xff IP IP IP IP IP IP IP IP -+G: 0xd5ff 0x00 IP O O O IP IP IP IP -+H: 0x63ff 0xd1 O I F IP IP IP IP IP -+J: 0x0004 0x02 F F F F F F O F -+K: 0x0401 0xff F F O F F F F O -+L: 0x0c00 0x20 F F IP F F F F F -+ -+ADCSR: 0x08 -+ADCR: 0x3f -+ -+ ****************************************************************/ -+ -+/**************************************************************** -+Japanese 109 keyboard scan code layout -+ -+ E02A- E1- -+01 3B 3C 3D 3E 3F 40 41 42 43 44 57 58 E037 46 1045 -+ -+29 02 03 04 05 06 07 08 09 0A 0B 0C 0D 7D 0E E052 E047 E049 45 E035 37 4A -+0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C E053 E04F E051 47 48 49 4E -+3A 1E 1F 20 21 22 23 24 25 26 27 28 2B 4B 4C 4D -+2A 2C 2D 2E 2F 30 31 32 33 34 35 73 36 E048 4F 50 51 E0- -+1D DB 38 7B 39 79 70 E038 DC DD E01D E04B E050 E04D 52 53 1C -+ -+****************************************************************/ -+ -+static const unsigned char hp620_japanese_table[] = { -+ /* PTD1 */ -+ 0x0a, 0x0b, 0x0c, 0x00, 0x00, 0x0e, 0x00, 0x00, -+ 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, -+ /* PTD5 */ -+ 0x18, 0x19, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, -+ /* PTD7 */ -+ 0x26, 0x1a, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, -+ /* PTE0 */ -+ 0x27, 0x1b, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x2a, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -+ /* PTE1 */ -+ 0x35, 0x28, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x70, 0x3a, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x34, -+ /* PTE3 */ -+ 0x48, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x2d, 0x2e, 0x7b, 0x30, 0x31, 0x32, 0x33, -+ /* PTE6 */ -+ 0x4b, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x2c, 0x38, 0x00, 0x39, 0x79, 0x7d, 0x73, -+ /* PTE7 */ -+ 0x41, 0x42, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, -+ /* **** */ -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+}; -+ -+static int hp620_japanese_scan_kbd(unsigned char *s) -+{ -+ int i; -+ unsigned char matrix_switch[] = { -+ 0xfd, 0xff, /* PTD1 */ -+ 0xdf, 0xff, /* PTD5 */ -+ 0x7f, 0xff, /* PTD7 */ -+ 0xff, 0xfe, /* PTE0 */ -+ 0xff, 0xfd, /* PTE1 */ -+ 0xff, 0xf7, /* PTE3 */ -+ 0xff, 0xbf, /* PTE6 */ -+ 0xff, 0x7f, /* PTE7 */ -+ }, *t=matrix_switch; -+ -+ for(i=0; i<8; i++) { -+ ctrl_outb(*t++, PDDR); -+ ctrl_outb(*t++, PEDR); -+ udelay(50); -+ *s++=ctrl_inb(PCDR); -+ *s++=ctrl_inb(PFDR); -+ } -+ -+ ctrl_outb(0xff, PDDR); -+ ctrl_outb(0xff, PEDR); -+ -+ *s++=ctrl_inb(PGDR); -+ *s++=ctrl_inb(PHDR); -+ -+ return 0; -+} -+ -+static struct scan_keyboard hp620_kbd = { -+ .scan = hp620_japanese_scan_kbd, -+ .table = hp620_japanese_table, -+ .length = 18, -+}; -+ -+static int __init hp620_kbd_init_hw(void) -+{ -+ printk(KERN_INFO "HP620 matrix scan keyboard registered\n"); -+ return register_scan_keyboard(&hp620_kbd); -+} -+ -+static void __exit hp620_kbd_exit_hw(void) -+{ -+ unregister_scan_keyboard(&hp620_kbd); -+} -+ -+module_init(hp620_kbd_init_hw); -+module_exit(hp620_kbd_exit_hw); -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/input/keyboard/hp680_keyb.c linux-2.6.17/drivers/input/keyboard/hp680_keyb.c ---- linux-2.6.17-vanilla/drivers/input/keyboard/hp680_keyb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/keyboard/hp680_keyb.c 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,152 @@ -+/* -+ * drivers/input/keyboard/hp680_keyb.c -+ * -+ * HP Jornada 680/690 scan keyboard -+ * -+ * Copyright (C) 2005 Andriy Skulysh -+ * Copyright (C) 2006 Paul Mundt -+ * -+ * Splited from drivers/input/keyboard/hp600_keyb.c -+ * -+ * Copyright (C) 2000 YAEGASHI Takeshi -+ * HP600 keyboard scan routine and translation table -+ * Copyright (C) 2000 Niibe Yutaka -+ * HP620 keyboard translation table -+ */ -+#include <linux/kernel.h> -+#include <linux/module.h> -+#include <linux/init.h> -+#include <asm/delay.h> -+#include <asm/io.h> -+#include "scan_keyb.h" -+ -+#define PCDR 0xa4000124 -+#define PDDR 0xa4000126 -+#define PEDR 0xa4000128 -+#define PFDR 0xa400012a -+#define PGDR 0xa400012c -+#define PHDR 0xa400012e -+#define PJDR 0xa4000130 -+#define PKDR 0xa4000132 -+#define PLDR 0xa4000134 -+ -+/**************************************************************** -+HP Jornada 690(Japanese version) keyboard scan matrix -+ -+ PTC7 PTC6 PTC5 PTC4 PTC3 PTC2 PTC1 PTC0 -+PTD1 REC Escape on/off Han/Zen Hira Eisu -+PTD5 REC Z on/off Enter : / -+PTD7 REC Right Down -+PTE0 REC Windows on/off -+PTE1 REC A on/off ] [ ; -+PTE3 REC Tab on/off ShirtR \ Up -+PTE6 REC Q on/off BS @ P -+PTE7 REC 1 on/off ^ - 0 -+ -+ PTF7 PTF6 PTF5 PTF4 PTF3 PTF2 PTF1 PTF0 -+PTD1 F5 F4 F6 F7 F8 F3 F2 F1 -+PTD5 N B M , . V C X -+PTD7 Muhen Alt Left -+PTE0 Henkan _ Del Space Ctrl -+PTE1 H G J K L F D S -+PTE3 ShiftL -+PTE6 Y T U I O R E W -+PTE7 6 5 7 8 9 4 3 2 -+ -+ PTG5 PTG4 PTG3 PTG0 PTH0 -+* REC REW FWW Cover on/off -+ -+ -+ 7 6 5 4 3 2 1 0 -+C: 0xffff 0xdf IP IP IP IP IP IP IP IP -+D: 0x6786 0x59 O I O IP I F O I -+E: 0x5045 0x00 O O F F O F O O -+F: 0xffff 0xff IP IP IP IP IP IP IP IP -+G: 0xaffe 0xfd I I IP IP IP IP IP I -+H: 0x70f2 0x49 O IP F F IP IP F I -+J: 0x0704 0x22 F F O IP F F O F -+K: 0x0100 0x10 F F F O F F F F -+L: 0x0c3c 0x26 F F IP F F IP IP F -+ -+****************************************************************/ -+ -+static const unsigned char hp680_japanese_table[] = { -+ /* PTD1 */ -+ 0x3a, 0x70, 0x29, 0x00, 0x01, 0x00, 0x00, 0x00, -+ 0x3b, 0x3c, 0x3d, 0x42, 0x41, 0x40, 0x3e, 0x3f, -+ /* PTD5 */ -+ 0x35, 0x28, 0x1c, 0x00, 0x2c, 0x00, 0x00, 0x00, -+ 0x2d, 0x2e, 0x2f, 0x34, 0x33, 0x32, 0x30, 0x31, -+ /* PTD7 */ -+ 0x50, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x38, 0x7b, -+ /* PTE0 */ -+ 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, -+ 0x1d, 0x00, 0x39, 0x53, 0x73, 0xf9, 0x00, 0x00, -+ /* PTE1 */ -+ 0x27, 0x1b, 0x2b, 0x00, 0x1e, 0x00, 0x00, 0x00, -+ 0x1f, 0x20, 0x21, 0x26, 0x25, 0x24, 0x22, 0x23, -+ /* PTE3 */ -+ 0x48, 0x7d, 0x36, 0x00, 0x0f, 0x00, 0x00, 0x00, -+ 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ /* PTE6 */ -+ 0x19, 0x1a, 0x0e, 0x00, 0x10, 0x00, 0x00, 0x00, -+ 0x11, 0x12, 0x13, 0x18, 0x17, 0x16, 0x14, 0x15, -+ /* PTE7 */ -+ 0x0b, 0x0c, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x00, -+ 0x03, 0x04, 0x05, 0x0a, 0x09, 0x08, 0x06, 0x07, -+ /* **** */ -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+}; -+ -+static int hp680_japanese_scan_kbd(unsigned char *s) -+{ -+ int i; -+ unsigned char matrix_switch[] = { -+ 0xfd, 0xff, /* PTD1 */ -+ 0xdf, 0xff, /* PTD5 */ -+ 0x7f, 0xff, /* PTD7 */ -+ 0xff, 0xfe, /* PTE0 */ -+ 0xff, 0xfd, /* PTE1 */ -+ 0xff, 0xf7, /* PTE3 */ -+ 0xff, 0xbf, /* PTE6 */ -+ 0xff, 0x7f, /* PTE7 */ -+ }, *t=matrix_switch; -+ -+ for(i=0; i<8; i++) { -+ ctrl_outb(*t++, PDDR); -+ ctrl_outb(*t++, PEDR); -+ *s++=ctrl_inb(PCDR); -+ *s++=ctrl_inb(PFDR); -+ } -+ -+ ctrl_outb(0xff, PDDR); -+ ctrl_outb(0xff, PEDR); -+ -+ *s++=ctrl_inb(PGDR); -+ *s++=ctrl_inb(PHDR); -+ -+ return 0; -+} -+ -+static struct scan_keyboard hp680_kbd = { -+ .scan = hp680_japanese_scan_kbd, -+ .table = hp680_japanese_table, -+ .length = 18, -+}; -+ -+static int __init hp680_kbd_init_hw(void) -+{ -+ printk(KERN_INFO "HP680 matrix scan keyboard registered\n"); -+ return register_scan_keyboard(&hp680_kbd); -+} -+ -+static void __exit hp680_kbd_exit_hw(void) -+{ -+ unregister_scan_keyboard(&hp680_kbd); -+} -+ -+module_init(hp680_kbd_init_hw); -+module_exit(hp680_kbd_exit_hw); -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/input/keyboard/scan_keyb.c linux-2.6.17/drivers/input/keyboard/scan_keyb.c ---- linux-2.6.17-vanilla/drivers/input/keyboard/scan_keyb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/keyboard/scan_keyb.c 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,148 @@ -+/* -+ * Generic scan keyboard driver -+ * -+ * Copyright (C) 2000 YAEGASHI Takeshi -+ * Copyright (C) 2003 Andriy Skulysh -+ * Copyright (C) 2006 Paul Mundt -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+ -+#include <linux/kernel.h> -+#include <linux/module.h> -+#include <linux/sched.h> -+#include <linux/init.h> -+#include <linux/slab.h> -+#include <linux/interrupt.h> -+#include <linux/kbd_kern.h> -+#include <linux/input.h> -+#include <linux/timer.h> -+#include "scan_keyb.h" -+ -+#define SCANHZ (HZ/20) -+ -+static int scan_jiffies; -+static struct scan_keyboard *keyboards; -+struct timer_list scan_timer; -+static char *hpkbd_name = "Hitachi scankeyboard"; -+static char *hpkbd_phys = "input0"; -+ -+static void check_kbd(struct scan_keyboard *kbd, -+ unsigned char *new, unsigned char *old) -+{ -+ const unsigned char *table = kbd->table; -+ int length = kbd->length; -+ int need_tasklet_schedule = 0; -+ unsigned int xor, bit; -+ -+ while (length-- > 0) { -+ if ((xor = *new ^ *old) == 0) -+ table += 8; -+ else { -+ for (bit = 0x01; bit < 0x100; bit <<= 1) { -+ if (xor & bit) { -+ input_report_key(kbd->dev, *table, -+ !(*new & bit)); -+ need_tasklet_schedule = 1; -+ } -+ -+ table++; -+ } -+ } -+ -+ new++; -+ old++; -+ } -+ -+ if (need_tasklet_schedule) { -+ input_sync(kbd->dev); -+ tasklet_schedule(&keyboard_tasklet); -+ } -+} -+ -+static void scan_kbd(unsigned long dummy) -+{ -+ struct scan_keyboard *kbd; -+ -+ scan_jiffies++; -+ -+ for (kbd = keyboards; kbd != NULL; kbd = kbd->next) { -+ if (scan_jiffies & 1) { -+ if (!kbd->scan(kbd->s0)) -+ check_kbd(kbd, kbd->s0, kbd->s1); -+ else -+ memcpy(kbd->s0, kbd->s1, kbd->length); -+ } else { -+ if (!kbd->scan(kbd->s1)) -+ check_kbd(kbd, kbd->s1, kbd->s0); -+ else -+ memcpy(kbd->s1, kbd->s0, kbd->length); -+ } -+ } -+ -+ mod_timer(&scan_timer, jiffies + SCANHZ); -+} -+ -+int register_scan_keyboard(struct scan_keyboard *kbd) -+{ -+ int i; -+ -+ kbd->s0 = kmalloc(kbd->length, GFP_KERNEL); -+ if (kbd->s0 == NULL) -+ goto error; -+ -+ kbd->s1 = kmalloc(kbd->length, GFP_KERNEL); -+ if (kbd->s1 == NULL) -+ goto error; -+ -+ memset(kbd->s0, -1, kbd->length); -+ memset(kbd->s1, -1, kbd->length); -+ -+ kbd->dev = input_allocate_device(); -+ if (!kbd->dev) -+ goto error; -+ -+ kbd->dev->name = hpkbd_name; -+ kbd->dev->phys = hpkbd_phys; -+ kbd->dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP); -+ init_input_dev(kbd->dev); -+ kbd->dev->keycode = (unsigned char *)kbd->table; -+ kbd->dev->keycodesize = sizeof(unsigned char); -+ kbd->dev->keycodemax = ARRAY_SIZE(kbd->table); -+ -+ for (i = 0; i < 128; i++) -+ if (kbd->table[i]) -+ set_bit(kbd->table[i], kbd->dev->keybit); -+ -+ clear_bit(0, kbd->dev->keybit); -+ input_register_device(kbd->dev); -+ -+ kbd->next = keyboards; -+ keyboards = kbd; -+ -+ init_timer(&scan_timer); -+ scan_timer.expires = jiffies + SCANHZ; -+ scan_timer.data = 0; -+ scan_timer.function = scan_kbd; -+ add_timer(&scan_timer); -+ -+ return 0; -+ -+error: -+ kfree(kbd->s1); -+ kfree(kbd->s0); -+ -+ return -ENOMEM; -+} -+EXPORT_SYMBOL_GPL(register_scan_keyboard); -+ -+void unregister_scan_keyboard(struct scan_keyboard *kbd) -+{ -+ del_timer_sync(&scan_timer); -+ keyboards = kbd->next; -+ input_unregister_device(kbd->dev); -+ input_free_device(kbd->dev); -+} -+EXPORT_SYMBOL_GPL(unregister_scan_keyboard); -diff -ruN linux-2.6.17-vanilla/drivers/input/keyboard/scan_keyb.h linux-2.6.17/drivers/input/keyboard/scan_keyb.h ---- linux-2.6.17-vanilla/drivers/input/keyboard/scan_keyb.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/keyboard/scan_keyb.h 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,16 @@ -+#ifndef __DRIVER_CHAR_SCAN_KEYB_H -+#define __DRIVER_CHAR_SCAN_KEYB_H -+ -+struct scan_keyboard { -+ struct scan_keyboard *next; -+ int (*scan)(unsigned char *buffer); -+ const unsigned char *table; -+ unsigned char *s0, *s1; -+ int length; -+ struct input_dev *dev; -+}; -+ -+int register_scan_keyboard(struct scan_keyboard *); -+void unregister_scan_keyboard(struct scan_keyboard *); -+ -+#endif -diff -ruN linux-2.6.17-vanilla/drivers/input/touchscreen/CVS/Entries linux-2.6.17/drivers/input/touchscreen/CVS/Entries ---- linux-2.6.17-vanilla/drivers/input/touchscreen/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/touchscreen/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,2 @@ -+/hp680_ts_input.c/1.3/Sun Jan 29 22:13:39 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/input/touchscreen/CVS/Repository linux-2.6.17/drivers/input/touchscreen/CVS/Repository ---- linux-2.6.17-vanilla/drivers/input/touchscreen/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/touchscreen/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/input/touchscreen -diff -ruN linux-2.6.17-vanilla/drivers/input/touchscreen/CVS/Root linux-2.6.17/drivers/input/touchscreen/CVS/Root ---- linux-2.6.17-vanilla/drivers/input/touchscreen/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/input/touchscreen/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/input/touchscreen/hp680_ts_input.c linux-2.6.17/drivers/input/touchscreen/hp680_ts_input.c ---- linux-2.6.17-vanilla/drivers/input/touchscreen/hp680_ts_input.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/input/touchscreen/hp680_ts_input.c 2006-07-12 16:54:24.000000000 +0000 -@@ -15,7 +15,6 @@ - #define HP680_TS_ABS_Y_MIN 80 - #define HP680_TS_ABS_Y_MAX 910 - --#define SCPCR 0xa4000116 - #define PHDR 0xa400012e - #define SCPDR 0xa4000136 - -@@ -77,19 +76,6 @@ - - static int __init hp680_ts_init(void) - { -- u8 scpdr; -- u16 scpcr; -- -- scpdr = ctrl_inb(SCPDR); -- scpdr |= SCPDR_TS_SCAN_X | SCPDR_TS_SCAN_Y; -- scpdr &= ~SCPDR_TS_SCAN_ENABLE; -- ctrl_outb(scpdr, SCPDR); -- -- scpcr = ctrl_inw(SCPCR); -- scpcr &= ~SCPCR_TS_MASK; -- scpcr |= SCPCR_TS_ENABLE; -- ctrl_outw(scpcr, SCPCR); -- - hp680_ts_dev = input_allocate_device(); - if (!hp680_ts_dev) - return -ENOMEM; -diff -ruN linux-2.6.17-vanilla/drivers/mtd/CVS/Entries linux-2.6.17/drivers/mtd/CVS/Entries ---- linux-2.6.17-vanilla/drivers/mtd/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,2 @@ -+/mtdpart.c/1.11/Tue Jan 3 22:35:56 2006/-ko/ -+D/maps//// -diff -ruN linux-2.6.17-vanilla/drivers/mtd/CVS/Repository linux-2.6.17/drivers/mtd/CVS/Repository ---- linux-2.6.17-vanilla/drivers/mtd/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/mtd -diff -ruN linux-2.6.17-vanilla/drivers/mtd/CVS/Root linux-2.6.17/drivers/mtd/CVS/Root ---- linux-2.6.17-vanilla/drivers/mtd/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/mtd/maps/CVS/Entries linux-2.6.17/drivers/mtd/maps/CVS/Entries ---- linux-2.6.17-vanilla/drivers/mtd/maps/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/maps/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Kconfig/1.18/Mon Mar 27 21:06:14 2006/-ko/ -+/Makefile/1.16/Mon Mar 27 21:06:14 2006/-ko/ -+/microdev-flash.c/1.1/Thu Mar 17 11:42:48 2005/-ko/ -+/rts7751r2d-flash.c/1.2/Thu Mar 17 11:42:48 2005/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/mtd/maps/CVS/Repository linux-2.6.17/drivers/mtd/maps/CVS/Repository ---- linux-2.6.17-vanilla/drivers/mtd/maps/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/maps/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/mtd/maps -diff -ruN linux-2.6.17-vanilla/drivers/mtd/maps/CVS/Root linux-2.6.17/drivers/mtd/maps/CVS/Root ---- linux-2.6.17-vanilla/drivers/mtd/maps/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/maps/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/mtd/maps/Kconfig linux-2.6.17/drivers/mtd/maps/Kconfig ---- linux-2.6.17-vanilla/drivers/mtd/maps/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/maps/Kconfig 2006-07-12 16:54:24.000000000 +0000 -@@ -409,11 +409,37 @@ - - config MTD_SOLUTIONENGINE - tristate "CFI Flash device mapped on Hitachi SolutionEngine" -- depends on SUPERH && MTD_CFI && MTD_REDBOOT_PARTS -+ depends on SUPERH && MTD_CFI - help - This enables access to the flash chips on the Hitachi SolutionEngine and - similar boards. Say 'Y' if you are building a kernel for such a board. - -+config MTD_SUPERH_RESERVE -+ hex "Default reserved Flash size" -+ depends on MTD_SOLUTIONENGINE -+ default 300000 -+ help -+ The reserved memory is used by kernel and ram disk themselves. It's -+ starting from 0. -+ -+config MTD_MPC1211 -+ tristate "CFI Flash device mapped on Interface MPC-1211" -+ depends on SUPERH && SH_MPC1211 && MTD_CFI -+ help -+ This enables access to the flash chips on the Interface MPC-1211(CTP/PCI/MPC-SH02). -+ Say 'Y' if you are building a kernel for such a board. -+ -+config MTD_RTS7751R2D -+ tristate "CFI Flash device mapped on Renesas RTS7751R2D" -+ depends on SUPERH && SH_RTS7751R2D && MTD_CFI && MTD_PARTITIONS -+ help -+ This enables access to the flash chips on the Renesas Technology Sales RTS7751R2D. -+ Say 'Y' if you are building a kernel for such a board. -+ -+config MTD_MICRODEV -+ tristate "CFI Flash device mapped on SuperH SH4-202 MicroDev" -+ depends on SUPERH && SH_SH4202_MICRODEV && MTD_CFI && MTD_PARTITIONS -+ - config MTD_ARM_INTEGRATOR - tristate "CFI Flash device mapped on ARM Integrator/P720T" - depends on ARM && MTD_CFI -diff -ruN linux-2.6.17-vanilla/drivers/mtd/maps/Makefile linux-2.6.17/drivers/mtd/maps/Makefile ---- linux-2.6.17-vanilla/drivers/mtd/maps/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/maps/Makefile 2006-07-12 16:54:24.000000000 +0000 -@@ -62,6 +62,7 @@ - obj-$(CONFIG_MTD_SBC8240) += sbc8240.o - obj-$(CONFIG_MTD_NOR_TOTO) += omap-toto-flash.o - obj-$(CONFIG_MTD_MPC1211) += mpc1211.o -+obj-$(CONFIG_MTD_RTS7751R2D) += rts7751r2d-flash.o - obj-$(CONFIG_MTD_IXP4XX) += ixp4xx.o - obj-$(CONFIG_MTD_IXP2000) += ixp2000.o - obj-$(CONFIG_MTD_WRSBC8260) += wr_sbc82xx_flash.o -@@ -69,5 +70,6 @@ - obj-$(CONFIG_MTD_SHARP_SL) += sharpsl-flash.o - obj-$(CONFIG_MTD_PLATRAM) += plat-ram.o - obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o -+obj-$(CONFIG_MTD_MICRODEV) += microdev-flash.o - obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o - obj-$(CONFIG_MTD_TQM834x) += tqm834x.o -diff -ruN linux-2.6.17-vanilla/drivers/mtd/maps/microdev-flash.c linux-2.6.17/drivers/mtd/maps/microdev-flash.c ---- linux-2.6.17-vanilla/drivers/mtd/maps/microdev-flash.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/maps/microdev-flash.c 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,165 @@ -+/* -+ * drivers/mtd/maps/microdev-flash.c -+ * -+ * Flash Mapping for the SuperH SH4-202 MicroDev. -+ * -+ * Copyright (C) 2004 SuperH, Inc. -+ * Copyright (C) 2004 Paul Mundt -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/module.h> -+#include <linux/init.h> -+#include <linux/kernel.h> -+#include <linux/types.h> -+#include <linux/mtd/mtd.h> -+#include <linux/mtd/map.h> -+#include <linux/mtd/partitions.h> -+#include <asm/io.h> -+ -+/* -+ * The SH4-202 MicroDev has 32M of Intel StrataFlash mapped into the -+ * beginning of the FEMI address space (mapped to P0). MicroDev flash -+ * consists of 2x16M chips, mapped contiguously, and accessed with a -+ * 32-bit buswidth. -+ * -+ * Additionally, the MicroDev also supports booting from an EEPROM. -+ * In the event that the EEPROM is configured, it is mapped in the -+ * same address space window as the StrataFlash. As such, we can only -+ * use one at a time. -+ * -+ * Since the EEPROM is only accessible with an 8-bit buswidth, flash -+ * is preferrable as far as performance is concerned. -+ */ -+struct map_info microdev_flash_map = { -+ .name = "MicroDev Flash", -+ .size = 0x02000000, -+ .bankwidth = 4, -+}; -+ -+struct map_info microdev_eeprom_map = { -+ .name = "MicroDev EEPROM", -+ .size = 0x00100000, -+ .bankwidth = 1, -+}; -+ -+static const char *probes[] = { "RedBoot", "cmdlinepart", NULL }; -+static struct mtd_partition *parsed_parts; -+ -+/* -+ * Default partition map. -+ */ -+static struct mtd_partition microdev_partitions[] = { -+#ifdef CONFIG_MTD_PARTITIONS -+ { -+ .name = "bootloader", -+ .size = 0x00080000, -+ .mask_flags = MTD_WRITEABLE, /* force read-only */ -+ }, { -+ .name = "User FS", -+ .offset = MTDPART_OFS_APPEND, -+ .size = MTDPART_SIZ_FULL, -+ }, -+#endif -+}; -+ -+static struct mtd_info *microdev_flash; -+static struct mtd_info *microdev_eeprom; -+static struct mtd_info *microdev_mtd; -+ -+static void show_map_info(struct map_info *info) -+{ -+ unsigned long addr; -+ -+ if (!info) -+ return; -+ -+ addr = info->phys & 0x1fffffff; -+ -+ printk(KERN_NOTICE "%s at 0x%08lx:0x%08lx, using a %d-bit bankwidth.\n", -+ info->name, addr, addr + info->size, info->bankwidth << 3); -+} -+ -+static int __init microdev_map_init(void) -+{ -+ struct mtd_partition *parts; -+ int nr_parts, parsed_nr_parts; -+ -+ /* Flash mapped at FEMI area 0 */ -+ microdev_flash_map.phys = 0; -+ microdev_flash_map.virt = (void __iomem *)P2SEGADDR(0); -+ -+ /* EEPROM mapped in the same place */ -+ microdev_eeprom_map.phys = 0; -+ microdev_eeprom_map.virt = (void __iomem *)P2SEGADDR(0); -+ -+ simple_map_init(µdev_flash_map); -+ simple_map_init(µdev_eeprom_map); -+ -+ /* Try the flash first */ -+ printk(KERN_NOTICE "MicroDev flash: probing for flash chips at 0x00000000:\n"); -+ microdev_flash = do_map_probe("cfi_probe", µdev_flash_map); -+ if (!microdev_flash) { -+ printk(KERN_NOTICE "Flash chips not detected, probing for EEPROM\n"); -+ -+ /* No luck, try EEPROM */ -+ microdev_eeprom = do_map_probe("map_rom", µdev_eeprom_map); -+ if (!microdev_eeprom) { -+ /* Nope.. */ -+ printk(KERN_ERR "nothing found\n"); -+ return -ENXIO; -+ } -+ } -+ -+ if (microdev_flash) { -+ microdev_mtd = microdev_flash; -+ show_map_info(µdev_flash_map); -+ } else { -+ microdev_mtd = microdev_eeprom; -+ show_map_info(µdev_eeprom_map); -+ } -+ -+ microdev_mtd->owner = THIS_MODULE; -+ -+ /* Start out with a static map.. */ -+ parts = microdev_partitions; -+ nr_parts = ARRAY_SIZE(microdev_partitions); -+ -+#ifdef CONFIG_MTD_PARTITIONS -+ /* Try to parse the partitions */ -+ parsed_nr_parts = parse_mtd_partitions(microdev_mtd, probes, &parsed_parts, 0); -+ if (parsed_nr_parts > 0) { -+ parts = parsed_parts; -+ nr_parts = parsed_nr_parts; -+ } -+#endif -+ -+ if (nr_parts > 0) { -+ add_mtd_partitions(microdev_mtd, parts, nr_parts); -+ } else { -+ add_mtd_device(microdev_mtd); -+ } -+ -+ return 0; -+} -+ -+static void __exit microdev_map_exit(void) -+{ -+ if (parsed_parts) { -+ del_mtd_partitions(microdev_mtd); -+ } else { -+ del_mtd_device(microdev_mtd); -+ } -+ -+ map_destroy(microdev_mtd); -+} -+ -+module_init(microdev_map_init); -+module_exit(microdev_map_exit); -+ -+MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>"); -+MODULE_DESCRIPTION("MTD map driver for SuperH SH4-202 MicroDev"); -+MODULE_LICENSE("GPL"); -+ -diff -ruN linux-2.6.17-vanilla/drivers/mtd/maps/rts7751r2d-flash.c linux-2.6.17/drivers/mtd/maps/rts7751r2d-flash.c ---- linux-2.6.17-vanilla/drivers/mtd/maps/rts7751r2d-flash.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/maps/rts7751r2d-flash.c 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,167 @@ -+/* -------------------------------------------------------------------- */ -+/* rts7751r2d-flash.c: */ -+/* -------------------------------------------------------------------- */ -+/* This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ -+ Copyright 2003 (c) Lineo uSolutions,Inc. -+*/ -+/* -------------------------------------------------------------------- */ -+ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/types.h> -+#include <linux/kernel.h> -+#include <linux/init.h> -+ -+#include <linux/mtd/mtd.h> -+#include <linux/mtd/map.h> -+#include <linux/mtd/partitions.h> -+ -+#include <asm/io.h> -+ -+#undef FLASH4M_16BIT -+#define FLASH16M_16BIT -+ -+#if defined(FLASH4M_16BIT) -+#define RTS7751R2D_FLASH_SIZE 0x00100000 -+#else -+#define RTS7751R2D_FLASH_SIZE 0x01000000 -+#endif -+ -+static struct map_info rts7751r2d_map = { -+ .name = "SH-Graphic flash", -+ .bankwidth = 2, -+ .size = RTS7751R2D_FLASH_SIZE, -+}; -+ -+/* -+ * Here are partition information for all known SH-Graphic based devices. -+ * See include/linux/mtd/partitions.h for definition of the mtd_partition -+ * structure. -+ * -+ * The *_max_flash_size is the maximum possible mapped flash size which -+ * is not necessarily the actual flash size. It must correspond to the -+ * value specified in the mapping definition defined by the -+ * "struct map_desc *_io_desc" for the corresponding machine. -+ */ -+ -+#if defined(FLASH4M_16BIT) -+static struct mtd_partition rts7751r2d_partitions[] = { -+ { -+ .name = "bootloader", -+ .size = 0x00080000, -+ .offset = 0xa0000000, -+ .mask_flags = MTD_WRITEABLE, /* force read-only */ -+ },{ -+ .name = "SH-Graphic jffs", -+ .size = 0x00080000, -+ .offset = 0xa0080000, -+ } -+}; -+#else -+static struct mtd_partition rts7751r2d_partitions[] = { -+ { -+ .name = "bootloader", -+ .size = 0x00020000, -+ .offset = 0x00000000, -+ .mask_flags = MTD_WRITEABLE, /* force read-only */ -+ },{ -+ .name = "mtdblock1", -+ .size = 0x00300000, -+ .offset = 0x00020000, -+ },{ -+ .name = "mtdblock2", -+ .size = 0x004e0000, -+ .offset = 0x00320000, -+ },{ -+ .name = "mtdblock3", -+ .size = 0x00800000, -+ .offset = 0x00800000, -+ } -+}; -+#endif -+ -+static struct mtd_partition *parsed_parts; -+static struct mtd_info *mymtd; -+ -+int __init rts7751r2d_mtd_init(void) -+{ -+ struct mtd_partition *parts; -+ int nb_parts = 0; -+ int parsed_nr_parts = 0; -+ char *part_type; -+ -+ /* Default flash buswidth */ -+ -+ /* -+ * Static partition definition selection -+ */ -+ part_type = "static"; -+ parts = rts7751r2d_partitions; -+ -+ nb_parts = ARRAY_SIZE(rts7751r2d_partitions); -+ rts7751r2d_map.phys = 0; -+ rts7751r2d_map.virt = P2SEGADDR(0); -+ -+ /* -+ * Now let's probe for the actual flash. Do it here since -+ * specific machine settings might have been set above. -+ */ -+ printk(KERN_NOTICE "RTS7751R2D flash: probing %d-bit flash bus\n", -+ rts7751r2d_map.bankwidth*8); -+ simple_map_init(&rts7751r2d_map); -+ -+ mymtd = do_map_probe("cfi_probe", &rts7751r2d_map); -+ if (!mymtd) -+ return -ENXIO; -+ -+ mymtd->owner = THIS_MODULE; -+ mymtd->erasesize = 0x10000; -+ -+ /* -+ * Dynamic partition selection stuff (might override the static ones) -+ */ -+ -+ if (parsed_nr_parts > 0) { -+ parts = parsed_parts; -+ nb_parts = parsed_nr_parts; -+ } -+ -+ if (nb_parts == 0) { -+ printk(KERN_NOTICE "RTS7751R2D partition info available, registering whole flash at once\n"); -+ add_mtd_device(mymtd); -+ } else { -+ printk(KERN_NOTICE "Using %s partition definition\n", part_type); -+ add_mtd_partitions(mymtd, parts, nb_parts); -+ } -+ return 0; -+} -+ -+static void __exit rts7751r2d_mtd_cleanup(void) -+{ -+ if (mymtd) { -+ del_mtd_partitions(mymtd); -+ map_destroy(mymtd); -+ if (parsed_parts) -+ kfree(parsed_parts); -+ } -+} -+ -+module_init(rts7751r2d_mtd_init); -+module_exit(rts7751r2d_mtd_cleanup); -+ -+MODULE_LICENSE("GPL"); -+MODULE_AUTHOR("Lineo uSolutions,Inc."); -+MODULE_DESCRIPTION("MTD map driver for RTS7751R2D base board"); -diff -ruN linux-2.6.17-vanilla/drivers/mtd/mtdpart.c linux-2.6.17/drivers/mtd/mtdpart.c ---- linux-2.6.17-vanilla/drivers/mtd/mtdpart.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/mtd/mtdpart.c 2006-07-12 16:54:24.000000000 +0000 -@@ -481,6 +481,14 @@ - printk (KERN_NOTICE "0x%08x-0x%08x : \"%s\"\n", slave->offset, - slave->offset + slave->mtd.size, slave->mtd.name); - -+#ifdef CONFIG_SUPERH -+ /* -+ * slave->offset contains a P2 address, this confuses the rest -+ * of the sanity checks, so kick it back down to P0. -+ */ -+ slave->offset &= 0x1fffffff; -+#endif -+ - /* let's do some sanity checks */ - if (slave->offset >= master->size) { - /* let's register it anyway to preserve ordering */ -diff -ruN linux-2.6.17-vanilla/drivers/net/8139too.c linux-2.6.17/drivers/net/8139too.c ---- linux-2.6.17-vanilla/drivers/net/8139too.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/net/8139too.c 2006-07-12 16:54:24.000000000 +0000 -@@ -257,7 +257,7 @@ - {0x018a, 0x0106, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, - {0x126c, 0x1211, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, - {0x1743, 0x8139, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, -- {0x021b, 0x8139, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, -+ {0x021b, 0x8139, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, - - #ifdef CONFIG_SH_SECUREEDGE5410 - /* Bogus 8139 silicon reports 8129 without external PROM :-( */ -@@ -970,11 +970,17 @@ - ioaddr = tp->mmio_addr; - assert (ioaddr != NULL); - -+#ifdef CONFIG_SH_SECUREEDGE5410 -+ /* Don't rely on the eeprom, get MAC from chip. */ -+ for (i = 0; i < 6; i++) -+ dev->dev_addr[i] = readb(ioaddr + MAC0 + i); -+#else - addr_len = read_eeprom (ioaddr, 0, 8) == 0x8129 ? 8 : 6; - for (i = 0; i < 3; i++) - ((u16 *) (dev->dev_addr))[i] = - le16_to_cpu (read_eeprom (ioaddr, i + 7, addr_len)); - memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len); -+#endif - - /* The Rtl8139-specific entries in the device structure. */ - dev->open = rtl8139_open; -diff -ruN linux-2.6.17-vanilla/drivers/net/8390.c linux-2.6.17/drivers/net/8390.c ---- linux-2.6.17-vanilla/drivers/net/8390.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/net/8390.c 2006-07-12 16:54:24.000000000 +0000 -@@ -108,6 +108,13 @@ - int ei_debug = 1; - #endif - -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+#ifdef ETH_ZLEN -+#undef ETH_ZLEN -+#define ETH_ZLEN 64 -+#endif -+#endif -+ - /* Index to functions. */ - static void ei_tx_intr(struct net_device *dev); - static void ei_tx_err(struct net_device *dev); -@@ -938,7 +945,11 @@ - */ - - if (netif_running(dev)) -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ outb_p(E8390_RXCONFIG | 0x40, e8390_base + EN0_RXCR); -+#else - outb_p(E8390_RXCONFIG, e8390_base + EN0_RXCR); -+#endif - outb_p(E8390_NODMA + E8390_PAGE1, e8390_base + E8390_CMD); - for(i = 0; i < 8; i++) - { -@@ -951,11 +962,23 @@ - outb_p(E8390_NODMA + E8390_PAGE0, e8390_base + E8390_CMD); - - if(dev->flags&IFF_PROMISC) -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ outb_p(E8390_RXCONFIG | 0x40 | 0x18, e8390_base + EN0_RXCR); -+#else - outb_p(E8390_RXCONFIG | 0x18, e8390_base + EN0_RXCR); -+#endif - else if(dev->flags&IFF_ALLMULTI || dev->mc_list) -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ outb_p(E8390_RXCONFIG | 0x40 | 0x08, e8390_base + EN0_RXCR); -+#else - outb_p(E8390_RXCONFIG | 0x08, e8390_base + EN0_RXCR); -+#endif - else -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ outb_p(E8390_RXCONFIG | 0x40, e8390_base + EN0_RXCR); -+#else - outb_p(E8390_RXCONFIG, e8390_base + EN0_RXCR); -+#endif - } - - /* -@@ -1029,8 +1052,13 @@ - struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev); - int i; - int endcfg = ei_local->word16 -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ ? (0x00 | ENDCFG_WTS | (ei_local->bigendian ? ENDCFG_BOS : 0)) -+ : 0x00; -+#else - ? (0x48 | ENDCFG_WTS | (ei_local->bigendian ? ENDCFG_BOS : 0)) - : 0x48; -+#endif - - if(sizeof(struct e8390_pkt_hdr)!=4) - panic("8390.c: header struct mispacked\n"); -@@ -1041,7 +1069,11 @@ - outb_p(0x00, e8390_base + EN0_RCNTLO); - outb_p(0x00, e8390_base + EN0_RCNTHI); - /* Set to monitor and loopback mode -- this is vital!. */ -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ outb_p(E8390_RXOFF | 0x40, e8390_base + EN0_RXCR); /* 0x20 */ -+#else - outb_p(E8390_RXOFF, e8390_base + EN0_RXCR); /* 0x20 */ -+#endif - outb_p(E8390_TXOFF, e8390_base + EN0_TXCR); /* 0x02 */ - /* Set the transmit page and receive ring. */ - outb_p(ei_local->tx_start_page, e8390_base + EN0_TPSR); -@@ -1078,7 +1110,11 @@ - outb_p(E8390_NODMA+E8390_PAGE0+E8390_START, e8390_base+E8390_CMD); - outb_p(E8390_TXCONFIG, e8390_base + EN0_TXCR); /* xmit on. */ - /* 3c503 TechMan says rxconfig only after the NIC is started. */ -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ outb_p(E8390_RXCONFIG | 0x40, e8390_base + EN0_RXCR); /* rx on, */ -+#else - outb_p(E8390_RXCONFIG, e8390_base + EN0_RXCR); /* rx on, */ -+#endif - do_set_multicast_list(dev); /* (re)load the mcast table */ - } - } -diff -ruN linux-2.6.17-vanilla/drivers/net/88796l.c linux-2.6.17/drivers/net/88796l.c ---- linux-2.6.17-vanilla/drivers/net/88796l.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/net/88796l.c 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,95 @@ -+#define NE_EEPROM 0x14 -+ -+static inline void delay(void); -+static unsigned char asix88796_eeprom_getbit(int ioaddr); -+static void asix88796_eeprom_send(int ioaddr, int value); -+static unsigned short asix88796_eeprom_get(int ioaddr); -+static void asix88796_eeprom_setaddr(int ioaddr, int addr); -+static void asix88796_eeprom_command(int ioaddr); -+static void asix88796_eeprom_read(int ioaddr, unsigned char *buff); -+ -+static inline void delay(void) -+{ -+ ctrl_inw(0xa0000000); -+} -+ -+static unsigned char asix88796_eeprom_getbit(int ioaddr) -+{ -+ unsigned char value; -+ -+ outb(inb(ioaddr + NE_EEPROM) & 0x7f, ioaddr + NE_EEPROM); -+ delay(); -+ value = (inb(ioaddr + NE_EEPROM) & 0x40) >> 6; -+ outb(inb(ioaddr + NE_EEPROM) | 0x80, ioaddr + NE_EEPROM); -+ delay(); -+ -+ return value; -+} -+ -+static void asix88796_eeprom_send(int ioaddr, int value) -+{ -+ if (value) -+ outb(inb(ioaddr + NE_EEPROM) | 0x20, ioaddr + NE_EEPROM); -+ else -+ outb(inb(ioaddr + NE_EEPROM) & 0xdf, ioaddr + NE_EEPROM); -+ outb(inb(ioaddr + NE_EEPROM) & 0x7f, ioaddr + NE_EEPROM); -+ delay(); -+ outb(inb(ioaddr + NE_EEPROM) | 0x80, ioaddr + NE_EEPROM); -+ delay(); -+ outb(inb(ioaddr + NE_EEPROM) & 0xdf, ioaddr + NE_EEPROM); -+} -+ -+static unsigned short asix88796_eeprom_get(int ioaddr) -+{ -+ unsigned short value = 0; -+ int i; -+ -+ asix88796_eeprom_getbit(ioaddr); -+ for (i=0; i<16; i++) { -+ value <<= 1; -+ value |= asix88796_eeprom_getbit(ioaddr); -+ } -+ -+ return value; -+} -+ -+static void asix88796_eeprom_setaddr(int ioaddr, int addr) -+{ -+ asix88796_eeprom_send(ioaddr, addr & 0x0080); -+ asix88796_eeprom_send(ioaddr, addr & 0x0040); -+ asix88796_eeprom_send(ioaddr, addr & 0x0020); -+ asix88796_eeprom_send(ioaddr, addr & 0x0010); -+ asix88796_eeprom_send(ioaddr, addr & 0x0008); -+ asix88796_eeprom_send(ioaddr, addr & 0x0004); -+ asix88796_eeprom_send(ioaddr, addr & 0x0002); -+ asix88796_eeprom_send(ioaddr, addr & 0x0001); -+} -+ -+static void asix88796_eeprom_command(int ioaddr) -+{ -+ asix88796_eeprom_send(ioaddr, 0); -+ asix88796_eeprom_send(ioaddr, 1); -+ asix88796_eeprom_send(ioaddr, 1); -+ asix88796_eeprom_send(ioaddr, 0); -+} -+ -+static void asix88796_eeprom_read(int ioaddr, unsigned char *buff) -+{ -+ int i; -+ int addr = 0; -+ unsigned short value; -+ -+ for (i=0; i<3; i++) { -+ outb(inb(ioaddr + NE_EEPROM) | 0x10, ioaddr + NE_EEPROM); -+ outb(inb(ioaddr + NE_EEPROM) & 0xdf, ioaddr + NE_EEPROM); -+ delay(); -+ asix88796_eeprom_command(ioaddr); -+ asix88796_eeprom_setaddr(ioaddr, addr++); -+ value = asix88796_eeprom_get(ioaddr); -+ *buff++ = (unsigned char)(value & 0xff); -+ *buff++ = (unsigned char)((value >> 8) & 0xff); -+ outb(inb(ioaddr + NE_EEPROM) & 0x7f, ioaddr + NE_EEPROM); -+ outb(inb(ioaddr + NE_EEPROM) & 0xdf, ioaddr + NE_EEPROM); -+ outb(inb(ioaddr + NE_EEPROM) & 0xef, ioaddr + NE_EEPROM); -+ } -+} -diff -ruN linux-2.6.17-vanilla/drivers/net/CVS/Entries linux-2.6.17/drivers/net/CVS/Entries ---- linux-2.6.17-vanilla/drivers/net/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/net/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,7 @@ -+/8390.c/1.9/Sat Jan 7 20:02:47 2006/-ko/ -+/88796l.c/1.1/Sat Jan 7 20:02:47 2006/-ko/ -+/stnic.c/1.7/Wed Jan 4 17:53:54 2006/-ko/ -+/8139too.c/1.51/Wed Jul 5 14:51:19 2006/-ko/ -+/Kconfig/1.27/Wed Jul 5 14:51:19 2006/-ko/ -+/ne.c/1.10/Wed Jul 5 14:51:19 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/net/CVS/Repository linux-2.6.17/drivers/net/CVS/Repository ---- linux-2.6.17-vanilla/drivers/net/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/net/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/net -diff -ruN linux-2.6.17-vanilla/drivers/net/CVS/Root linux-2.6.17/drivers/net/CVS/Root ---- linux-2.6.17-vanilla/drivers/net/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/net/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/net/Kconfig linux-2.6.17/drivers/net/Kconfig ---- linux-2.6.17-vanilla/drivers/net/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/net/Kconfig 2006-07-12 16:54:24.000000000 +0000 -@@ -1078,7 +1078,7 @@ - - config NE2000 - tristate "NE2000/NE1000 support" -- depends on NET_ISA || (Q40 && m) || M32R -+ depends on NET_ISA || (Q40 && m) || M32R || SUPERH - select CRC32 - ---help--- - If you have a network (Ethernet) card of this type, say Y and read -diff -ruN linux-2.6.17-vanilla/drivers/net/ne.c linux-2.6.17/drivers/net/ne.c ---- linux-2.6.17-vanilla/drivers/net/ne.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/net/ne.c 2006-07-12 16:54:24.000000000 +0000 -@@ -142,6 +142,10 @@ - #elif defined(CONFIG_PLAT_OAKS32R) || \ - defined(CONFIG_TOSHIBA_RBTX4927) || defined(CONFIG_TOSHIBA_RBTX4938) - # define DCR_VAL 0x48 /* 8-bit mode */ -+#elif defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || \ -+ defined(CONFIG_SH_R7780RP) -+# include "88796l.c" -+# define DCR_VAL 0x01 - #else - # define DCR_VAL 0x49 - #endif -@@ -191,6 +195,11 @@ - - SET_MODULE_OWNER(dev); - -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ base_addr = AX88796L_IO_BASE; -+ dev->irq = IRQ_ONETH; -+#endif -+ - /* First check any supplied i/o locations. User knows best. <cough> */ - if (base_addr > 0x1ff) /* Check a single specified location. */ - return ne_probe1(dev, base_addr); -@@ -324,7 +333,11 @@ - if (ei_debug && version_printed++ == 0) - printk(KERN_INFO "%s" KERN_INFO "%s", version1, version2); - -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ printk(KERN_INFO "ASIX AX88796L ethercard probe at %#3x:", ioaddr); -+#else - printk(KERN_INFO "NE*000 ethercard probe at %#3x:", ioaddr); -+#endif - - /* A user with a poor card that fails to ack the reset, or that - does not have a valid 0x57,0x57 signature can still use this -@@ -365,12 +378,20 @@ - struct {unsigned char value, offset; } program_seq[] = - { - {E8390_NODMA+E8390_PAGE0+E8390_STOP, E8390_CMD}, /* Select page 0*/ -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ {0x00, EN0_DCFG}, /* Set byte-wide (0x00) access. */ -+#else - {0x48, EN0_DCFG}, /* Set byte-wide (0x48) access. */ -+#endif - {0x00, EN0_RCNTLO}, /* Clear the count regs. */ - {0x00, EN0_RCNTHI}, - {0x00, EN0_IMR}, /* Mask completion irq. */ - {0xFF, EN0_ISR}, -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ {E8390_RXOFF|0x40, EN0_RXCR}, /* 0x60 Set to monitor */ -+#else - {E8390_RXOFF, EN0_RXCR}, /* 0x20 Set to monitor */ -+#endif - {E8390_TXOFF, EN0_TXCR}, /* 0x02 and loopback mode. */ - {32, EN0_RCNTLO}, - {0x00, EN0_RCNTHI}, -@@ -395,6 +416,9 @@ - for (i = 0; i < 16; i++) - SA_prom[i] = SA_prom[i+i]; - /* We must set the 8390 for word mode. */ -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ asix88796_eeprom_read(ioaddr, SA_prom); -+#endif - outb_p(DCR_VAL, ioaddr + EN0_DCFG); - start_page = NESM_START_PG; - -@@ -426,7 +450,11 @@ - - /* Set up the rest of the parameters. */ - if (neX000 || bad_card || copam) { -+#if defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R77703DRP) || defined(CONFIG_SH_R7780RP) -+ name = (wordlength == 2) ? "AX88796L" : "NE1000"; -+#else - name = (wordlength == 2) ? "NE2000" : "NE1000"; -+#endif - } - else if (ctron) - { -diff -ruN linux-2.6.17-vanilla/drivers/net/stnic.c linux-2.6.17/drivers/net/stnic.c ---- linux-2.6.17-vanilla/drivers/net/stnic.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/net/stnic.c 2006-07-12 16:54:24.000000000 +0000 -@@ -20,7 +20,7 @@ - - #include <asm/system.h> - #include <asm/io.h> --#include <asm/se/se.h> -+#include <asm/se.h> - #include <asm/machvec.h> - #ifdef CONFIG_SH_STANDARD_BIOS - #include <asm/sh_bios.h> -diff -ruN linux-2.6.17-vanilla/drivers/pcmcia/CVS/Entries linux-2.6.17/drivers/pcmcia/CVS/Entries ---- linux-2.6.17-vanilla/drivers/pcmcia/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/pcmcia/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,5 @@ -+/hd64461_ss.c/1.16/Mon Mar 27 23:59:10 2006/-ko/ -+/yenta_socket.c/1.13/Mon Mar 27 21:06:14 2006/-ko/ -+/Kconfig/1.12/Wed Jul 5 14:51:21 2006/-ko/ -+/Makefile/1.11/Wed Jul 5 14:51:21 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/pcmcia/CVS/Repository linux-2.6.17/drivers/pcmcia/CVS/Repository ---- linux-2.6.17-vanilla/drivers/pcmcia/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/pcmcia/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/pcmcia -diff -ruN linux-2.6.17-vanilla/drivers/pcmcia/CVS/Root linux-2.6.17/drivers/pcmcia/CVS/Root ---- linux-2.6.17-vanilla/drivers/pcmcia/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/pcmcia/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/pcmcia/Kconfig linux-2.6.17/drivers/pcmcia/Kconfig ---- linux-2.6.17-vanilla/drivers/pcmcia/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/pcmcia/Kconfig 2006-07-12 16:54:24.000000000 +0000 -@@ -179,6 +179,19 @@ - "Bridge" is the name used for the hardware inside your computer that - PCMCIA cards are plugged into. If unsure, say N. - -+config HD64461_PCMCIA -+ tristate "HD64461 host bridge support" -+ depends on HD64461 && PCMCIA -+ -+config HD64461_PCMCIA_SOCKETS -+ int ' HD64461 PCMCIA sockets' -+ default 1 -+ depends on HD64461_PCMCIA -+ -+config HD64465_PCMCIA -+ tristate "HD64465 host bridge support" -+ depends on HD64465 && PCMCIA -+ - config PCMCIA_M8XX - tristate "MPC8xx PCMCIA support" - depends on PCMCIA && PPC && 8xx -@@ -189,10 +202,6 @@ - - This driver is also available as a module called m8xx_pcmcia. - --config HD64465_PCMCIA -- tristate "HD64465 host bridge support" -- depends on HD64465 && PCMCIA -- - config PCMCIA_AU1X00 - tristate "Au1x00 pcmcia support" - depends on SOC_AU1X00 && PCMCIA -diff -ruN linux-2.6.17-vanilla/drivers/pcmcia/Makefile linux-2.6.17/drivers/pcmcia/Makefile ---- linux-2.6.17-vanilla/drivers/pcmcia/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/pcmcia/Makefile 2006-07-12 16:54:24.000000000 +0000 -@@ -25,8 +25,9 @@ - obj-$(CONFIG_I82365) += i82365.o - obj-$(CONFIG_I82092) += i82092.o - obj-$(CONFIG_TCIC) += tcic.o --obj-$(CONFIG_PCMCIA_M8XX) += m8xx_pcmcia.o -+obj-$(CONFIG_HD64461_PCMCIA) += hd64461_ss.o - obj-$(CONFIG_HD64465_PCMCIA) += hd64465_ss.o -+obj-$(CONFIG_PCMCIA_M8XX) += m8xx_pcmcia.o - obj-$(CONFIG_PCMCIA_SA1100) += sa11xx_core.o sa1100_cs.o - obj-$(CONFIG_PCMCIA_SA1111) += sa11xx_core.o sa1111_cs.o - obj-$(CONFIG_PCMCIA_PXA2XX) += pxa2xx_core.o pxa2xx_cs.o -diff -ruN linux-2.6.17-vanilla/drivers/pcmcia/hd64461_ss.c linux-2.6.17/drivers/pcmcia/hd64461_ss.c ---- linux-2.6.17-vanilla/drivers/pcmcia/hd64461_ss.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/pcmcia/hd64461_ss.c 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,679 @@ -+/* -+ * drivers/pcmcia/hd64461_ss.c -+ * -+ * PCMCIA support for Hitachi HD64461 companion chip -+ * by Andriy Skulysh <askulysh@image.kiev.ua> 2002, 2003, 2004 -+ * -+ * based on hd64461_ss.c by Greg Banks <gbanks@pocketpenguins.com> -+ * -+ */ -+#include <linux/config.h> -+#include <linux/types.h> -+#include <linux/module.h> -+#include <linux/init.h> -+#include <linux/string.h> -+#include <linux/kernel.h> -+#include <linux/ioport.h> -+#include <linux/mm.h> -+#include <linux/vmalloc.h> -+#include <linux/irq.h> -+#include <linux/interrupt.h> -+#include <linux/platform_device.h> -+#include <pcmcia/cs_types.h> -+#include <pcmcia/cs.h> -+#include <pcmcia/ss.h> -+#include <pcmcia/bulkmem.h> -+#include <pcmcia/cistpl.h> -+#include "cs_internal.h" -+#include <asm/io.h> -+#include <asm/hd64461.h> -+#include <asm/hp6xx/hp6xx.h> -+ -+#define MODNAME "HD64461_ss" -+ -+#ifdef DEBUG -+static int hd64461_pc_debug = 2; -+ -+module_param_named(pc_debug, hd64461_pc_debug, int, 0644); -+ -+#define DPRINTK(n, args...) \ -+do { \ -+ if (hd64461_pc_debug >= (n)) \ -+ printk(args); \ -+} while (0) -+#else -+#define DPRINTK(n, args...) do { } while (0) -+#endif -+ -+#define HD64461_PCC(s,reg) \ -+ ( CONFIG_HD64461_IOBASE-HD64461_STBCR+ ( (s) ? HD64461_PCC1##reg : \ -+ HD64461_PCC0##reg ) ) -+ -+typedef struct hd64461_socket_t { -+ unsigned int irq; -+ unsigned long mem_base; -+ socket_state_t state; -+ pccard_mem_map mem_maps[MAX_WIN]; -+ unsigned char IC_memory; -+ struct pcmcia_socket socket; -+ u8 cscier; -+} hd64461_socket_t; -+ -+static hd64461_socket_t hd64461_sockets[CONFIG_HD64461_PCMCIA_SOCKETS]; -+ -+#define hd64461_sockno(sp) (sp - hd64461_sockets) -+ -+static void hd64461_enable_int(unsigned int irq) -+{ -+ u8 cscier; -+ u32 cscier_reg = HD64461_PCC(0, CSCIER); -+ -+ cscier = ctrl_inb(cscier_reg); -+ cscier &= ~HD64461_PCCCSCIER_IREQE_MASK; -+ cscier |= HD64461_PCCCSCIER_IREQE_LEVEL; -+ ctrl_outb(cscier, cscier_reg); -+} -+ -+static void hd64461_disable_int(unsigned int irq) -+{ -+ u8 cscier; -+ u32 cscier_reg = HD64461_PCC(0, CSCIER); -+ -+ cscier = ctrl_inb(cscier_reg); -+ cscier &= ~HD64461_PCCCSCIER_IREQE_MASK; -+ ctrl_outb(cscier, cscier_reg); -+} -+ -+static void hd64461_enable_irq(unsigned int irq) -+{ -+ DPRINTK(3, "hd64461_enable_irq(irq=%d)\n", irq); -+ hd64461_enable_int(irq); -+} -+ -+static void hd64461_disable_irq(unsigned int irq) -+{ -+ DPRINTK(3, "hd64461_disable_irq(irq=%d)\n", irq); -+ hd64461_disable_int(irq); -+} -+ -+static unsigned int hd64461_startup_irq(unsigned int irq) -+{ -+ DPRINTK(3, "hd64461_startup_irq(irq=%d)\n", irq); -+ hd64461_enable_irq(irq); -+ return 0; -+} -+ -+static void hd64461_shutdown_irq(unsigned int irq) -+{ -+ DPRINTK(3, "hd64461_shutdown_irq(irq=%d)\n", irq); -+ hd64461_disable_irq(irq); -+} -+ -+static void hd64461_mask_and_ack_irq(unsigned int irq) -+{ -+ DPRINTK(3, "hd64461_mask_and_ack_irq(irq=%d)\n", irq); -+ hd64461_disable_irq(irq); -+} -+ -+static void hd64461_end_irq(unsigned int irq) -+{ -+ DPRINTK(3, "hd64461_end_irq(irq=%d)\n", irq); -+ hd64461_enable_irq(irq); -+} -+ -+static struct hw_interrupt_type hd64461_ss_irq_type = { -+ .typename = "HD64461_SS-IRQ", -+ .startup = hd64461_startup_irq, -+ .shutdown = hd64461_shutdown_irq, -+ .enable = hd64461_enable_irq, -+ .disable = hd64461_disable_irq, -+ .ack = hd64461_mask_and_ack_irq, -+ .end = hd64461_end_irq -+}; -+ -+static int hd64461_set_voltage(int sock, int Vcc, int Vpp) -+{ -+ u8 gcr, scr; -+ u16 stbcr; -+ u32 gcr_reg = HD64461_PCC(sock, GCR); -+ u32 scr_reg = HD64461_PCC(sock, SCR); -+ DPRINTK(2, "hd64461_set_voltage(%d, %d, %d)\n", sock, Vcc, Vpp); -+ -+ gcr = ctrl_inb(gcr_reg); -+ scr = ctrl_inb(scr_reg); -+ -+ switch (Vcc) { -+ case 0: -+ gcr |= HD64461_PCCGCR_VCC0; -+ scr |= HD64461_PCCSCR_VCC1; -+ break; -+ case 33: -+ if (sock == 1) { -+ gcr &= ~HD64461_PCCGCR_VCC0; -+ scr &= ~HD64461_PCCSCR_VCC1; -+ } else { -+ gcr |= HD64461_PCCGCR_VCC0; -+ scr &= ~HD64461_PCCSCR_VCC1; -+ } -+ break; -+ case 50: -+ gcr &= ~HD64461_PCCGCR_VCC0; -+ scr &= ~HD64461_PCCSCR_VCC1; -+ break; -+ } -+ -+ ctrl_outb(gcr, gcr_reg); -+ ctrl_outb(scr, scr_reg); -+ -+ stbcr = inw(HD64461_STBCR); -+ -+ if (Vcc > 0) { -+ stbcr &= ~(sock == 0 ? HD64461_STBCR_SPC0ST : -+ HD64461_STBCR_SPC1ST); -+ } else { -+ stbcr |= (sock == 0 ? HD64461_STBCR_SPC0ST : -+ HD64461_STBCR_SPC1ST); -+ } -+ -+ outw(stbcr, HD64461_STBCR); -+ -+ return 1; -+} -+ -+static int hd64461_init(struct pcmcia_socket *s) -+{ -+ u16 gpadr; -+ hd64461_socket_t *sp = container_of(s, struct hd64461_socket_t, socket); -+ -+ DPRINTK(0, "hd64461_init(%d)\n", s->sock); -+ -+ sp->state.Vcc = 0; -+ sp->state.Vpp = 0; -+ hd64461_set_voltage(s->sock, 0, 0); -+ -+ if (mach_is_hp6xx() && s->sock == 0) { -+ gpadr = inw(HD64461_GPADR); -+ gpadr &= ~HD64461_GPADR_PCMCIA0; -+ outw(gpadr, HD64461_GPADR); -+ } -+ -+ return 0; -+} -+ -+static int hd64461_suspend(struct pcmcia_socket *s) -+{ -+ u16 gpadr; -+ u8 gcr; -+ u32 gcr_reg = HD64461_PCC(s->sock, GCR); -+ -+ DPRINTK(0, "hd64461_suspend(%d)\n", s->sock); -+ -+ gcr = ctrl_inb(gcr_reg); -+ gcr &= ~HD64461_PCCGCR_DRVE; -+ ctrl_outb(gcr, gcr_reg); -+ hd64461_set_voltage(s->sock, 0, 0); -+ -+ if ((mach_is_hp6xx())&&(s->sock == 0)) { -+ gpadr = inw(HD64461_GPADR); -+ gpadr |= HD64461_GPADR_PCMCIA0; -+ outw(gpadr, HD64461_GPADR); -+ } -+ -+ return 0; -+} -+ -+static int hd64461_get_status(struct pcmcia_socket *s, u32 * value) -+{ -+ u8 isr; -+ u32 status = 0; -+ hd64461_socket_t *sp = container_of(s, struct hd64461_socket_t, socket); -+ -+ isr = ctrl_inb(HD64461_PCC(s->sock, ISR)); -+ -+ if ((isr & HD64461_PCCISR_PCD_MASK) == 0) { -+ status |= SS_DETECT; -+ -+ if (sp->IC_memory) { -+ switch (isr & HD64461_PCCISR_BVD_MASK) { -+ case HD64461_PCCISR_BVD_BATGOOD: -+ break; -+ case HD64461_PCCISR_BVD_BATWARN: -+ status |= SS_BATWARN; -+ break; -+ default: -+ status |= SS_BATDEAD; -+ break; -+ } -+ -+ if (isr & HD64461_PCCISR_READY) -+ status |= SS_READY; -+ if (isr & HD64461_PCCISR_MWP) -+ status |= SS_WRPROT; -+ } else { -+ if (isr & HD64461_PCCISR_BVD1) -+ status |= SS_STSCHG; -+ } -+ -+ switch (isr & (HD64461_PCCISR_VS2 | HD64461_PCCISR_VS1)) { -+ case HD64461_PCCISR_VS1: -+ printk(KERN_NOTICE MODNAME -+ ": cannot handle X.XV card, ignored\n"); -+ status = 0; -+ break; -+ case 0: -+ case HD64461_PCCISR_VS2: -+ status |= SS_3VCARD; -+ break; -+ case HD64461_PCCISR_VS2 | HD64461_PCCISR_VS1: -+ break; -+ } -+ -+ if ((sp->state.Vcc != 0) || (sp->state.Vpp != 0)) -+ status |= SS_POWERON; -+ } -+ DPRINTK(0, "hd64461_get_status(%d) = %x\n", s->sock, status); -+ -+ *value = status; -+ return 0; -+} -+ -+static int hd64461_set_socket(struct pcmcia_socket *s, socket_state_t * state) -+{ -+ u32 flags; -+ u32 changed; -+ u8 gcr, cscier; -+ hd64461_socket_t *sp = container_of(s, struct hd64461_socket_t, socket); -+ u32 gcr_reg = HD64461_PCC(s->sock, GCR); -+ u32 cscier_reg = HD64461_PCC(s->sock, CSCIER); -+ -+ DPRINTK(0, "%s(sock=%d, flags=%x, csc_mask=%x, Vcc=%d, Vpp=%d, io_irq=%d)\n", -+ __FUNCTION__, s->sock, state->flags, state->csc_mask, state->Vcc, -+ state->Vpp, state->io_irq); -+ -+ local_irq_save(flags); -+ -+ if (state->Vpp != sp->state.Vpp || state->Vcc != sp->state.Vcc) { -+ if (!hd64461_set_voltage(s->sock, state->Vcc, state->Vpp)) { -+ local_irq_restore(flags); -+ return -EINVAL; -+ } -+ } -+ -+ changed = sp->state.csc_mask ^ state->csc_mask; -+ cscier = ctrl_inb(cscier_reg); -+ -+ if (changed & SS_DETECT) { -+ if (state->csc_mask & SS_DETECT) -+ cscier |= HD64461_PCCCSCIER_CDE; -+ else -+ cscier &= ~HD64461_PCCCSCIER_CDE; -+ } -+ -+ if (changed & SS_READY) { -+ if (state->csc_mask & SS_READY) -+ cscier |= HD64461_PCCCSCIER_RE; -+ else -+ cscier &= ~HD64461_PCCCSCIER_RE; -+ } -+ -+ if (changed & SS_BATDEAD) { -+ if (state->csc_mask & SS_BATDEAD) -+ cscier |= HD64461_PCCCSCIER_BDE; -+ else -+ cscier &= ~HD64461_PCCCSCIER_BDE; -+ } -+ -+ if (changed & SS_BATWARN) { -+ if (state->csc_mask & SS_BATWARN) -+ cscier |= HD64461_PCCCSCIER_BWE; -+ else -+ cscier &= ~HD64461_PCCCSCIER_BWE; -+ } -+ -+ if (changed & SS_STSCHG) { -+ if (state->csc_mask & SS_STSCHG) -+ cscier |= HD64461_PCCCSCIER_SCE; -+ else -+ cscier &= ~HD64461_PCCCSCIER_SCE; -+ } -+ -+ ctrl_outb(cscier, cscier_reg); -+ -+ changed = sp->state.flags ^ state->flags; -+ -+ gcr = ctrl_inb(gcr_reg); -+ -+ if (changed & SS_IOCARD) { -+ DPRINTK(0, "card type: %s\n", -+ (state->flags & SS_IOCARD ? "i/o" : "memory")); -+ if (state->flags & SS_IOCARD) { -+ if (s->sock == 1) { -+ printk(KERN_ERR -+ "socket 1 can be only IC Memory card\n"); -+ } else { -+ gcr |= HD64461_PCCGCR_PCCT; -+ sp->IC_memory = 0; -+ } -+ } else { -+ gcr &= ~HD64461_PCCGCR_PCCT; -+ sp->IC_memory = 1; -+ } -+ } -+ -+ if (changed & SS_RESET) { -+ DPRINTK(0, "%s reset card\n", -+ (state->flags & SS_RESET ? "start" : "stop")); -+ if (state->flags & SS_RESET) -+ gcr |= HD64461_PCCGCR_PCCR; -+ else -+ gcr &= ~HD64461_PCCGCR_PCCR; -+ } -+ -+ if (changed & SS_OUTPUT_ENA) { -+ DPRINTK(0, "%sabling card output\n", -+ (state->flags & SS_OUTPUT_ENA ? "en" : "dis")); -+ if (state->flags & SS_OUTPUT_ENA) -+ gcr |= HD64461_PCCGCR_DRVE; -+ else -+ gcr &= ~HD64461_PCCGCR_DRVE; -+ } -+ -+ DPRINTK(2, "cscier=%02x ", cscier); -+ DPRINTK(2, "gcr=%02x\n", gcr); -+ ctrl_outb(gcr, gcr_reg); -+ -+ sp->state = *state; -+ -+ local_irq_restore(flags); -+ -+ return 0; -+} -+ -+static int hd64461_set_io_map(struct pcmcia_socket *s, struct pccard_io_map *io) -+{ -+ /* this is not needed due to static mappings */ -+ DPRINTK(0, "hd64461_set_io_map(%d)\n", s->sock); -+ -+ return 0; -+} -+ -+static int hd64461_set_mem_map(struct pcmcia_socket *s, -+ struct pccard_mem_map *mem) -+{ -+ hd64461_socket_t *sp = container_of(s, struct hd64461_socket_t, socket); -+ struct pccard_mem_map *smem; -+ int map = mem->map; -+ unsigned long saddr; -+ -+ DPRINTK(0, "%s(sock=%d, map=%d, flags=0x%x,static_start=0x%08lx, card_start=0x%08x)\n", -+ __FUNCTION__, s->sock, map, mem->flags, mem->static_start, mem->card_start); -+ -+ if (map >= MAX_WIN) -+ return -EINVAL; -+ -+ smem = &sp->mem_maps[map]; -+ saddr = sp->mem_base + mem->card_start; -+ -+ if (!(mem->flags & MAP_ATTRIB)) -+ saddr += HD64461_PCC_WINDOW; -+ -+ mem->static_start = saddr; -+ *smem = *mem; -+ -+ return 0; -+} -+ -+static int hd64461_pcmcia_irq_demux(int irq, void *dev) -+{ -+ hd64461_socket_t *sp = (hd64461_socket_t *) dev; -+ unsigned char cscr; -+ unsigned cscr_reg = HD64461_PCC(0, CSCR); -+ -+ DPRINTK(3, "hd64461_pcmcia_irq_demux(irq= %d - ", irq); -+ -+ cscr = ctrl_inb(cscr_reg); -+ if (cscr & HD64461_PCCCSCR_IREQ) { -+ cscr &= ~HD64461_PCCCSCR_IREQ; -+ ctrl_outb(cscr, cscr_reg); -+ irq = sp->socket.pci_irq; -+ } -+ -+ DPRINTK(3, "%d)\n", irq); -+ -+ return irq; -+} -+ -+static irqreturn_t hd64461_interrupt(int irq, void *dev, struct pt_regs *regs) -+{ -+ hd64461_socket_t *sp = (hd64461_socket_t *) dev; -+ unsigned events = 0; -+ unsigned char cscr; -+ unsigned cscr_reg = HD64461_PCC(hd64461_sockno(sp), CSCR); -+ -+ cscr = ctrl_inb(cscr_reg); -+ -+ DPRINTK(3, "hd64461_interrupt: cscr=%04x irq=%d\n", cscr, irq); -+ -+ if (cscr & HD64461_PCCCSCR_CDC) { -+ cscr &= ~HD64461_PCCCSCR_CDC; -+ events |= SS_DETECT; -+ -+ if ((ctrl_inb(HD64461_PCC(hd64461_sockno(sp), ISR)) & -+ HD64461_PCCISR_PCD_MASK) != 0) { -+ cscr &= ~(HD64461_PCCCSCR_RC | HD64461_PCCCSCR_BW | -+ HD64461_PCCCSCR_BD | HD64461_PCCCSCR_SC); -+ } -+ } -+ -+ if (sp->IC_memory) { -+ if (cscr & HD64461_PCCCSCR_RC) { -+ cscr &= ~HD64461_PCCCSCR_RC; -+ events |= SS_READY; -+ } -+ -+ if (cscr & HD64461_PCCCSCR_BW) { -+ cscr &= ~HD64461_PCCCSCR_BW; -+ events |= SS_BATWARN; -+ } -+ -+ if (cscr & HD64461_PCCCSCR_BD) { -+ cscr &= ~HD64461_PCCCSCR_BD; -+ events |= SS_BATDEAD; -+ } -+ } else { -+ if (cscr & HD64461_PCCCSCR_SC) { -+ cscr &= ~HD64461_PCCCSCR_SC; -+ events |= SS_STSCHG; -+ } -+ } -+ -+ ctrl_outb(cscr, cscr_reg); -+ -+ if (events) -+ pcmcia_parse_events(&sp->socket, events); -+ -+ return IRQ_HANDLED; -+} -+ -+static struct pccard_operations hd64461_operations = { -+ .init = hd64461_init, -+ .suspend = hd64461_suspend, -+ .get_status = hd64461_get_status, -+ .set_socket = hd64461_set_socket, -+ .set_io_map = hd64461_set_io_map, -+ .set_mem_map = hd64461_set_mem_map, -+}; -+ -+int hd64461_init_socket(int sock, int irq, int io_irq, unsigned long mem_base, -+ unsigned short io_offset) -+{ -+ hd64461_socket_t *sp = &hd64461_sockets[sock]; -+ unsigned gcr_reg = HD64461_PCC(sock, GCR); -+ int irq_flags = (sock == 0) ? SA_INTERRUPT : SA_SHIRQ; -+ u8 gcr; -+ int i, err; -+ -+ ctrl_outb(0, HD64461_PCC(sock, CSCIER)); -+ -+ memset(sp, 0, sizeof(*sp)); -+ sp->IC_memory = 1; -+ sp->irq = irq; -+ sp->mem_base = mem_base; -+ sp->socket.features = -+ SS_CAP_PCCARD | SS_CAP_STATIC_MAP | SS_CAP_PAGE_REGS; -+ sp->socket.resource_ops = &pccard_static_ops; -+ sp->socket.map_size = HD64461_PCC_WINDOW; /* 16MB fixed window size */ -+ sp->socket.pci_irq = io_irq; -+ sp->socket.io_offset = io_offset; -+ sp->socket.owner = THIS_MODULE; -+ sp->socket.ops = &hd64461_operations; -+ -+ for (i = 0; i != MAX_WIN; i++) -+ sp->mem_maps[i].map = i; -+ -+ if ((err = -+ request_irq(irq, hd64461_interrupt, irq_flags, MODNAME, sp)) < 0) { -+ printk(KERN_ERR -+ "HD64461 PCMCIA socket %d: can't request irq %d\n", sock, -+ sp->irq); -+ return err; -+ } -+ -+ if (sock == 0) { -+ irq_desc[io_irq].handler = &hd64461_ss_irq_type; -+ hd64461_register_irq_demux(sp->irq, hd64461_pcmcia_irq_demux, -+ sp); -+ } -+ -+ gcr = ctrl_inb(gcr_reg); -+ gcr |= HD64461_PCCGCR_PMMOD; /* 16MB mapping mode */ -+ gcr &= ~(HD64461_PCCGCR_PA25 | HD64461_PCCGCR_PA24); /* lowest 16MB of Common */ -+ ctrl_outb(gcr, gcr_reg); -+ -+ return 0; -+} -+ -+void hd64461_exit_socket(int sock) -+{ -+ hd64461_socket_t *sp = &hd64461_sockets[sock]; -+ unsigned cscier_reg = HD64461_PCC(sock, CSCIER); -+ -+ ctrl_outb(0, cscier_reg); -+ hd64461_suspend(&sp->socket); -+ -+ if (sp->irq) { -+ if (sock == 0) -+ hd64461_unregister_irq_demux(sp->irq); -+ free_irq(sp->irq, sp); -+ if (sock == 0) -+ irq_desc[sp->socket.pci_irq].handler = &no_irq_type; -+ } -+} -+ -+static int __devexit hd64461_pcmcia_drv_remove(struct platform_device *dev) -+{ -+ int i; -+ -+ for (i = 0; i != CONFIG_HD64461_PCMCIA_SOCKETS; i++) { -+ pcmcia_unregister_socket(&hd64461_sockets[i].socket); -+ hd64461_exit_socket(i); -+ } -+ -+ return 0; -+} -+ -+#ifdef CONFIG_PM -+static int hd64461_pcmcia_drv_suspend(struct platform_device *dev, pm_message_t state) -+{ -+ int ret = 0; -+ int i; -+ -+ for (i = 0; i != CONFIG_HD64461_PCMCIA_SOCKETS; i++) { -+ u32 cscier_reg = HD64461_PCC(i, CSCIER); -+ hd64461_sockets[i].cscier = ctrl_inb(cscier_reg); -+ ctrl_outb(0, cscier_reg); -+ ret = pcmcia_socket_dev_suspend(&dev->dev, state); -+ } -+ return ret; -+ } -+ -+static int hd64461_pcmcia_drv_resume(struct platform_device *dev) -+{ -+ int ret = 0; -+ int i; -+ -+ for (i = 0; i != CONFIG_HD64461_PCMCIA_SOCKETS; i++) { -+ u32 cscier_reg = HD64461_PCC(i, CSCIER); -+ ctrl_outb(hd64461_sockets[i].cscier, cscier_reg); -+ ret = pcmcia_socket_dev_resume(&dev->dev); -+ } -+ -+ return ret; -+} -+#endif -+ -+static struct platform_driver hd64461_pcmcia_driver = { -+ .remove = __devexit_p(hd64461_pcmcia_drv_remove), -+#ifdef CONFIG_PM -+ .suspend = hd64461_pcmcia_drv_suspend, -+ .resume = hd64461_pcmcia_drv_resume, -+#endif -+ .driver = { -+ .name = "hd64461-pcmcia", -+ }, -+}; -+ -+static struct platform_device *hd64461_pcmcia_device; -+ -+static int __init init_hd64461_ss(void) -+{ -+ int i; -+ -+ printk(KERN_INFO "HD64461 PCMCIA bridge.\n"); -+ if (platform_driver_register(&hd64461_pcmcia_driver)) -+ return -EINVAL; -+ -+ i = hd64461_init_socket(0, HD64461_IRQ_PCC0, HD64461_IRQ_PCC0 + 1, -+ HD64461_PCC0_BASE, 0xf000); -+ if (i < 0) { -+ platform_driver_unregister(&hd64461_pcmcia_driver); -+ return i; -+ } -+#if CONFIG_HD64461_PCMCIA_SOCKETS==2 -+ i = hd64461_init_socket(1, HD64461_IRQ_PCC1, HD64461_IRQ_PCC1, -+ HD64461_PCC1_BASE, 0); -+ if (i < 0) { -+ platform_driver_unregister(&hd64461_pcmcia_driver); -+ return i; -+ } -+#endif -+ -+ hd64461_pcmcia_device = platform_device_register_simple("hd64461-pcmcia", -1, NULL, 0); -+ if (IS_ERR(hd64461_pcmcia_device)) { -+ platform_driver_unregister(&hd64461_pcmcia_driver); -+ return PTR_ERR(hd64461_pcmcia_device); -+ } -+ -+ for (i = 0; i != CONFIG_HD64461_PCMCIA_SOCKETS; i++) { -+ unsigned int ret; -+ hd64461_sockets[i].socket.dev.dev = &hd64461_pcmcia_device->dev; -+ ret = pcmcia_register_socket(&hd64461_sockets[i].socket); -+ if (ret && i) -+ pcmcia_unregister_socket(&hd64461_sockets[0].socket); -+ } -+ -+ return 0; -+} -+ -+static void __exit exit_hd64461_ss(void) -+{ -+ platform_device_unregister(hd64461_pcmcia_device); -+ platform_driver_unregister(&hd64461_pcmcia_driver); -+} -+ -+module_init(init_hd64461_ss); -+module_exit(exit_hd64461_ss); -+ -+MODULE_AUTHOR("Andriy Skulysh <askulysh@gmail.com>"); -+MODULE_DESCRIPTION("PCMCIA driver for Hitachi HD64461 companion chip"); -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/pcmcia/yenta_socket.c linux-2.6.17/drivers/pcmcia/yenta_socket.c ---- linux-2.6.17-vanilla/drivers/pcmcia/yenta_socket.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/pcmcia/yenta_socket.c 2006-07-12 16:54:24.000000000 +0000 -@@ -49,6 +49,15 @@ - #define to_cycles(ns) ((ns)/120) - #define to_ns(cycles) ((cycles)*120) - -+#if defined(CONFIG_SH_HS7751RVOIP) || defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R7780RP) -+#define PCI_CB_SYSTEM_CONTROL 0x80 /* System Control Register */ -+#define PCI_CB_MULTIFUNCTION 0x8c /* Multifunction Routing Register */ -+#define PCI_CB_RETRY_STATUS 0x90 /* Retry Status Register */ -+#define PCI_CB_CARD_CONTROL 0x91 /* Card Control Register */ -+#define PCI_CB_DEVICE_CONTROL 0x92 /* Device Control Register */ -+#define PCI_CB_DIAGNOSTIC 0x93 /* Diagnostic Register */ -+#endif -+ - /** - * yenta PCI irq probing. - * currently only used in the TI/EnE initialization code -@@ -511,7 +520,12 @@ - { - struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); - -+#if defined(CONFIG_SH_HS7751RVOIP) || defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R7780RP) -+ exca_writeb(socket, I365_GBLCTL, I365_GBL_CSC_LEV | I365_GBL_IRQ_0_LEV); -+ exca_writeb(socket, I365_INTCTL, I365_INTR_ENA); -+#else - exca_writeb(socket, I365_GBLCTL, 0x00); -+#endif - exca_writeb(socket, I365_GENCTL, 0x00); - - /* Redo card voltage interrogation */ -@@ -996,6 +1010,38 @@ - bridge &= ~(CB_BRIDGE_CRST | CB_BRIDGE_PREFETCH1 | CB_BRIDGE_ISAEN | CB_BRIDGE_VGAEN); - bridge |= CB_BRIDGE_PREFETCH0 | CB_BRIDGE_POSTEN; - config_writew(socket, CB_BRIDGE_CONTROL, bridge); -+#if defined(CONFIG_SH_HS7751RVOIP) || defined(CONFIG_SH_RTS7751R2D) || defined(CONFIG_SH_R7780RP) -+ /* System Contro Register -+ * SER_STEP=00, INTRTIE=1, RSVD=0, P2CCLK=1, -+ * SMIROUTE=0, SMISTATUS=0, SMIENB=0, RSVD=0, -+ * CBRSVD=0, VCCPROT=0, REDUCEZV=0, RSVD=0100, -+ * MRBURSTD=1, MRBURSTU=1, SOCACTIV=0, RSVD=1, -+ * PWRSTREAM=0, DELAYUP=0, DELAYCOWN=0, INTERROGATE=0, -+ * RSVD=0, PWRSAVINGS=1, SUBSYSRW=1, CB_DPAR=0, -+ * RSVD=0, EXCAPOWER=0, KEEPCLK=0, RIMUX=0 -+ */ -+ config_writel(socket, PCI_CB_SYSTEM_CONTROL, 0x28449060); -+ /* Retry Status Register -+ * PCIRETRY=0, CBRETRY=0, TEXP_CBB=0, RSVD=0, -+ * TEXP_CBA=0, RSVD=0, TEXP_PCI=0, RSVD=0 -+ */ -+ config_writeb(socket, PCI_CB_RETRY_STATUS, 0x00); -+ /* Device Control Register -+ * SKTPWR_LOCK=0, 3VCAPABLE=1, IO16V2=1, RSVD=0, -+ * TEST=0, INTMODE=01, RSVD=0 -+ */ -+ config_writeb(socket, PCI_CB_DEVICE_CONTROL, 0x62); -+ /* Siagnostic Register -+ * TRUE_VAL=0, RSVD=1, CSC=0, DIAG4=0, -+ * DIAG3=0, DIAG2=0, DIAG1=0, STDZVEN=0 -+ */ -+ config_writeb(socket, PCI_CB_DIAGNOSTIC, 0x40); -+ /* Multifucntion Routing Register -+ * RSVD=0000, MFUNC6=0000, MFUNC5=0000, MFUNC4=0000, -+ * MFUNC3=0001, MFUNC2=0000, MFUNC1=0000, MFUNC0=0010 -+ */ -+ config_writel(socket, PCI_CB_MULTIFUNCTION, 0x00001002); -+#endif - } - - /* -diff -ruN linux-2.6.17-vanilla/drivers/rtc/CVS/Entries linux-2.6.17/drivers/rtc/CVS/Entries ---- linux-2.6.17-vanilla/drivers/rtc/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/rtc/CVS/Entries 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Kconfig/1.1/Tue Jul 11 07:54:45 2006/-ko/ -+/Makefile/1.1/Tue Jul 11 07:54:45 2006/-ko/ -+/rtc-sh.c/1.1/Tue Jul 11 07:54:45 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/rtc/CVS/Repository linux-2.6.17/drivers/rtc/CVS/Repository ---- linux-2.6.17-vanilla/drivers/rtc/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/rtc/CVS/Repository 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/rtc -diff -ruN linux-2.6.17-vanilla/drivers/rtc/CVS/Root linux-2.6.17/drivers/rtc/CVS/Root ---- linux-2.6.17-vanilla/drivers/rtc/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/rtc/CVS/Root 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/rtc/Kconfig linux-2.6.17/drivers/rtc/Kconfig ---- linux-2.6.17-vanilla/drivers/rtc/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/rtc/Kconfig 2006-07-12 16:54:25.000000000 +0000 -@@ -147,6 +147,16 @@ - To compile this driver as a module, choose M here: the - module will be called rtc-sa1100. - -+config RTC_DRV_SH -+ tristate "SuperH On-Chip RTC" -+ depends on RTC_CLASS && SUPERH -+ help -+ Say Y here to enable support for the on-chip RTC found in -+ most SuperH processors. -+ -+ To compile this driver as a module, choose M here: the -+ module will be called rtc-sh. -+ - config RTC_DRV_VR41XX - tristate "NEC VR41XX" - depends on RTC_CLASS && CPU_VR41XX -diff -ruN linux-2.6.17-vanilla/drivers/rtc/Makefile linux-2.6.17/drivers/rtc/Makefile ---- linux-2.6.17-vanilla/drivers/rtc/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/rtc/Makefile 2006-07-12 16:54:25.000000000 +0000 -@@ -20,3 +20,4 @@ - obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93xx.o - obj-$(CONFIG_RTC_DRV_SA1100) += rtc-sa1100.o - obj-$(CONFIG_RTC_DRV_VR41XX) += rtc-vr41xx.o -+obj-$(CONFIG_RTC_DRV_SH) += rtc-sh.o -diff -ruN linux-2.6.17-vanilla/drivers/rtc/rtc-sh.c linux-2.6.17/drivers/rtc/rtc-sh.c ---- linux-2.6.17-vanilla/drivers/rtc/rtc-sh.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/rtc/rtc-sh.c 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,467 @@ -+/* -+ * SuperH On-Chip RTC Support -+ * -+ * Copyright (C) 2006 Paul Mundt -+ * -+ * Based on the old arch/sh/kernel/cpu/rtc.c by: -+ * -+ * Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org> -+ * Copyright (C) 1999 Tetsuya Okada & Niibe Yutaka -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/bcd.h> -+#include <linux/rtc.h> -+#include <linux/init.h> -+#include <linux/platform_device.h> -+#include <linux/seq_file.h> -+#include <linux/interrupt.h> -+#include <linux/spinlock.h> -+#include <asm/io.h> -+ -+#ifdef CONFIG_CPU_SH3 -+#define rtc_reg_size sizeof(u16) -+#define RTC_BIT_INVERTED 0 /* No bug on SH7708, SH7709A */ -+#elif defined(CONFIG_CPU_SH4) -+#define rtc_reg_size sizeof(u32) -+#define RTC_BIT_INVERTED 0x40 /* bug on SH7750, SH7750S */ -+#endif -+ -+#define RTC_REG(r) ((r) * rtc_reg_size) -+ -+#define R64CNT RTC_REG(0) -+#define RSECCNT RTC_REG(1) -+#define RMINCNT RTC_REG(2) -+#define RHRCNT RTC_REG(3) -+#define RWKCNT RTC_REG(4) -+#define RDAYCNT RTC_REG(5) -+#define RMONCNT RTC_REG(6) -+#define RYRCNT RTC_REG(7) -+#define RSECAR RTC_REG(8) -+#define RMINAR RTC_REG(9) -+#define RHRAR RTC_REG(10) -+#define RWKAR RTC_REG(11) -+#define RDAYAR RTC_REG(12) -+#define RMONAR RTC_REG(13) -+#define RCR1 RTC_REG(14) -+#define RCR2 RTC_REG(15) -+ -+/* RCR1 Bits */ -+#define RCR1_CF 0x80 /* Carry Flag */ -+#define RCR1_CIE 0x10 /* Carry Interrupt Enable */ -+#define RCR1_AIE 0x08 /* Alarm Interrupt Enable */ -+#define RCR1_AF 0x01 /* Alarm Flag */ -+ -+/* RCR2 Bits */ -+#define RCR2_PEF 0x80 /* PEriodic interrupt Flag */ -+#define RCR2_PESMASK 0x70 /* Periodic interrupt Set */ -+#define RCR2_RTCEN 0x08 /* ENable RTC */ -+#define RCR2_ADJ 0x04 /* ADJustment (30-second) */ -+#define RCR2_RESET 0x02 /* Reset bit */ -+#define RCR2_START 0x01 /* Start bit */ -+ -+struct sh_rtc { -+ void __iomem *regbase; -+ unsigned long regsize; -+ struct resource *res; -+ unsigned int alarm_irq, periodic_irq, carry_irq; -+ struct rtc_device *rtc_dev; -+ spinlock_t lock; -+}; -+ -+static irqreturn_t sh_rtc_interrupt(int irq, void *id, struct pt_regs *regs) -+{ -+ struct platform_device *pdev = id; -+ struct sh_rtc *rtc = platform_get_drvdata(pdev); -+ unsigned int tmp, events = 0; -+ -+ spin_lock(&rtc->lock); -+ -+ tmp = readb(rtc->regbase + RCR1); -+ -+ if (tmp & RCR1_AF) -+ events |= RTC_AF | RTC_IRQF; -+ -+ tmp &= ~(RCR1_CF | RCR1_AF); -+ -+ writeb(tmp, rtc->regbase + RCR1); -+ -+ rtc_update_irq(&rtc->rtc_dev->class_dev, 1, events); -+ -+ spin_unlock(&rtc->lock); -+ -+ return IRQ_HANDLED; -+} -+ -+static irqreturn_t sh_rtc_periodic(int irq, void *id, struct pt_regs *regs) -+{ -+ struct sh_rtc *rtc = dev_get_drvdata(id); -+ -+ spin_lock(&rtc->lock); -+ -+ rtc_update_irq(&rtc->rtc_dev->class_dev, 1, RTC_PF | RTC_IRQF); -+ -+ spin_unlock(&rtc->lock); -+ -+ return IRQ_HANDLED; -+} -+ -+static inline void sh_rtc_setpie(struct device *dev, unsigned int enable) -+{ -+ struct sh_rtc *rtc = dev_get_drvdata(dev); -+ unsigned int tmp; -+ -+ spin_lock_irq(&rtc->lock); -+ -+ tmp = readb(rtc->regbase + RCR2); -+ -+ if (enable) { -+ tmp &= ~RCR2_PESMASK; -+ tmp |= RCR2_PEF | (2 << 4); -+ } else -+ tmp &= ~(RCR2_PESMASK | RCR2_PEF); -+ -+ writeb(tmp, rtc->regbase + RCR2); -+ -+ spin_unlock_irq(&rtc->lock); -+} -+ -+static inline void sh_rtc_setaie(struct device *dev, unsigned int enable) -+{ -+ struct sh_rtc *rtc = dev_get_drvdata(dev); -+ unsigned int tmp; -+ -+ spin_lock_irq(&rtc->lock); -+ -+ tmp = readb(rtc->regbase + RCR1); -+ -+ if (enable) -+ tmp |= RCR1_AIE; -+ else -+ tmp &= ~RCR1_AIE; -+ -+ writeb(tmp, rtc->regbase + RCR1); -+ -+ spin_unlock_irq(&rtc->lock); -+} -+ -+static int sh_rtc_open(struct device *dev) -+{ -+ struct sh_rtc *rtc = dev_get_drvdata(dev); -+ unsigned int tmp; -+ int ret; -+ -+ tmp = readb(rtc->regbase + RCR1); -+ tmp &= ~RCR1_CF; -+ tmp |= RCR1_CIE; -+ writeb(tmp, rtc->regbase + RCR1); -+ -+ ret = request_irq(rtc->periodic_irq, sh_rtc_periodic, SA_INTERRUPT, -+ "sh-rtc period", dev); -+ if (unlikely(ret)) { -+ dev_err(dev, "request period IRQ failed with %d, IRQ %d\n", -+ ret, rtc->periodic_irq); -+ return ret; -+ } -+ -+ ret = request_irq(rtc->carry_irq, sh_rtc_interrupt, SA_INTERRUPT, -+ "sh-rtc carry", dev); -+ if (unlikely(ret)) { -+ dev_err(dev, "request carry IRQ failed with %d, IRQ %d\n", -+ ret, rtc->carry_irq); -+ free_irq(rtc->periodic_irq, dev); -+ goto err_bad_carry; -+ } -+ -+ ret = request_irq(rtc->alarm_irq, sh_rtc_interrupt, SA_INTERRUPT, -+ "sh-rtc alarm", dev); -+ if (unlikely(ret)) { -+ dev_err(dev, "request alarm IRQ failed with %d, IRQ %d\n", -+ ret, rtc->alarm_irq); -+ goto err_bad_alarm; -+ } -+ -+ return 0; -+ -+err_bad_alarm: -+ free_irq(rtc->carry_irq, dev); -+err_bad_carry: -+ free_irq(rtc->periodic_irq, dev); -+ -+ return ret; -+} -+ -+static void sh_rtc_release(struct device *dev) -+{ -+ struct sh_rtc *rtc = dev_get_drvdata(dev); -+ -+ sh_rtc_setpie(dev, 0); -+ -+ free_irq(rtc->periodic_irq, dev); -+ free_irq(rtc->carry_irq, dev); -+ free_irq(rtc->alarm_irq, dev); -+} -+ -+static int sh_rtc_proc(struct device *dev, struct seq_file *seq) -+{ -+ struct sh_rtc *rtc = dev_get_drvdata(dev); -+ unsigned int tmp; -+ -+ tmp = readb(rtc->regbase + RCR1); -+ seq_printf(seq, "alarm_IRQ\t: %s\n", -+ (tmp & RCR1_AIE) ? "yes" : "no"); -+ seq_printf(seq, "carry_IRQ\t: %s\n", -+ (tmp & RCR1_CIE) ? "yes" : "no"); -+ -+ tmp = readb(rtc->regbase + RCR2); -+ seq_printf(seq, "periodic_IRQ\t: %s\n", -+ (tmp & RCR2_PEF) ? "yes" : "no"); -+ -+ return 0; -+} -+ -+static int sh_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg) -+{ -+ unsigned int ret = -ENOIOCTLCMD; -+ -+ switch (cmd) { -+ case RTC_PIE_OFF: -+ case RTC_PIE_ON: -+ sh_rtc_setpie(dev, cmd == RTC_PIE_ON); -+ ret = 0; -+ break; -+ case RTC_AIE_OFF: -+ case RTC_AIE_ON: -+ sh_rtc_setaie(dev, cmd == RTC_AIE_ON); -+ ret = 0; -+ break; -+ } -+ -+ return ret; -+} -+ -+static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct sh_rtc *rtc = platform_get_drvdata(pdev); -+ unsigned int sec128, sec2, yr, yr100, cf_bit; -+ -+ do { -+ unsigned int tmp; -+ -+ spin_lock_irq(&rtc->lock); -+ -+ tmp = readb(rtc->regbase + RCR1); -+ tmp &= ~RCR1_CF; /* Clear CF-bit */ -+ tmp |= RCR1_CIE; -+ writeb(tmp, rtc->regbase + RCR1); -+ -+ sec128 = readb(rtc->regbase + R64CNT); -+ -+ tm->tm_sec = BCD2BIN(readb(rtc->regbase + RSECCNT)); -+ tm->tm_min = BCD2BIN(readb(rtc->regbase + RMINCNT)); -+ tm->tm_hour = BCD2BIN(readb(rtc->regbase + RHRCNT)); -+ tm->tm_wday = BCD2BIN(readb(rtc->regbase + RWKCNT)); -+ tm->tm_mday = BCD2BIN(readb(rtc->regbase + RDAYCNT)); -+ tm->tm_mon = BCD2BIN(readb(rtc->regbase + RMONCNT)); -+ -+#if defined(CONFIG_CPU_SH4) -+ yr = readw(rtc->regbase + RYRCNT); -+ yr100 = BCD2BIN(yr >> 8); -+ yr &= 0xff; -+#else -+ yr = readb(rtc->regbase + RYRCNT); -+ yr100 = BCD2BIN((yr == 0x99) ? 0x19 : 0x20); -+#endif -+ -+ tm->tm_year = (yr100 * 100 + BCD2BIN(yr)) - 1900; -+ -+ sec2 = readb(rtc->regbase + R64CNT); -+ cf_bit = readb(rtc->regbase + RCR1) & RCR1_CF; -+ -+ spin_unlock_irq(&rtc->lock); -+ } while (cf_bit != 0 || ((sec128 ^ sec2) & RTC_BIT_INVERTED) != 0); -+ -+#if RTC_BIT_INVERTED != 0 -+ if ((sec128 & RTC_BIT_INVERTED)) -+ tm->tm_sec--; -+#endif -+ -+ dev_dbg(&dev, "%s: tm is secs=%d, mins=%d, hours=%d, " -+ "mday=%d, mon=%d, year=%d, wday=%d\n", -+ __FUNCTION__, -+ tm->tm_sec, tm->tm_min, tm->tm_hour, -+ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); -+ -+ if (rtc_valid_tm(tm) < 0) -+ dev_err(dev, "invalid date\n"); -+ -+ return 0; -+} -+ -+static int sh_rtc_set_time(struct device *dev, struct rtc_time *tm) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct sh_rtc *rtc = platform_get_drvdata(pdev); -+ unsigned int tmp; -+ int year; -+ -+ spin_lock_irq(&rtc->lock); -+ -+ /* Reset pre-scaler & stop RTC */ -+ tmp = readb(rtc->regbase + RCR2); -+ tmp |= RCR2_RESET; -+ writeb(tmp, rtc->regbase + RCR2); -+ -+ writeb(BIN2BCD(tm->tm_sec), rtc->regbase + RSECCNT); -+ writeb(BIN2BCD(tm->tm_min), rtc->regbase + RMINCNT); -+ writeb(BIN2BCD(tm->tm_hour), rtc->regbase + RHRCNT); -+ writeb(BIN2BCD(tm->tm_wday), rtc->regbase + RWKCNT); -+ writeb(BIN2BCD(tm->tm_mday), rtc->regbase + RDAYCNT); -+ writeb(BIN2BCD(tm->tm_mon), rtc->regbase + RMONCNT); -+ -+#ifdef CONFIG_CPU_SH3 -+ year = tm->tm_year % 100; -+ writeb(BIN2BCD(year), rtc->regbase + RYRCNT); -+#else -+ year = (BIN2BCD((tm->tm_year + 1900) / 100) << 8) | -+ BIN2BCD(tm->tm_year % 100); -+ writew(year, rtc->regbase + RYRCNT); -+#endif -+ -+ /* Start RTC */ -+ tmp = readb(rtc->regbase + RCR2); -+ tmp &= ~RCR2_RESET; -+ tmp |= RCR2_RTCEN | RCR2_START; -+ writeb(tmp, rtc->regbase + RCR2); -+ -+ spin_unlock_irq(&rtc->lock); -+ -+ return 0; -+} -+ -+static struct rtc_class_ops sh_rtc_ops = { -+ .open = sh_rtc_open, -+ .release = sh_rtc_release, -+ .ioctl = sh_rtc_ioctl, -+ .read_time = sh_rtc_read_time, -+ .set_time = sh_rtc_set_time, -+ .proc = sh_rtc_proc, -+}; -+ -+static int __devinit sh_rtc_probe(struct platform_device *pdev) -+{ -+ struct sh_rtc *rtc; -+ struct resource *res; -+ int ret = -ENOENT; -+ -+ rtc = kzalloc(sizeof(struct sh_rtc), GFP_KERNEL); -+ if (unlikely(!rtc)) -+ return -ENOMEM; -+ -+ spin_lock_init(&rtc->lock); -+ -+ rtc->periodic_irq = platform_get_irq(pdev, 0); -+ if (unlikely(rtc->periodic_irq < 0)) { -+ dev_err(&pdev->dev, "No IRQ for period\n"); -+ goto err_badres; -+ } -+ -+ rtc->carry_irq = platform_get_irq(pdev, 1); -+ if (unlikely(rtc->carry_irq < 0)) { -+ dev_err(&pdev->dev, "No IRQ for carry\n"); -+ goto err_badres; -+ } -+ -+ rtc->alarm_irq = platform_get_irq(pdev, 2); -+ if (unlikely(rtc->alarm_irq < 0)) { -+ dev_err(&pdev->dev, "No IRQ for alarm\n"); -+ goto err_badres; -+ } -+ -+ res = platform_get_resource(pdev, IORESOURCE_IO, 0); -+ if (unlikely(res == NULL)) { -+ dev_err(&pdev->dev, "No IO resource\n"); -+ goto err_badres; -+ } -+ -+ rtc->regsize = res->end - res->start + 1; -+ -+ rtc->res = request_mem_region(res->start, rtc->regsize, pdev->name); -+ if (unlikely(!rtc->res)) { -+ ret = -EBUSY; -+ goto err_badres; -+ } -+ -+ rtc->regbase = (void __iomem *)rtc->res->start; -+ if (unlikely(!rtc->regbase)) { -+ ret = -EINVAL; -+ goto err_badmap; -+ } -+ -+ rtc->rtc_dev = rtc_device_register("sh", &pdev->dev, -+ &sh_rtc_ops, THIS_MODULE); -+ if (IS_ERR(rtc)) { -+ ret = PTR_ERR(rtc->rtc_dev); -+ goto err_badmap; -+ } -+ -+ platform_set_drvdata(pdev, rtc); -+ -+ return 0; -+ -+err_badmap: -+ release_resource(rtc->res); -+err_badres: -+ kfree(rtc); -+ -+ return ret; -+} -+ -+static int __devexit sh_rtc_remove(struct platform_device *pdev) -+{ -+ struct sh_rtc *rtc = platform_get_drvdata(pdev); -+ -+ if (likely(rtc->rtc_dev)) -+ rtc_device_unregister(rtc->rtc_dev); -+ -+ sh_rtc_setpie(&pdev->dev, 0); -+ sh_rtc_setaie(&pdev->dev, 0); -+ -+ release_resource(rtc->res); -+ -+ platform_set_drvdata(pdev, NULL); -+ -+ kfree(rtc); -+ -+ return 0; -+} -+static struct platform_driver sh_rtc_platform_driver = { -+ .driver = { -+ .name = "sh-rtc", -+ .owner = THIS_MODULE, -+ }, -+ .probe = sh_rtc_probe, -+ .remove = __devexit_p(sh_rtc_remove), -+}; -+ -+static int __init sh_rtc_init(void) -+{ -+ return platform_driver_register(&sh_rtc_platform_driver); -+} -+ -+static void __exit sh_rtc_exit(void) -+{ -+ platform_driver_unregister(&sh_rtc_platform_driver); -+} -+ -+module_init(sh_rtc_init); -+module_exit(sh_rtc_exit); -+ -+MODULE_DESCRIPTION("SuperH on-chip RTC driver"); -+MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>"); -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/serial/8250.c linux-2.6.17/drivers/serial/8250.c ---- linux-2.6.17-vanilla/drivers/serial/8250.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/serial/8250.c 2006-07-12 16:54:24.000000000 +0000 -@@ -193,6 +193,9 @@ - .fifo_size = 32, - .tx_loadsz = 16, - .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_01 | -+#ifdef CONFIG_SH_RTS7751R2D -+ UART_FCR_TRIGGER_14 | -+#endif - UART_FCR_T_TRIG_00, - .flags = UART_CAP_FIFO | UART_CAP_EFR | UART_CAP_SLEEP, - }, -@@ -440,8 +443,13 @@ - { - if (p->capabilities & UART_CAP_SLEEP) { - if (p->capabilities & UART_CAP_EFR) { -+ int efr = UART_EFR_ECB; -+ - serial_outp(p, UART_LCR, 0xBF); -- serial_outp(p, UART_EFR, UART_EFR_ECB); -+#ifdef CONFIG_SH_RTS7751R2D -+ efr |= UART_EFR_CTS | UART_EFR_RTS; -+#endif -+ serial_outp(p, UART_EFR, efr); - serial_outp(p, UART_LCR, 0); - } - serial_outp(p, UART_IER, sleep ? UART_IERX_SLEEP : 0); -@@ -672,10 +680,16 @@ - * since that's the technique that was sent to me in the - * serial driver update, but I'm not convinced this works. - * I've had problems doing this in the past. -TYT -+ * -+ * No, this won't work for everyone. At least in the RTS7751R2D -+ * case we have a '650 with a 64 byte FIFO, so this ends up breaking -+ * there. -PFM - */ -+#ifndef CONFIG_SH_RTS7751R2D - if (size_fifo(up) == 64) - up->port.type = PORT_16654; - else -+#endif - up->port.type = PORT_16650V2; - } - -diff -ruN linux-2.6.17-vanilla/drivers/serial/CVS/Entries linux-2.6.17/drivers/serial/CVS/Entries ---- linux-2.6.17-vanilla/drivers/serial/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/serial/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,4 @@ -+/sh-sci.c/1.43/Mon Mar 27 21:06:14 2006/-ko/ -+/sh-sci.h/1.21/Wed Feb 8 12:24:41 2006/-ko/ -+/8250.c/1.14/Wed Jul 5 14:51:22 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/serial/CVS/Repository linux-2.6.17/drivers/serial/CVS/Repository ---- linux-2.6.17-vanilla/drivers/serial/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/serial/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/serial -diff -ruN linux-2.6.17-vanilla/drivers/serial/CVS/Root linux-2.6.17/drivers/serial/CVS/Root ---- linux-2.6.17-vanilla/drivers/serial/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/serial/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/serial/sh-sci.c linux-2.6.17/drivers/serial/sh-sci.c ---- linux-2.6.17-vanilla/drivers/serial/sh-sci.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/serial/sh-sci.c 2006-07-12 16:54:24.000000000 +0000 -@@ -3,7 +3,7 @@ - * - * SuperH on-chip serial module support. (SCI with no FIFO / with FIFO) - * -- * Copyright (C) 2002, 2003, 2004 Paul Mundt -+ * Copyright (C) 2002 - 2006 Paul Mundt - * - * based off of the old drivers/char/sh-sci.c by: - * -@@ -56,10 +56,8 @@ - - #if defined(CONFIG_SUPERH) && !defined(CONFIG_SUPERH64) - #include <asm/clock.h> --#endif -- --#ifdef CONFIG_SH_STANDARD_BIOS - #include <asm/sh_bios.h> -+#include <asm/kgdb.h> - #endif - - #if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) -@@ -69,25 +67,15 @@ - #include "sh-sci.h" - - #ifdef CONFIG_SH_KGDB --#include <asm/kgdb.h> -- --static int kgdb_get_char(struct sci_port *port); --static void kgdb_put_char(struct sci_port *port, char c); --static void kgdb_handle_error(struct sci_port *port); - static struct sci_port *kgdb_sci_port; --#endif /* CONFIG_SH_KGDB */ -+#endif - - #ifdef CONFIG_SERIAL_SH_SCI_CONSOLE --static struct sci_port *serial_console_port = 0; --#endif /* CONFIG_SERIAL_SH_SCI_CONSOLE */ -+static struct sci_port *serial_console_port; -+#endif - - /* Function prototypes */ - static void sci_stop_tx(struct uart_port *port); --static void sci_start_tx(struct uart_port *port); --static void sci_start_rx(struct uart_port *port, unsigned int tty_start); --static void sci_stop_rx(struct uart_port *port); --static int sci_request_irq(struct sci_port *port); --static void sci_free_irq(struct sci_port *port); - - static struct sci_port sci_ports[]; - static struct uart_driver sci_uart_driver; -@@ -95,9 +83,9 @@ - #define SCI_NPORTS sci_uart_driver.nr - - #if defined(CONFIG_SH_STANDARD_BIOS) || defined(CONFIG_SH_KGDB) -- --static void handle_error(struct uart_port *port) --{ /* Clear error flags */ -+static inline void handle_error(struct uart_port *port) -+{ -+ /* Clear error flags */ - sci_out(port, SCxSR, SCxSR_ERROR_CLEAR(port)); - } - -@@ -122,28 +110,9 @@ - - return c; - } -- --/* Taken from sh-stub.c of GDB 4.18 */ --static const char hexchars[] = "0123456789abcdef"; -- --static __inline__ char highhex(int x) --{ -- return hexchars[(x >> 4) & 0xf]; --} -- --static __inline__ char lowhex(int x) --{ -- return hexchars[x & 0xf]; --} -- - #endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */ - --/* -- * Send the packet in buffer. The host gets one chance to read it. -- * This routine does not wait for a positive acknowledge. -- */ -- --#ifdef CONFIG_SERIAL_SH_SCI_CONSOLE -+#if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) || defined(CONFIG_SH_KGDB) - static void put_char(struct uart_port *port, char c) - { - unsigned long flags; -@@ -161,7 +130,9 @@ - - local_irq_restore(flags); - } -+#endif - -+#ifdef CONFIG_SERIAL_SH_SCI_CONSOLE - static void put_string(struct sci_port *sci_port, const char *buffer, int count) - { - struct uart_port *port = &sci_port->port; -@@ -214,96 +185,28 @@ - } - #endif /* CONFIG_SERIAL_SH_SCI_CONSOLE */ - -- - #ifdef CONFIG_SH_KGDB -- --/* Is the SCI ready, ie is there a char waiting? */ --static int kgdb_is_char_ready(struct sci_port *port) --{ -- unsigned short status = sci_in(port, SCxSR); -- -- if (status & (SCxSR_ERRORS(port) | SCxSR_BRK(port))) -- kgdb_handle_error(port); -- -- return (status & SCxSR_RDxF(port)); --} -- --/* Write a char */ --static void kgdb_put_char(struct sci_port *port, char c) --{ -- unsigned short status; -- -- do -- status = sci_in(port, SCxSR); -- while (!(status & SCxSR_TDxE(port))); -- -- sci_out(port, SCxTDR, c); -- sci_in(port, SCxSR); /* Dummy read */ -- sci_out(port, SCxSR, SCxSR_TDxE_CLEAR(port)); --} -- --/* Get a char if there is one, else ret -1 */ --static int kgdb_get_char(struct sci_port *port) --{ -- int c; -- -- if (kgdb_is_char_ready(port) == 0) -- c = -1; -- else { -- c = sci_in(port, SCxRDR); -- sci_in(port, SCxSR); /* Dummy read */ -- sci_out(port, SCxSR, SCxSR_RDxF_CLEAR(port)); -- } -- -- return c; --} -- --/* Called from kgdbstub.c to get a character, i.e. is blocking */ - static int kgdb_sci_getchar(void) - { -- volatile int c; -+ int c; - - /* Keep trying to read a character, this could be neater */ -- while ((c = kgdb_get_char(kgdb_sci_port)) < 0); -+ while ((c = get_char(kgdb_sci_port)) < 0) -+ cpu_relax(); - - return c; - } - --/* Called from kgdbstub.c to put a character, just a wrapper */ --static void kgdb_sci_putchar(int c) -+static inline void kgdb_sci_putchar(int c) - { -- -- kgdb_put_char(kgdb_sci_port, c); -+ put_char(kgdb_sci_port, c); - } -- --/* Clear any errors on the SCI */ --static void kgdb_handle_error(struct sci_port *port) --{ -- sci_out(port, SCxSR, SCxSR_ERROR_CLEAR(port)); /* Clear error flags */ --} -- --/* Breakpoint if there's a break sent on the serial port */ --static void kgdb_break_interrupt(int irq, void *ptr, struct pt_regs *regs) --{ -- struct sci_port *port = ptr; -- unsigned short status = sci_in(port, SCxSR); -- -- if (status & SCxSR_BRK(port)) { -- -- /* Break into the debugger if a break is detected */ -- BREAKPOINT(); -- -- /* Clear */ -- sci_out(port, SCxSR, SCxSR_BREAK_CLEAR(port)); -- } --} -- - #endif /* CONFIG_SH_KGDB */ - - #if defined(__H8300S__) - enum { sci_disable, sci_enable }; - --static void h8300_sci_enable(struct uart_port* port, unsigned int ctrl) -+static void h8300_sci_config(struct uart_port* port, unsigned int ctrl) - { - volatile unsigned char *mstpcrl=(volatile unsigned char *)MSTPCRL; - int ch = (port->mapbase - SMR0) >> 3; -@@ -315,6 +218,16 @@ - *mstpcrl &= ~mask; - } - } -+ -+static inline void h8300_sci_enable(struct uart_port *port) -+{ -+ h8300_sci_config(port, sci_enable); -+} -+ -+static inline void h8300_sci_disable(struct uart_port *port) -+{ -+ h8300_sci_config(port, sci_disable); -+} - #endif - - #if defined(SCI_ONLY) || defined(SCI_AND_SCIF) -@@ -324,8 +237,13 @@ - int ch = (port->mapbase - SMR0) >> 3; - - /* set DDR regs */ -- H8300_GPIO_DDR(h8300_sci_pins[ch].port,h8300_sci_pins[ch].rx,H8300_GPIO_INPUT); -- H8300_GPIO_DDR(h8300_sci_pins[ch].port,h8300_sci_pins[ch].tx,H8300_GPIO_OUTPUT); -+ H8300_GPIO_DDR(h8300_sci_pins[ch].port, -+ h8300_sci_pins[ch].rx, -+ H8300_GPIO_INPUT); -+ H8300_GPIO_DDR(h8300_sci_pins[ch].port, -+ h8300_sci_pins[ch].tx, -+ H8300_GPIO_OUTPUT); -+ - /* tx mark output*/ - H8300_SCI_DR(ch) |= h8300_sci_pins[ch].tx; - } -@@ -380,7 +298,6 @@ - } - #endif - #else -- - /* For SH7750 */ - static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag) - { -@@ -397,10 +314,41 @@ - } - sci_out(port, SCFCR, fcr_val); - } -+#endif -+ -+#if defined(CONFIG_CPU_SUBTYPE_SH7760) || defined(CONFIG_CPU_SUBTYPE_SH7780) -+static inline int scif_txroom(struct uart_port *port) -+{ -+ return SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0x7f); -+} -+ -+static inline int scif_rxroom(struct uart_port *port) -+{ -+ return sci_in(port, SCRFDR) & 0x7f; -+} -+#else -+static inline int scif_txroom(struct uart_port *port) -+{ -+ return SCIF_TXROOM_MAX - (sci_in(port, SCFDR) >> 8); -+} - -+static inline int scif_rxroom(struct uart_port *port) -+{ -+ return sci_in(port, SCFDR) & SCIF_RFDC_MASK; -+} - #endif - #endif /* SCIF_ONLY || SCI_AND_SCIF */ - -+static inline int sci_txroom(struct uart_port *port) -+{ -+ return ((sci_in(port, SCxSR) & SCI_TDRE) != 0); -+} -+ -+static inline int sci_rxroom(struct uart_port *port) -+{ -+ return ((sci_in(port, SCxSR) & SCxSR_RDxF(port)) != 0); -+} -+ - /* ********************************************************************** * - * the interrupt related routines * - * ********************************************************************** */ -@@ -412,7 +360,7 @@ - unsigned long flags; - unsigned short status; - unsigned short ctrl; -- int count, txroom; -+ int count; - - status = sci_in(port, SCxSR); - if (!(status & SCxSR_TDxE(port))) { -@@ -428,21 +376,12 @@ - return; - } - --#if !defined(SCI_ONLY) -- if (port->type == PORT_SCIF) { --#if defined(CONFIG_CPU_SUBTYPE_SH7760) || defined(CONFIG_CPU_SUBTYPE_SH7780) -- txroom = SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0x7f); --#else -- txroom = SCIF_TXROOM_MAX - (sci_in(port, SCFDR)>>8); --#endif -- } else { -- txroom = (sci_in(port, SCxSR) & SCI_TDRE)?1:0; -- } --#else -- txroom = (sci_in(port, SCxSR) & SCI_TDRE)?1:0; -+#ifndef SCI_ONLY -+ if (port->type == PORT_SCIF) -+ count = scif_txroom(port); -+ else - #endif -- -- count = txroom; -+ count = sci_txroom(port); - - do { - unsigned char c; -@@ -491,6 +430,7 @@ - static inline void sci_receive_chars(struct uart_port *port, - struct pt_regs *regs) - { -+ struct sci_port *sci_port = (struct sci_port *)port; - struct tty_struct *tty = port->info->tty; - int i, count, copied = 0; - unsigned short status; -@@ -502,18 +442,11 @@ - - while (1) { - #if !defined(SCI_ONLY) -- if (port->type == PORT_SCIF) { --#if defined(CONFIG_CPU_SUBTYPE_SH7760) || defined(CONFIG_CPU_SUBTYPE_SH7780) -- count = sci_in(port, SCRFDR) & 0x7f; --#else -- count = sci_in(port, SCFDR)&SCIF_RFDC_MASK ; --#endif -- } else { -- count = (sci_in(port, SCxSR)&SCxSR_RDxF(port))?1:0; -- } --#else -- count = (sci_in(port, SCxSR)&SCxSR_RDxF(port))?1:0; -+ if (port->type == PORT_SCIF) -+ count = scif_rxroom(port); -+ else - #endif -+ count = sci_rxroom(port); - - /* Don't copy more bytes than there is room for in the buffer */ - count = tty_buffer_request_room(tty, count); -@@ -524,11 +457,10 @@ - - if (port->type == PORT_SCI) { - char c = sci_in(port, SCxRDR); -- if(((struct sci_port *)port)->break_flag -- || uart_handle_sysrq_char(port, c, regs)) { -+ if (uart_handle_sysrq_char(port, c, regs) || sci_port->break_flag) - count = 0; -- } else { -- tty_insert_flip_char(tty, c, TTY_NORMAL); -+ else { -+ tty_insert_flip_char(tty, c, TTY_NORMAL); - } - } else { - for (i=0; i<count; i++) { -@@ -536,15 +468,17 @@ - status = sci_in(port, SCxSR); - #if defined(CONFIG_CPU_SH3) - /* Skip "chars" during break */ -- if (((struct sci_port *)port)->break_flag) { -+ if (sci_port->break_flag) { - if ((c == 0) && - (status & SCxSR_FER(port))) { - count--; i--; - continue; - } -+ - /* Nonzero => end-of-break */ - pr_debug("scif: debounce<%02x>\n", c); -- ((struct sci_port *)port)->break_flag = 0; -+ sci_port->break_flag = 0; -+ - if (STEPFN(c)) { - count--; i--; - continue; -@@ -601,15 +535,17 @@ - /* Ensure that two consecutive samples find the break over. */ - static void sci_break_timer(unsigned long data) - { -- struct sci_port * port = (struct sci_port *)data; -- if(sci_rxd_in(&port->port) == 0) { -+ struct sci_port *port = (struct sci_port *)data; -+ -+ if (sci_rxd_in(&port->port) == 0) { - port->break_flag = 1; -- sci_schedule_break_timer(port); -- } else if(port->break_flag == 1){ -+ sci_schedule_break_timer(port); -+ } else if (port->break_flag == 1) { - /* break is over. */ - port->break_flag = 2; -- sci_schedule_break_timer(port); -- } else port->break_flag = 0; -+ sci_schedule_break_timer(port); -+ } else -+ port->break_flag = 0; - } - - static inline int sci_handle_errors(struct uart_port *port) -@@ -618,40 +554,41 @@ - unsigned short status = sci_in(port, SCxSR); - struct tty_struct *tty = port->info->tty; - -- if (status&SCxSR_ORER(port)) { -+ if (status & SCxSR_ORER(port)) { - /* overrun error */ -- if(tty_insert_flip_char(tty, 0, TTY_OVERRUN)) -+ if (tty_insert_flip_char(tty, 0, TTY_OVERRUN)) - copied++; - pr_debug("sci: overrun error\n"); - } - -- if (status&SCxSR_FER(port)) { -+ if (status & SCxSR_FER(port)) { - if (sci_rxd_in(port) == 0) { - /* Notify of BREAK */ -- struct sci_port * sci_port = (struct sci_port *)port; -- if(!sci_port->break_flag) { -- sci_port->break_flag = 1; -- sci_schedule_break_timer((struct sci_port *)port); -+ struct sci_port *sci_port = (struct sci_port *)port; -+ -+ if (!sci_port->break_flag) { -+ sci_port->break_flag = 1; -+ sci_schedule_break_timer(sci_port); -+ - /* Do sysrq handling. */ -- if(uart_handle_break(port)) -+ if (uart_handle_break(port)) - return 0; - pr_debug("sci: BREAK detected\n"); -- if(tty_insert_flip_char(tty, 0, TTY_BREAK)) -+ if (tty_insert_flip_char(tty, 0, TTY_BREAK)) - copied++; - } -- } -- else { -+ } else { - /* frame error */ -- if(tty_insert_flip_char(tty, 0, TTY_FRAME)) -+ if (tty_insert_flip_char(tty, 0, TTY_FRAME)) - copied++; - pr_debug("sci: frame error\n"); - } - } - -- if (status&SCxSR_PER(port)) { -- if(tty_insert_flip_char(tty, 0, TTY_PARITY)) -- copied++; -+ if (status & SCxSR_PER(port)) { - /* parity error */ -+ if (tty_insert_flip_char(tty, 0, TTY_PARITY)) -+ copied++; - pr_debug("sci: parity error\n"); - } - -@@ -756,6 +693,12 @@ - - /* Handle BREAKs */ - sci_handle_breaks(port); -+ -+#ifdef CONFIG_SH_KGDB -+ /* Break into the debugger if a break is detected */ -+ BREAKPOINT(); -+#endif -+ - sci_out(port, SCxSR, SCxSR_BREAK_CLEAR(port)); - - return IRQ_HANDLED; -@@ -964,9 +907,8 @@ - { - struct sci_port *s = &sci_ports[port->line]; - --#if defined(__H8300S__) -- h8300_sci_enable(port, sci_enable); --#endif -+ if (s->enable) -+ s->enable(port); - - sci_request_irq(s); - sci_start_tx(port); -@@ -983,9 +925,8 @@ - sci_stop_tx(port); - sci_free_irq(s); - --#if defined(__H8300S__) -- h8300_sci_enable(port, sci_disable); --#endif -+ if (s->disable) -+ s->disable(port); - } - - static void sci_set_termios(struct uart_port *port, struct termios *termios, -@@ -1434,6 +1375,8 @@ - .type = PORT_SCI, - .irqs = H8S_SCI_IRQS0, - .init_pins = sci_init_pins_sci, -+ .enable = h8300_sci_enable, -+ .disable = h8300_sci_disable, - }, - { - .port = { -@@ -1448,6 +1391,8 @@ - .type = PORT_SCI, - .irqs = H8S_SCI_IRQS1, - .init_pins = sci_init_pins_sci, -+ .enable = h8300_sci_enable, -+ .disable = h8300_sci_disable, - }, - { - .port = { -@@ -1462,6 +1407,8 @@ - .type = PORT_SCI, - .irqs = H8S_SCI_IRQS2, - .init_pins = sci_init_pins_sci, -+ .enable = h8300_sci_enable, -+ .disable = h8300_sci_disable, - }, - #elif defined(CONFIG_CPU_SUBTYPE_SH7770) - { -@@ -1569,19 +1516,21 @@ - sci_config_port(port, 0); - #endif - -+ if (serial_console_port->enable) -+ serial_console_port->enable(port); -+ - /* - * We need to set the initial uartclk here, since otherwise it will - * only ever be setup at sci_init() time. - */ - #if defined(__H8300H__) || defined(__H8300S__) - port->uartclk = CONFIG_CPU_CLOCK; -- --#if defined(__H8300S__) -- h8300_sci_enable(port, sci_enable); --#endif - #elif defined(CONFIG_SUPERH64) - port->uartclk = current_cpu_info.module_clock * 16; - #else -+ /* -+ * XXX: Use a proper clock for SCI/SCIF -+ */ - { - struct clk *clk = clk_get("module_clk"); - port->uartclk = clk_get_rate(clk) * 16; -@@ -1726,6 +1675,7 @@ - #elif defined(CONFIG_SUPERH64) - sciport->port.uartclk = current_cpu_info.module_clock * 16; - #else -+ /* XXX: We should use a proper SCI/SCIF clock */ - struct clk *clk = clk_get("module_clk"); - sciport->port.uartclk = clk_get_rate(clk) * 16; - clk_put(clk); -@@ -1762,3 +1712,4 @@ - module_init(sci_init); - module_exit(sci_exit); - -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/serial/sh-sci.h linux-2.6.17/drivers/serial/sh-sci.h ---- linux-2.6.17-vanilla/drivers/serial/sh-sci.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/serial/sh-sci.h 2006-07-12 16:54:24.000000000 +0000 -@@ -279,6 +279,8 @@ - int type; - unsigned char irqs[4]; /* ERI, RXI, TXI, BRI */ - void (*init_pins)(struct uart_port *port, unsigned int cflag); -+ void (*enable)(struct uart_port *port); -+ void (*disable)(struct uart_port *port); - int break_flag; - struct timer_list break_timer; - }; -diff -ruN linux-2.6.17-vanilla/drivers/sh/CVS/Entries linux-2.6.17/drivers/sh/CVS/Entries ---- linux-2.6.17-vanilla/drivers/sh/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/sh/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,2 @@ -+/Makefile/1.3/Thu Nov 10 14:20:52 2005/-ko/ -+D/superhyway//// -diff -ruN linux-2.6.17-vanilla/drivers/sh/CVS/Repository linux-2.6.17/drivers/sh/CVS/Repository ---- linux-2.6.17-vanilla/drivers/sh/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/sh/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/sh -diff -ruN linux-2.6.17-vanilla/drivers/sh/CVS/Root linux-2.6.17/drivers/sh/CVS/Root ---- linux-2.6.17-vanilla/drivers/sh/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/sh/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/sh/Makefile linux-2.6.17/drivers/sh/Makefile ---- linux-2.6.17-vanilla/drivers/sh/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/sh/Makefile 2006-07-12 16:54:24.000000000 +0000 -@@ -2,5 +2,5 @@ - # Makefile for the SuperH specific drivers. - # - --obj-$(CONFIG_SUPERHYWAY) += superhyway/ -+obj-$(CONFIG_SUPERHYWAY) += superhyway/ - -diff -ruN linux-2.6.17-vanilla/drivers/sh/superhyway/CVS/Entries linux-2.6.17/drivers/sh/superhyway/CVS/Entries ---- linux-2.6.17-vanilla/drivers/sh/superhyway/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/sh/superhyway/CVS/Entries 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Makefile/1.1/Fri Mar 4 18:56:52 2005/-ko/ -+/superhyway-sysfs.c/1.3/Mon Aug 29 21:01:19 2005/-ko/ -+/superhyway.c/1.4/Mon Mar 27 21:06:14 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/sh/superhyway/CVS/Repository linux-2.6.17/drivers/sh/superhyway/CVS/Repository ---- linux-2.6.17-vanilla/drivers/sh/superhyway/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/sh/superhyway/CVS/Repository 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/sh/superhyway -diff -ruN linux-2.6.17-vanilla/drivers/sh/superhyway/CVS/Root linux-2.6.17/drivers/sh/superhyway/CVS/Root ---- linux-2.6.17-vanilla/drivers/sh/superhyway/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/sh/superhyway/CVS/Root 2006-07-12 16:54:24.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/usb/CVS/Entries linux-2.6.17/drivers/usb/CVS/Entries ---- linux-2.6.17-vanilla/drivers/usb/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/usb/CVS/Entries 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,2 @@ -+D/host//// -+/Kconfig/1.3/Wed Jul 5 14:51:25 2006/-ko/ -diff -ruN linux-2.6.17-vanilla/drivers/usb/CVS/Repository linux-2.6.17/drivers/usb/CVS/Repository ---- linux-2.6.17-vanilla/drivers/usb/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/usb/CVS/Repository 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/usb -diff -ruN linux-2.6.17-vanilla/drivers/usb/CVS/Root linux-2.6.17/drivers/usb/CVS/Root ---- linux-2.6.17-vanilla/drivers/usb/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/usb/CVS/Root 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/usb/Kconfig linux-2.6.17/drivers/usb/Kconfig ---- linux-2.6.17-vanilla/drivers/usb/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/usb/Kconfig 2006-07-12 16:54:25.000000000 +0000 -@@ -29,6 +29,8 @@ - default y if PPC_MPC52xx - # MIPS: - default y if SOC_AU1X00 -+ # SH: -+ default y if VOYAGERGX - # more: - default PCI - -diff -ruN linux-2.6.17-vanilla/drivers/usb/host/CVS/Entries linux-2.6.17/drivers/usb/host/CVS/Entries ---- linux-2.6.17-vanilla/drivers/usb/host/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/usb/host/CVS/Entries 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,4 @@ -+/ohci-voyagergx.c/1.4/Fri Jan 27 16:11:52 2006/-ko/ -+/Kconfig/1.12/Wed Jul 5 14:51:27 2006/-ko/ -+/ohci-hcd.c/1.14/Wed Jul 5 14:51:27 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/usb/host/CVS/Repository linux-2.6.17/drivers/usb/host/CVS/Repository ---- linux-2.6.17-vanilla/drivers/usb/host/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/usb/host/CVS/Repository 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/usb/host -diff -ruN linux-2.6.17-vanilla/drivers/usb/host/CVS/Root linux-2.6.17/drivers/usb/host/CVS/Root ---- linux-2.6.17-vanilla/drivers/usb/host/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/usb/host/CVS/Root 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/usb/host/Kconfig linux-2.6.17/drivers/usb/host/Kconfig ---- linux-2.6.17-vanilla/drivers/usb/host/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/usb/host/Kconfig 2006-07-12 16:54:25.000000000 +0000 -@@ -148,3 +148,13 @@ - To compile this driver as a module, choose M here: the - module will be called "sl811_cs". - -+config USB_SM501 -+ tristate "USB Host Controller in SM501 support" -+ depends on USB && VOYAGERGX -+ help -+ Say Y here if you have SM501 USB host controller your system. -+ -+ if you do not know what this is, please say N. -+ -+ To compile this driver as a module, choose M here: the -+ module will be called SM501. -diff -ruN linux-2.6.17-vanilla/drivers/usb/host/ohci-hcd.c linux-2.6.17/drivers/usb/host/ohci-hcd.c ---- linux-2.6.17-vanilla/drivers/usb/host/ohci-hcd.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/usb/host/ohci-hcd.c 2006-07-12 16:54:25.000000000 +0000 -@@ -878,7 +878,9 @@ - MODULE_DESCRIPTION (DRIVER_INFO); - MODULE_LICENSE ("GPL"); - --#ifdef CONFIG_PCI -+#ifdef CONFIG_USB_SM501 -+#include "ohci-voyagergx.c" -+#elif defined(CONFIG_PCI) - #include "ohci-pci.c" - #endif - -@@ -923,6 +925,7 @@ - || defined (CONFIG_SOC_AU1X00) \ - || defined (CONFIG_USB_OHCI_HCD_PPC_SOC) \ - || defined (CONFIG_ARCH_AT91RM9200) \ -+ || defined (CONFIG_USB_SM501) \ - ) - #error "missing bus glue for ohci-hcd" - #endif -diff -ruN linux-2.6.17-vanilla/drivers/usb/host/ohci-voyagergx.c linux-2.6.17/drivers/usb/host/ohci-voyagergx.c ---- linux-2.6.17-vanilla/drivers/usb/host/ohci-voyagergx.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/usb/host/ohci-voyagergx.c 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,259 @@ -+/* -+ * SM501 USB HCD for Linux Version. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ * -+ * Copyright 2003 (c) Lineo uSolutions,Inc. -+ * Copyright 2004 (c) Paul Mundt -+ */ -+ -+#include <linux/dma-mapping.h> -+#include <linux/init.h> -+#include <linux/module.h> -+#include <linux/platform_device.h> -+#include <asm/mach/voyagergx_reg.h> -+ -+extern int usb_disabled(void); -+ -+static void usb_hcd_voyager_remove(struct usb_hcd *hcd, struct platform_device *pdev); -+static int __devinit ohci_voyager_start(struct usb_hcd *hcd); -+static int __init voyagergx_ohci_init(void); -+static void __exit voyagergx_ohci_exit(void); -+ -+/* -+ * VoyagerGX USB, when not used as a PCI device. -+ */ -+#define VOYAGER_OHCI_NAME "voyager-ohci" -+ -+static void __init voyagergx_ohci_configure(void) -+{ -+ unsigned long val; -+ -+ // Power Mode 0 Gate -+ val = inl(POWER_MODE0_GATE); -+ outl((val | POWER_MODE0_GATE_UH), POWER_MODE0_GATE); -+ -+ val = inl(POWER_MODE1_GATE); -+ outl((val | POWER_MODE1_GATE_UH), POWER_MODE1_GATE); -+ -+ //Miscellaneous USB Clock Selsct -+ val = inl(MISC_CTRL); -+ val &= ~MISC_CTRL_USBCLK_48; -+ outl(val, MISC_CTRL); -+ -+ // Interrupt Mask -+ val = inl(VOYAGER_INT_MASK); -+ val |= 0x00000040; -+ outl(val, VOYAGER_INT_MASK); -+} -+ -+static int usb_hcd_voyager_probe(const struct hc_driver *driver, -+ struct platform_device *dev) -+{ -+ struct usb_hcd *hcd; -+ struct ohci_hcd *ohci; -+ struct resource *res; -+ int retval, irq; -+ -+ res = platform_get_resource(dev, IORESOURCE_MEM, 0); -+ if (!res) { -+ err("no IO resources defined"); -+ return -ENODEV; -+ } -+ irq = platform_get_irq(dev, 0); -+ -+ hcd = usb_create_hcd(driver, &dev->dev, "sm501"); -+ if (PTR_ERR(hcd) == 0) { -+ err("usb_create_hcd failed"); -+ return -ENOMEM; -+ } -+ -+ hcd->rsrc_start = res->start; -+ hcd->rsrc_len = res->end - res->start + 1; -+ hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); -+ if (PTR_ERR(hcd->regs) == 0) { -+ err("ioremap failed"); -+ retval = -ENOMEM; -+ goto err1; -+ } -+ -+ ohci = hcd_to_ohci(hcd); -+ ohci_hcd_init(ohci); -+ -+ retval = hcd_buffer_create(hcd); -+ if (retval != 0) { -+ err("hcd_buffer_create failed, %d", retval); -+ goto err2; -+ } -+ -+ retval = usb_add_hcd(hcd, irq, SA_INTERRUPT); -+ if (!retval) -+ return retval; /* all done */ -+ -+ /* error path */ -+ hcd_buffer_destroy(hcd); -+err2: -+ iounmap(hcd->regs); -+err1: -+ usb_put_hcd(hcd); -+ -+ return retval; -+} -+ -+static void usb_hcd_voyager_remove(struct usb_hcd *hcd, struct platform_device *dev) -+{ -+ hcd_buffer_destroy(hcd); -+ usb_remove_hcd(hcd); -+ iounmap(hcd->regs); -+ usb_put_hcd(hcd); -+} -+ -+static int __devinit ohci_voyager_start(struct usb_hcd *hcd) -+{ -+ struct ohci_hcd *ohci = hcd_to_ohci(hcd); -+ int ret; -+ -+ if ((ret = ohci_init(ohci)) < 0) -+ return ret; -+ -+ if ((ret = ohci_run(ohci)) < 0) { -+ err("can't start %s", hcd->self.bus_name); -+ ohci_stop(hcd); -+ return ret; -+ } -+ -+ return 0; -+} -+ -+static const struct hc_driver voyager_hc_driver = { -+ .description = hcd_name, -+ .product_desc = "SM501 OHCI", -+ .hcd_priv_size = sizeof(struct ohci_hcd), -+ -+ /* -+ * generic hardware linkage -+ */ -+ .irq = ohci_irq, -+ .flags = HCD_USB11, -+ -+ /* -+ * basic lifecycle operations -+ */ -+ .start = ohci_voyager_start, -+ .stop = ohci_stop, -+ -+ /* -+ * managing i/o requests and associated device resources -+ */ -+ .urb_enqueue = ohci_urb_enqueue, -+ .urb_dequeue = ohci_urb_dequeue, -+ .endpoint_disable = ohci_endpoint_disable, -+ -+ /* -+ * scheduling support -+ */ -+ .get_frame_number = ohci_get_frame, -+ -+ /* -+ * root hub support -+ */ -+ .hub_status_data = ohci_hub_status_data, -+ .hub_control = ohci_hub_control, -+#ifdef CONFIG_PM -+ .bus_suspend = ohci_bus_suspend, -+ .bus_resume = ohci_bus_resume, -+#endif -+ .start_port_reset = ohci_start_port_reset, -+}; -+ -+static int usb_hcd_voyager_drv_probe(struct platform_device *pdev) -+{ -+ if (usb_disabled()) -+ return -ENODEV; -+ -+ return usb_hcd_voyager_probe(&voyager_hc_driver, pdev); -+} -+ -+static int usb_hcd_voyager_drv_remove(struct platform_device *pdev) -+{ -+ struct usb_hcd *hcd = platform_get_drvdata(pdev); -+ -+ usb_hcd_voyager_remove(hcd, pdev); -+ -+ return 0; -+} -+ -+/* -+ * Driver definitions to register with SH Bus -+ */ -+static struct platform_driver usb_hcd_voyager_driver = { -+ .driver = { -+ .owner = THIS_MODULE, -+ .name = VOYAGER_OHCI_NAME, -+ }, -+ .probe = usb_hcd_voyager_drv_probe, -+ .remove = usb_hcd_voyager_drv_remove, -+}; -+ -+static struct resource voyager_hcd_res[] = { -+ [0] = { -+ .start = VOYAGER_USBH_BASE, -+ .end = VOYAGER_USBH_BASE + 0xfff, -+ .flags = IORESOURCE_MEM, -+ }, -+ [1] = { -+ .start = VOYAGER_USBH_IRQ, -+ .end = VOYAGER_USBH_IRQ, -+ .flags = IORESOURCE_IRQ, -+ }, -+}; -+ -+static struct platform_device usb_hcd_voyager_dev = { -+ .name = VOYAGER_OHCI_NAME, -+ .id = 0, -+ .resource = voyager_hcd_res, -+ .num_resources = ARRAY_SIZE(voyager_hcd_res), -+}; -+ -+static int __init voyagergx_ohci_init(void) -+{ -+ int ret; -+ -+ if (usb_disabled()) -+ return -ENODEV; -+ -+ voyagergx_ohci_configure(); -+ -+ ret = platform_driver_register(&usb_hcd_voyager_driver); -+ if (ret) -+ return -ENODEV; -+ -+ ret = platform_device_register(&usb_hcd_voyager_dev); -+ if (ret) { -+ platform_driver_unregister(&usb_hcd_voyager_driver); -+ return -ENODEV; -+ } -+ -+ return ret; -+} -+ -+static void __exit voyagergx_ohci_exit(void) -+{ -+ platform_device_unregister(&usb_hcd_voyager_dev); -+ platform_driver_unregister(&usb_hcd_voyager_driver); -+} -+ -+module_init(voyagergx_ohci_init); -+module_exit(voyagergx_ohci_exit); -diff -ruN linux-2.6.17-vanilla/drivers/video/CVS/Entries linux-2.6.17/drivers/video/CVS/Entries ---- linux-2.6.17-vanilla/drivers/video/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/CVS/Entries 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,7 @@ -+/hitfb.c/1.22/Sun Jan 29 17:46:24 2006/-ko/ -+/pvr2fb.c/1.27/Sun Jan 8 13:56:39 2006// -+D/backlight//// -+D/console//// -+D/voyager//// -+/Kconfig/1.27/Wed Jul 5 14:51:28 2006/-ko/ -+/Makefile/1.22/Wed Jul 5 14:51:28 2006/-ko/ -diff -ruN linux-2.6.17-vanilla/drivers/video/CVS/Repository linux-2.6.17/drivers/video/CVS/Repository ---- linux-2.6.17-vanilla/drivers/video/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/CVS/Repository 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/video -diff -ruN linux-2.6.17-vanilla/drivers/video/CVS/Root linux-2.6.17/drivers/video/CVS/Root ---- linux-2.6.17-vanilla/drivers/video/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/CVS/Root 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/video/Kconfig linux-2.6.17/drivers/video/Kconfig ---- linux-2.6.17-vanilla/drivers/video/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/video/Kconfig 2006-07-12 16:54:25.000000000 +0000 -@@ -151,6 +151,21 @@ - help - Support the Permedia2 FIFO disconnect feature (see CONFIG_FB_PM2). - -+config FB_VOYAGER_GX -+ bool "Silicon Motion Voyager GX support" -+ depends on FB && VOYAGERGX -+ select FB_CFB_FILLRECT -+ select FB_CFB_COPYAREA -+ select FB_CFB_IMAGEBLIT -+ help -+ Say Y to enable support for the Silicon Motion VoyagerGX framebuffer. -+ -+config FB_VOYAGER_GX_MP -+ bool "Voyager multi plane support" -+ depends on FB_VOYAGER_GX -+ help -+ Say Y to enable support VoyagerGX multi plane. -+ - config FB_ARMCLCD - tristate "ARM PrimeCell PL110 support" - depends on FB && ARM && ARM_AMBA -diff -ruN linux-2.6.17-vanilla/drivers/video/Makefile linux-2.6.17/drivers/video/Makefile ---- linux-2.6.17-vanilla/drivers/video/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/video/Makefile 2006-07-12 16:54:25.000000000 +0000 -@@ -38,6 +38,8 @@ - obj-$(CONFIG_FB_KYRO) += kyro/ - obj-$(CONFIG_FB_SAVAGE) += savage/ - obj-$(CONFIG_FB_GEODE) += geode/ -+obj-$(CONFIG_FB_VOYAGER_GX) += voyager/ -+ - obj-$(CONFIG_FB_I810) += vgastate.o - obj-$(CONFIG_FB_NEOMAGIC) += neofb.o vgastate.o - obj-$(CONFIG_FB_VIRGE) += virgefb.o -diff -ruN linux-2.6.17-vanilla/drivers/video/backlight/CVS/Entries linux-2.6.17/drivers/video/backlight/CVS/Entries ---- linux-2.6.17-vanilla/drivers/video/backlight/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/backlight/CVS/Entries 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,3 @@ -+/Kconfig/1.2/Wed Jul 5 14:51:29 2006// -+/hp680_bl.c/1.6/Wed Jul 12 16:51:58 2006// -+D -diff -ruN linux-2.6.17-vanilla/drivers/video/backlight/CVS/Repository linux-2.6.17/drivers/video/backlight/CVS/Repository ---- linux-2.6.17-vanilla/drivers/video/backlight/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/backlight/CVS/Repository 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/video/backlight -diff -ruN linux-2.6.17-vanilla/drivers/video/backlight/CVS/Root linux-2.6.17/drivers/video/backlight/CVS/Root ---- linux-2.6.17-vanilla/drivers/video/backlight/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/backlight/CVS/Root 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/video/backlight/Kconfig linux-2.6.17/drivers/video/backlight/Kconfig ---- linux-2.6.17-vanilla/drivers/video/backlight/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/video/backlight/Kconfig 2006-07-12 16:54:25.000000000 +0000 -@@ -51,7 +51,7 @@ - backlight driver. - - config BACKLIGHT_HP680 -- tristate "HP Jornada 680 Backlight Driver" -+ tristate "HP Jornada 680 Backlight Driver " - depends on BACKLIGHT_DEVICE && SH_HP6XX - default y - help -diff -ruN linux-2.6.17-vanilla/drivers/video/backlight/hp680_bl.c linux-2.6.17/drivers/video/backlight/hp680_bl.c ---- linux-2.6.17-vanilla/drivers/video/backlight/hp680_bl.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/video/backlight/hp680_bl.c 2006-07-12 16:54:25.000000000 +0000 -@@ -1,7 +1,7 @@ - /* - * Backlight Driver for HP Jornada 680 - * -- * Copyright (c) 2005 Andriy Skulysh -+ * Copyright (c) 2005 Andriy Skulysh - * - * Based on Sharp's Corgi Backlight Driver - * -@@ -20,7 +20,7 @@ - - #include <asm/cpu/dac.h> - #include <asm/hp6xx/hp6xx.h> --#include <asm/hd64461/hd64461.h> -+#include <asm/hd64461.h> - - #define HP680_MAX_INTENSITY 255 - #define HP680_DEFAULT_INTENSITY 10 -@@ -64,7 +64,6 @@ - current_intensity = intensity; - } - -- - #ifdef CONFIG_PM - static int hp680bl_suspend(struct platform_device *dev, pm_message_t state) - { -@@ -102,6 +101,8 @@ - .update_status = hp680bl_set_intensity, - }; - -+static struct backlight_device *hp680_backlight_device; -+ - static int __init hp680bl_probe(struct platform_device *dev) - { - hp680_backlight_device = backlight_device_register ("hp680-bl", -@@ -163,6 +164,6 @@ - module_init(hp680bl_init); - module_exit(hp680bl_exit); - --MODULE_AUTHOR("Andriy Skulysh <askulysh@image.kiev.ua>"); -+MODULE_AUTHOR("Andriy Skulysh <askulysh@gmail.com>"); - MODULE_DESCRIPTION("HP Jornada 680 Backlight Driver"); - MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/video/console/CVS/Entries linux-2.6.17/drivers/video/console/CVS/Entries ---- linux-2.6.17-vanilla/drivers/video/console/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/console/CVS/Entries 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,2 @@ -+/Kconfig/1.7/Wed Jul 5 14:51:30 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/video/console/CVS/Repository linux-2.6.17/drivers/video/console/CVS/Repository ---- linux-2.6.17-vanilla/drivers/video/console/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/console/CVS/Repository 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/video/console -diff -ruN linux-2.6.17-vanilla/drivers/video/console/CVS/Root linux-2.6.17/drivers/video/console/CVS/Root ---- linux-2.6.17-vanilla/drivers/video/console/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/console/CVS/Root 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/video/console/Kconfig linux-2.6.17/drivers/video/console/Kconfig ---- linux-2.6.17-vanilla/drivers/video/console/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/video/console/Kconfig 2006-07-12 16:54:25.000000000 +0000 -@@ -6,7 +6,7 @@ - - config VGA_CONSOLE - bool "VGA text console" if EMBEDDED || !X86 -- depends on !ARCH_ACORN && !ARCH_EBSA110 && !4xx && !8xx && !SPARC && !M68K && !PARISC && !FRV && !ARCH_VERSATILE -+ depends on !ARCH_ACORN && !ARCH_EBSA110 && !4xx && !8xx && !SPARC && !M68K && !PARISC && !FRV && !ARCH_VERSATILE && !SUPERH - default y - help - Saying Y here will allow you to use Linux in text mode through a -diff -ruN linux-2.6.17-vanilla/drivers/video/hitfb.c linux-2.6.17/drivers/video/hitfb.c ---- linux-2.6.17-vanilla/drivers/video/hitfb.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/video/hitfb.c 2006-07-12 16:54:25.000000000 +0000 -@@ -4,7 +4,7 @@ - * (C) 1999 Mihai Spatar - * (C) 2000 YAEGASHI Takeshi - * (C) 2003, 2004 Paul Mundt -- * (C) 2003, 2004 Andriy Skulysh -+ * (C) 2003, 2004, 2006 Andriy Skulysh - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file COPYING in the main directory of this archive for -@@ -22,18 +22,16 @@ - #include <linux/slab.h> - #include <linux/delay.h> - #include <linux/init.h> -+#include <linux/platform_device.h> - #include <linux/fb.h> - - #include <asm/machvec.h> - #include <asm/uaccess.h> - #include <asm/pgtable.h> - #include <asm/io.h> --#include <asm/hd64461/hd64461.h> -- --#ifdef MACH_HP600 -+#include <asm/hd64461.h> - #include <asm/cpu/dac.h> - #include <asm/hp6xx/hp6xx.h> --#endif - - #define WIDTH 640 - -@@ -47,7 +45,6 @@ - static struct fb_fix_screeninfo hitfb_fix __initdata = { - .id = "Hitachi HD64461", - .type = FB_TYPE_PACKED_PIXELS, -- .ypanstep = 8, - .accel = FB_ACCEL_NONE, - }; - -@@ -75,26 +72,14 @@ - if (truecolor) - saddr <<= 1; - -- fb_writew(width, HD64461_BBTDWR); -- fb_writew(height, HD64461_BBTDHR); -+ fb_writew(width-1, HD64461_BBTDWR); -+ fb_writew(height-1, HD64461_BBTDHR); - - fb_writew(saddr & 0xffff, HD64461_BBTDSARL); - fb_writew(saddr >> 16, HD64461_BBTDSARH); - - } - --static inline void hitfb_accel_solidfill(int truecolor, u16 dx, u16 dy, -- u16 width, u16 height, u16 color) --{ -- hitfb_accel_set_dest(truecolor, dx, dy, width, height); -- -- fb_writew(0x00f0, HD64461_BBTROPR); -- fb_writew(16, HD64461_BBTMDR); -- fb_writew(color, HD64461_GRSCR); -- -- hitfb_accel_start(truecolor); --} -- - static inline void hitfb_accel_bitblt(int truecolor, u16 sx, u16 sy, u16 dx, - u16 dy, u16 width, u16 height, u16 rop, - u32 mask_addr) -@@ -102,6 +87,8 @@ - u32 saddr, daddr; - u32 maddr = 0; - -+ height--; -+ width--; - fb_writew(rop, HD64461_BBTROPR); - if ((sy < dy) || ((sy == dy) && (sx <= dx))) { - saddr = WIDTH * (sy + height) + sx + width; -@@ -148,6 +135,7 @@ - if (rect->rop != ROP_COPY) - cfb_fillrect(p, rect); - else { -+ hitfb_accel_wait(); - fb_writew(0x00f0, HD64461_BBTROPR); - fb_writew(16, HD64461_BBTMDR); - -@@ -163,16 +151,15 @@ - rect->height); - hitfb_accel_start(0); - } -- hitfb_accel_wait(); - } - } - - static void hitfb_copyarea(struct fb_info *p, const struct fb_copyarea *area) - { -+ hitfb_accel_wait(); - hitfb_accel_bitblt(p->var.bits_per_pixel == 16, area->sx, area->sy, - area->dx, area->dy, area->width, area->height, - 0x00cc, 0); -- hitfb_accel_wait(); - } - - static int hitfb_pan_display(struct fb_var_screeninfo *var, -@@ -184,7 +171,7 @@ - if (xoffset != 0) - return -EINVAL; - -- fb_writew(yoffset, HD64461_LCDCBAR); -+ fb_writew((yoffset*info->fix.line_length)>>10, HD64461_LCDCBAR); - - return 0; - } -@@ -194,12 +181,6 @@ - unsigned short v; - - if (blank_mode) { --#ifdef MACH_HP600 -- sh_dac_disable(DAC_LCD_BRIGHTNESS); -- v = fb_readw(HD64461_GPBDR); -- v |= HD64461_GPBDR_LCDOFF; -- fb_writew(v, HD64461_GPBDR); --#endif - v = fb_readw(HD64461_LDR1); - v &= ~HD64461_LDR1_DON; - fb_writew(v, HD64461_LDR1); -@@ -215,19 +196,18 @@ - v = fb_readw(HD64461_STBCR); - v &= ~HD64461_STBCR_SLCDST; - fb_writew(v, HD64461_STBCR); --#ifdef MACH_HP600 -- sh_dac_enable(DAC_LCD_BRIGHTNESS); -- v = fb_readw(HD64461_GPBDR); -- v &= ~HD64461_GPBDR_LCDOFF; -- fb_writew(v, HD64461_GPBDR); --#endif -- v = fb_readw(HD64461_LDR1); -- v |= HD64461_LDR1_DON; -- fb_writew(v, HD64461_LDR1); - - v = fb_readw(HD64461_LCDCCR); -- v &= ~HD64461_LCDCCR_MOFF; -+ v &= ~(HD64461_LCDCCR_MOFF | HD64461_LCDCCR_STREQ); - fb_writew(v, HD64461_LCDCCR); -+ -+ do { -+ v = fb_readw(HD64461_LCDCCR); -+ } while(v&HD64461_LCDCCR_STBACK); -+ -+ v = fb_readw(HD64461_LDR1); -+ v |= HD64461_LDR1_DON; -+ fb_writew(v, HD64461_LDR1); - } - return 0; - } -@@ -235,7 +215,7 @@ - static int hitfb_setcolreg(unsigned regno, unsigned red, unsigned green, - unsigned blue, unsigned transp, struct fb_info *info) - { -- if (regno >= info->cmap.len) -+ if (regno >= 256) - return 1; - - switch (info->var.bits_per_pixel) { -@@ -246,6 +226,8 @@ - fb_writew(blue >> 10, HD64461_CPTWDR); - break; - case 16: -+ if (regno >= 16) -+ return 1; - ((u32 *) (info->pseudo_palette))[regno] = - ((red & 0xf800)) | - ((green & 0xfc00) >> 5) | ((blue & 0xf800) >> 11); -@@ -254,26 +236,113 @@ - return 0; - } - -+static int hitfb_sync(struct fb_info *info) -+{ -+ hitfb_accel_wait(); -+ -+ return 0; -+} -+ -+static int hitfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) -+{ -+ int maxy; -+ -+ var->xres = info->var.xres; -+ var->xres_virtual = info->var.xres; -+ var->yres = info->var.yres; -+ -+ if ((var->bits_per_pixel != 8) && (var->bits_per_pixel != 16)) -+ var->bits_per_pixel = info->var.bits_per_pixel; -+ -+ if (var->yres_virtual < var->yres) -+ var->yres_virtual = var->yres; -+ -+ maxy = info->fix.smem_len / var->xres; -+ -+ if (var->bits_per_pixel == 16) -+ maxy /= 2; -+ -+ if (var->yres_virtual > maxy) -+ var->yres_virtual = maxy; -+ -+ var->xoffset = 0; -+ var->yoffset = 0; -+ -+ switch (var->bits_per_pixel) { -+ case 8: -+ var->red.offset = 0; -+ var->red.length = 8; -+ var->green.offset = 0; -+ var->green.length = 8; -+ var->blue.offset = 0; -+ var->blue.length = 8; -+ var->transp.offset = 0; -+ var->transp.length = 0; -+ break; -+ case 16: /* RGB 565 */ -+ var->red.offset = 11; -+ var->red.length = 5; -+ var->green.offset = 5; -+ var->green.length = 6; -+ var->blue.offset = 0; -+ var->blue.length = 5; -+ var->transp.offset = 0; -+ var->transp.length = 0; -+ break; -+ } -+ -+ return 0; -+} -+ -+static int hitfb_set_par(struct fb_info *info) -+{ -+ unsigned short ldr3; -+ -+ switch (info->var.bits_per_pixel) { -+ case 8: -+ info->fix.line_length = info->var.xres; -+ info->fix.visual = FB_VISUAL_PSEUDOCOLOR; -+ info->fix.ypanstep = 16; -+ break; -+ case 16: -+ info->fix.line_length = info->var.xres*2; -+ info->fix.visual = FB_VISUAL_TRUECOLOR; -+ info->fix.ypanstep = 8; -+ break; -+ } -+ -+ fb_writew(info->fix.line_length, HD64461_LCDCLOR); -+ ldr3 = fb_readw(HD64461_LDR3); -+ ldr3 &= ~15; -+ ldr3 |= (info->var.bits_per_pixel == 8) ? 4 : 8; -+ fb_writew(ldr3, HD64461_LDR3); -+ return 0; -+} -+ - static struct fb_ops hitfb_ops = { - .owner = THIS_MODULE, -+ .fb_check_var = hitfb_check_var, -+ .fb_set_par = hitfb_set_par, - .fb_setcolreg = hitfb_setcolreg, - .fb_blank = hitfb_blank, -+ .fb_sync = hitfb_sync, - .fb_pan_display = hitfb_pan_display, - .fb_fillrect = hitfb_fillrect, - .fb_copyarea = hitfb_copyarea, - .fb_imageblit = cfb_imageblit, - }; - --int __init hitfb_init(void) -+static int __init hitfb_probe(struct platform_device *dev) - { - unsigned short lcdclor, ldr3, ldvndr; -- int size; - - if (fb_get_options("hitfb", NULL)) - return -ENODEV; - -+ hitfb_fix.mmio_start = CONFIG_HD64461_IOBASE+0x1000; -+ hitfb_fix.mmio_len = 0x1000; - hitfb_fix.smem_start = CONFIG_HD64461_IOBASE + 0x02000000; -- hitfb_fix.smem_len = (MACH_HP690) ? 1024 * 1024 : 512 * 1024; -+ hitfb_fix.smem_len = 512 * 1024; - - lcdclor = fb_readw(HD64461_LCDCLOR); - ldvndr = fb_readw(HD64461_LDVNDR); -@@ -323,12 +392,12 @@ - fb_info.var = hitfb_var; - fb_info.fix = hitfb_fix; - fb_info.pseudo_palette = pseudo_palette; -- fb_info.flags = FBINFO_DEFAULT; -+ fb_info.flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN | -+ FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA; - - fb_info.screen_base = (void *)hitfb_fix.smem_start; - -- size = (fb_info.var.bits_per_pixel == 8) ? 256 : 16; -- fb_alloc_cmap(&fb_info.cmap, size, 0); -+ fb_alloc_cmap(&fb_info.cmap, 256, 0); - - if (register_framebuffer(&fb_info) < 0) - return -EINVAL; -@@ -338,9 +407,75 @@ - return 0; - } - -+static int __devexit hitfb_remove(struct platform_device *dev) -+{ -+ return unregister_framebuffer(&fb_info); -+} -+ -+#ifdef CONFIG_PM -+static int hitfb_suspend(struct platform_device *dev, pm_message_t state) -+{ -+ u16 v; -+ -+ hitfb_blank(1,0); -+ v = fb_readw(HD64461_STBCR); -+ v |= HD64461_STBCR_SLCKE_IST; -+ fb_writew(v, HD64461_STBCR); -+ -+ return 0; -+} -+ -+static int hitfb_resume(struct platform_device *dev) -+{ -+ u16 v; -+ -+ v = fb_readw(HD64461_STBCR); -+ v &= ~HD64461_STBCR_SLCKE_OST; -+ msleep(100); -+ v = fb_readw(HD64461_STBCR); -+ v &= ~HD64461_STBCR_SLCKE_IST; -+ fb_writew(v, HD64461_STBCR); -+ hitfb_blank(0,0); -+ -+ return 0; -+} -+#endif -+ -+static struct platform_driver hitfb_driver = { -+ .probe = hitfb_probe, -+ .remove = __devexit_p(hitfb_remove), -+#ifdef CONFIG_PM -+ .suspend = hitfb_suspend, -+ .resume = hitfb_resume, -+#endif -+ .driver = { -+ .name = "hitfb", -+ }, -+}; -+ -+static struct platform_device hitfb_device = { -+ .name = "hitfb", -+ .id = -1, -+}; -+ -+static int __init hitfb_init(void) -+{ -+ int ret; -+ -+ ret = platform_driver_register(&hitfb_driver); -+ if (!ret) { -+ ret = platform_device_register(&hitfb_device); -+ if (ret) -+ platform_driver_unregister(&hitfb_driver); -+ } -+ return ret; -+} -+ -+ - static void __exit hitfb_exit(void) - { -- unregister_framebuffer(&fb_info); -+ platform_device_unregister(&hitfb_device); -+ platform_driver_unregister(&hitfb_driver); - } - - module_init(hitfb_init); -diff -ruN linux-2.6.17-vanilla/drivers/video/pvr2fb.c linux-2.6.17/drivers/video/pvr2fb.c ---- linux-2.6.17-vanilla/drivers/video/pvr2fb.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/video/pvr2fb.c 2006-07-12 16:54:25.000000000 +0000 -@@ -189,7 +189,7 @@ - static unsigned int is_blanked = 0; /* Is the screen blanked? */ - - #ifdef CONFIG_SH_STORE_QUEUES --static struct sq_mapping *pvr2fb_map; -+static unsigned long pvr2fb_map; - #endif - - #ifdef CONFIG_SH_DMA -@@ -215,15 +215,17 @@ - static int pvr2_init_cable(void); - static int pvr2_get_param(const struct pvr2_params *p, const char *s, - int val, int size); -+#ifdef CONFIG_SH_DMA - static ssize_t pvr2fb_write(struct file *file, const char *buf, - size_t count, loff_t *ppos); -+#endif - - static struct fb_ops pvr2fb_ops = { -- .owner = THIS_MODULE, -- .fb_setcolreg = pvr2fb_setcolreg, -- .fb_blank = pvr2fb_blank, -- .fb_check_var = pvr2fb_check_var, -- .fb_set_par = pvr2fb_set_par, -+ .owner = THIS_MODULE, -+ .fb_setcolreg = pvr2fb_setcolreg, -+ .fb_blank = pvr2fb_blank, -+ .fb_check_var = pvr2fb_check_var, -+ .fb_set_par = pvr2fb_set_par, - #ifdef CONFIG_SH_DMA - .fb_write = pvr2fb_write, - #endif -@@ -785,7 +787,7 @@ - goto out_err; - } - -- fb_memset((unsigned long)fb_info->screen_base, 0, pvr2_fix.smem_len); -+ fb_memset(fb_info->screen_base, 0, pvr2_fix.smem_len); - - pvr2_fix.ypanstep = nopan ? 0 : 1; - pvr2_fix.ywrapstep = nowrap ? 0 : 1; -@@ -822,7 +824,7 @@ - modememused >> 10, (unsigned long)(fb_info->fix.smem_len >> 10)); - printk("fb%d: Mode %dx%d-%d pitch = %ld cable: %s video output: %s\n", - fb_info->node, fb_info->var.xres, fb_info->var.yres, -- fb_info->var.bits_per_pixel, -+ fb_info->var.bits_per_pixel, - get_line_length(fb_info->var.xres, fb_info->var.bits_per_pixel), - (char *)pvr2_get_param(cables, NULL, cable_type, 3), - (char *)pvr2_get_param(outputs, NULL, video_output, 3)); -@@ -831,10 +833,10 @@ - printk(KERN_NOTICE "fb%d: registering with SQ API\n", fb_info->node); - - pvr2fb_map = sq_remap(fb_info->fix.smem_start, fb_info->fix.smem_len, -- fb_info->fix.id); -+ fb_info->fix.id, pgprot_val(PAGE_SHARED)); - - printk(KERN_NOTICE "fb%d: Mapped video memory to SQ addr 0x%lx\n", -- fb_info->node, pvr2fb_map->sq_addr); -+ fb_info->node, pvr2fb_map); - #endif - - return 0; -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/CVS/Entries linux-2.6.17/drivers/video/voyager/CVS/Entries ---- linux-2.6.17-vanilla/drivers/video/voyager/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/CVS/Entries 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,9 @@ -+/Makefile/1.2/Tue May 31 14:19:09 2005/-ko/ -+/voyager_alphafb.c/1.2/Wed Feb 8 22:08:10 2006/-ko/ -+/voyager_crtcsrfb.c/1.2/Wed Feb 8 22:08:10 2006/-ko/ -+/voyager_crtfb.c/1.2/Wed Feb 8 22:08:10 2006/-ko/ -+/voyager_gxfb.c/1.4/Wed Feb 8 22:08:10 2006/-ko/ -+/voyager_panelcsrfb.c/1.2/Wed Feb 8 22:08:10 2006/-ko/ -+/voyager_valphafb.c/1.2/Wed Feb 8 22:08:10 2006/-ko/ -+/voyager_videofb.c/1.2/Wed Feb 8 22:08:10 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/CVS/Repository linux-2.6.17/drivers/video/voyager/CVS/Repository ---- linux-2.6.17-vanilla/drivers/video/voyager/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/CVS/Repository 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+linux/drivers/video/voyager -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/CVS/Root linux-2.6.17/drivers/video/voyager/CVS/Root ---- linux-2.6.17-vanilla/drivers/video/voyager/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/CVS/Root 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/Makefile linux-2.6.17/drivers/video/voyager/Makefile ---- linux-2.6.17-vanilla/drivers/video/voyager/Makefile 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/Makefile 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,13 @@ -+# -+# Makefile for the VoyagerGX framebuffer driver -+# -+ -+my-obj-$(CONFIG_FB_VOYAGER_GX_MP) += voyager_alphafb.o \ -+ voyager_crtcsrfb.o \ -+ voyager_crtfb.o \ -+ voyager_panelcsrfb.o \ -+ voyager_valphafb.o \ -+ voyager_videofb.o -+ -+obj-$(CONFIG_FB_VOYAGER_GX) += voyager_gxfb.o $(my-obj-y) -+ -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/voyager_alphafb.c linux-2.6.17/drivers/video/voyager/voyager_alphafb.c ---- linux-2.6.17-vanilla/drivers/video/voyager/voyager_alphafb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/voyager_alphafb.c 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,282 @@ -+/* -+ * linux/drivers/video/voyager_alphafb.c -- voyager alpha frame buffer driver -+ * -+ * Copyright (C) 2003 Renesas Technology Sales Co.,Ltd. -+ * Copyright (C) 2003 Atom Create Engineering Co.,Ltd. -+ * Anthor : Atom Create Engineering Co.,Ltd. -+ * Kenichi Sakuma -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file COPYING in the main directory of this archive for -+ * more details. -+ * -+ * 1.00 -+ * - initial version (ks) -+ * 1.01 -+ * - Kernel 2.6 correspondence -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/errno.h> -+#include <linux/string.h> -+#include <linux/mm.h> -+#include <linux/tty.h> -+#include <linux/slab.h> -+#include <linux/vmalloc.h> -+#include <linux/delay.h> -+#include <linux/interrupt.h> -+#include <linux/fb.h> -+#include <linux/init.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+#include <asm/mach/voyagergx_reg.h> -+#include <video/voyager.h> -+ -+static struct fb_info voyafb_info; -+ -+int voyafb_init4(void); -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info); -+static int voyafb_set_par(struct fb_info *info); -+static int voyafb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, -+ u_int transp, struct fb_info *info); -+static int voyafb_blank(int blank, struct fb_info *info); -+static int voyafb_ioctl(struct inode*, struct file*, -+ unsigned int, unsigned long, struct fb_info*); -+static int change_mode(struct fb_var_screeninfo *var); -+ -+static unsigned int pseudo_palette[16]; -+ -+static struct fb_ops voyafb_ops = { -+ .owner = THIS_MODULE, -+ .fb_check_var = voyafb_check_var, -+ .fb_set_par = voyafb_set_par, -+ .fb_setcolreg = voyafb_setcolreg, -+ .fb_blank = voyafb_blank, -+ .fb_fillrect = cfb_fillrect, -+ .fb_copyarea = cfb_copyarea, -+ .fb_imageblit = cfb_imageblit, -+ .fb_ioctl = voyafb_ioctl, -+}; -+ -+static struct fb_var_screeninfo voyafb_var __initdata = { -+ .xres = XRES, -+ .yres = YRES, -+ .xres_virtual = XRES, -+ .yres_virtual = YRES, -+ .bits_per_pixel = BPP, -+ .red = { 11,5,0 }, -+ .green = { 5,6,0 }, -+ .blue = { 0,5,0 }, -+ .height = -1, -+ .width = -1, -+ .vmode = FB_VMODE_NONINTERLACED, -+ .pixclock = 10000, -+ .left_margin = 16, -+ .right_margin = 16, -+ .upper_margin = 16, -+ .lower_margin = 16, -+ .hsync_len = 8, -+ .vsync_len = 8, -+}; -+ -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info) -+{ -+ if (var->xres > XRES || var->yres > YRES -+ || var->xres_virtual > XRES || var->yres_virtual > YRES -+ || var->bits_per_pixel != BPP -+ || var->nonstd -+ || (var->vmode & FB_VMODE_MASK) != FB_VMODE_NONINTERLACED) -+ return -EINVAL; -+ -+ var->xres_virtual = XRES; -+ var->yres_virtual = YRES; -+ -+ if(change_mode(var) != 0) { -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+static int voyafb_set_par(struct fb_info *info) -+{ -+ info->fix.line_length = XRES*2; -+ info->fix.visual = FB_VISUAL_TRUECOLOR; -+ -+ info->var.red.offset = 11; -+ info->var.green.offset = 5; -+ info->var.blue.offset = 0; -+ info->var.red.length = info->var.blue.length = 5; -+ info->var.green.length = 6; -+ return 0; -+} -+ -+static int voyafb_blank(int blank, struct fb_info *info) -+{ -+ return 1; -+} -+ -+static int voyafb_setcolreg(unsigned regno, unsigned red, unsigned green, -+ unsigned blue, unsigned transp, -+ struct fb_info* info) -+{ -+ red >>= 11; -+ green >>= 11; -+ blue >>= 10; -+ -+ if (regno < 16) -+ ((u32 *)(info->pseudo_palette))[regno] = ((red & 31) << 6) | -+ ((green & 31) << 11) | -+ ((blue & 63)); -+ return 0; -+} -+ -+static int voyafb_ioctl(struct inode* inode, struct file* file, -+ unsigned int cmd, unsigned long arg, -+ struct fb_info* info) -+{ -+ if(cmd == VOYAGER_IOCTL_ENABLE) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) &= 0xfffffffb; -+ } -+ else { -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) |= 0x04; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_ENABLE_CK) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) &= 0xfffffff7; -+ } -+ else { -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) |= 0x00000008; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_ENABLE_AL) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) &= 0xefffffff; -+ } -+ else { -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) |= 0x10000000; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_CHKEY) { -+ *(volatile unsigned long *)(ALPHA_CHROMA_KEY) = arg; -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_TYPE) { -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) &= 0xfffffffc; -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) |= (arg & 0x03); -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_ALPHA) { -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) &= 0xf0ffffff; -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) |= (arg & 0x0f) << 24; -+ return 0; -+ } -+ return -EINVAL; -+} -+ -+ -+static void __init voya_hw_init(void) -+{ -+ *(volatile unsigned long *)(ALPHA_FB_ADDRESS) = 0x80000000 + (VOY_VRAM_TOP4 & 0x00ffffff); -+ change_mode(&voyafb_var); -+ *(volatile unsigned long *)(ALPHA_CHROMA_KEY) = 0; -+ -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) &= 0xfffffff0; -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) |= 0x01; -+ -+} -+ -+ -+ -+static struct fb_fix_screeninfo voyafb_fix __initdata = { -+ .id = "VOYAGER ALPHA", -+ .type = FB_TYPE_PACKED_PIXELS, -+ .visual = FB_VISUAL_TRUECOLOR, -+ .accel = FB_ACCEL_NONE, -+ .line_length = XRES*2, -+ .smem_len = MAX_FRAMEBUFFER_MEM_SIZE, -+}; -+ -+ -+static void __init init_voya(struct fb_info *p, unsigned long addr) -+{ -+ p->fix = voyafb_fix; -+ p->fix.smem_start = addr; -+ -+ p->var = voyafb_var; -+ -+ p->fbops = &voyafb_ops; -+ p->flags = FBINFO_FLAG_DEFAULT; -+ p->pseudo_palette = pseudo_palette; -+ -+ fb_alloc_cmap(&p->cmap, 16, 0); -+ -+ if (register_framebuffer(p) < 0) { -+ printk(KERN_ERR "VOYAGER GX ALPHA framebuffer failed to register\n"); -+ return; -+ } -+ -+ printk(KERN_INFO "fb%d: VOYAGER GX_ALPHA frame buffer (%dK RAM detected)\n", -+ p->node, p->fix.smem_len / 1024); -+ -+ voya_hw_init(); -+} -+ -+int __init voyafb_init4(void) -+{ -+ struct fb_info *p = &voyafb_info; -+ unsigned long addr, size; -+ -+ addr = VOY_VRAM_TOP4; -+ size = MAX_FRAMEBUFFER_MEM_SIZE; -+ p->screen_base = ioremap((u_long)addr, -+ ALLOCATED_FB_MEM_SIZE); -+ if (p->screen_base == NULL) { -+ return -ENOMEM; -+ } -+ init_voya(p, addr); -+ memset(p->screen_base, 0, MAX_FRAMEBUFFER_MEM_SIZE); -+ -+ return 0; -+} -+ -+static void __exit voyafb_exit(void) -+{ -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) &= 0xfffffffb; -+} -+ -+ -+//------------------------------------------------------------------------------------ -+static int change_mode(struct fb_var_screeninfo *var) -+{ -+int x,ali; -+ -+ if((var->xres < 0)||(var->xres > XRES)|| -+ (var->yres < 0)||(var->yres > YRES)|| -+ (var->xres_virtual < 0)||(var->xres_virtual > XRES)|| -+ (var->yres_virtual < 0)||(var->yres_virtual > YRES)|| -+ (var->xoffset < 0)||(var->xoffset > XRES)|| -+ (var->yoffset < 0)||(var->yoffset > YRES)) -+ { -+ return(-1); -+ } -+ x = var->xres_virtual * 2; -+ ali = x + (x % 16); -+ *(volatile unsigned long *)(ALPHA_FB_WIDTH) = (ali << 16) | ali; -+ *(volatile unsigned long *)(ALPHA_PLANE_TL) = (var->yoffset << 16) | -+ var->xoffset; -+ *(volatile unsigned long *)(ALPHA_PLANE_BR) = -+ ((var->yoffset + var->yres - 1) << 16) | -+ (var->xoffset + var->xres - 1); -+ return(0); -+} -+ -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/voyager_crtcsrfb.c linux-2.6.17/drivers/video/voyager/voyager_crtcsrfb.c ---- linux-2.6.17-vanilla/drivers/video/voyager/voyager_crtcsrfb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/voyager_crtcsrfb.c 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,240 @@ -+/* -+ * linux/drivers/video/voyager_crtcsrfb.c -- voyager crt HWC frame buffer driver -+ * -+ * Copyright (C) 2003 Renesas Technology Sales Co.,Ltd. -+ * Copyright (C) 2003 Atom Create Engineering Co.,Ltd. -+ * Anthor : Atom Create Engineering Co.,Ltd. -+ * Kenichi Sakuma -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file COPYING in the main directory of this archive for -+ * more details. -+ * -+ * 1.00 -+ * - initial version (ks) -+ * 1.01 -+ * - Kernel 2.6 correspondence -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/errno.h> -+#include <linux/string.h> -+#include <linux/mm.h> -+#include <linux/tty.h> -+#include <linux/slab.h> -+#include <linux/vmalloc.h> -+#include <linux/delay.h> -+#include <linux/interrupt.h> -+#include <linux/fb.h> -+#include <linux/init.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+#include <asm/mach/voyagergx_reg.h> -+#include <video/voyager.h> -+ -+static struct fb_info voyafb_info; -+ -+int voyafb_init7(void); -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info); -+static int voyafb_set_par(struct fb_info *info); -+static int voyafb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, -+ u_int transp, struct fb_info *info); -+static int voyafb_blank(int blank, struct fb_info *info); -+static int voyafb_ioctl(struct inode*, struct file*, -+ unsigned int, unsigned long, struct fb_info*); -+static int change_mode(struct fb_var_screeninfo *var); -+ -+static unsigned int pseudo_palette[16]; -+ -+static struct fb_ops voyafb_ops = { -+ .owner = THIS_MODULE, -+ .fb_check_var = voyafb_check_var, -+ .fb_set_par = voyafb_set_par, -+ .fb_setcolreg = voyafb_setcolreg, -+ .fb_blank = voyafb_blank, -+ .fb_fillrect = cfb_fillrect, -+ .fb_copyarea = cfb_copyarea, -+ .fb_imageblit = cfb_imageblit, -+ .fb_ioctl = voyafb_ioctl, -+}; -+ -+static struct fb_var_screeninfo voyafb_var __initdata = { -+ .xres = CSR_XRES, -+ .yres = CSR_YRES, -+ .xres_virtual = CSR_XRES, -+ .yres_virtual = CSR_YRES, -+ .bits_per_pixel = CSR_BPP, -+ .red = { 11,5,0 }, -+ .green = { 5,6,0 }, -+ .blue = { 0,5,0 }, -+ .height = -1, -+ .width = -1, -+ .vmode = FB_VMODE_NONINTERLACED, -+ .pixclock = 10000, -+ .left_margin = 16, -+ .right_margin = 16, -+ .upper_margin = 16, -+ .lower_margin = 16, -+ .hsync_len = 8, -+ .vsync_len = 8, -+}; -+ -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info) -+{ -+ if (var->xres > CSR_XRES || var->yres > CSR_YRES -+ || var->xres_virtual > CSR_XRES || var->yres_virtual > CSR_YRES -+ || var->bits_per_pixel != CSR_BPP -+ || var->nonstd -+ || (var->vmode & FB_VMODE_MASK) != FB_VMODE_NONINTERLACED) -+ return -EINVAL; -+ -+ var->xres = var->xres_virtual = CSR_XRES; -+ var->yres = var->yres_virtual = CSR_YRES; -+ if(change_mode(var) != 0) { -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+static int voyafb_set_par(struct fb_info *info) -+{ -+ info->fix.line_length = CSR_XRES/2; -+ info->fix.visual = FB_VISUAL_TRUECOLOR; -+ -+ info->var.red.offset = 11; -+ info->var.green.offset = 5; -+ info->var.blue.offset = 0; -+ info->var.red.length = info->var.blue.length = 5; -+ info->var.green.length = 6; -+ return 0; -+} -+ -+static int voyafb_blank(int blank, struct fb_info *info) -+{ -+ return 1; -+} -+ -+static int voyafb_setcolreg(unsigned regno, unsigned red, unsigned green, -+ unsigned blue, unsigned transp, -+ struct fb_info* info) -+{ -+ red >>= 11; -+ green >>= 11; -+ blue >>= 10; -+ -+ if (regno < 16) -+ ((u32 *)(info->pseudo_palette))[regno] = ((red & 31) << 6) | -+ ((green & 31) << 11) | -+ ((blue & 63)); -+ return 0; -+} -+ -+static int voyafb_ioctl(struct inode* inode, struct file* file, -+ unsigned int cmd, unsigned long arg, -+ struct fb_info* info) -+{ -+ if(cmd == VOYAGER_IOCTL_ENABLE) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(CRT_HWC_ADDRESS) &= 0x7fffffff; -+ } -+ else { -+ *(volatile unsigned long *)(CRT_HWC_ADDRESS) |= 0x80000000; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_COLOR_1) { -+ *(volatile unsigned long *)(CRT_HWC_COLOR_12) = arg; -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_COLOR_2) { -+ *(volatile unsigned long *)(CRT_HWC_COLOR_3) = arg; -+ return 0; -+ } -+ return -EINVAL; -+} -+ -+ -+static void __init voya_hw_init(void) -+{ -+ *(volatile unsigned long *)(CRT_HWC_ADDRESS) = (VOY_VRAM_TOP5 & 0x00ffffff); -+ *(volatile unsigned long *)(CRT_HWC_COLOR_12) = 0x5555aaaa; -+ *(volatile unsigned long *)(CRT_HWC_COLOR_3) = 0x0000ffff; -+ change_mode(&voyafb_var); -+} -+ -+ -+ -+static struct fb_fix_screeninfo voyafb_fix __initdata = { -+ .id = "VOYAGER C_CSR", -+ .type = FB_TYPE_PACKED_PIXELS, -+ .visual = FB_VISUAL_TRUECOLOR, -+ .accel = FB_ACCEL_NONE, -+ .line_length = CSR_XRES/2, -+ .smem_len = MAX_HWC_MEM_SIZE, -+}; -+ -+ -+static void __init init_voya(struct fb_info *p, unsigned long addr) -+{ -+ p->fix = voyafb_fix; -+ p->fix.smem_start = addr; -+ -+ p->var = voyafb_var; -+ -+ p->fbops = &voyafb_ops; -+ p->flags = FBINFO_FLAG_DEFAULT; -+ p->pseudo_palette = pseudo_palette; -+ -+ fb_alloc_cmap(&p->cmap, 16, 0); -+ -+ if (register_framebuffer(p) < 0) { -+ printk(KERN_ERR "VOYAGER GX CRT CSR framebuffer failed to register\n"); -+ return; -+ } -+ -+ printk(KERN_INFO "fb%d: VOYAGER GX_CRT CSR frame buffer (%dK RAM detected)\n", -+ p->node, p->fix.smem_len / 1024); -+ -+ voya_hw_init(); -+} -+ -+int __init voyafb_init7(void) -+{ -+ struct fb_info *p = &voyafb_info; -+ unsigned long addr, size; -+ -+ addr = VOY_VRAM_TOP6; -+ size = MAX_HWC_MEM_SIZE; -+ p->screen_base = ioremap((u_long)addr, -+ ALLOCATED_FB_MEM_SIZE); -+ if (p->screen_base == NULL) { -+ return -ENOMEM; -+ } -+ init_voya(p, addr); -+ memset(p->screen_base, 0, MAX_HWC_MEM_SIZE); -+ -+ return 0; -+} -+ -+static void __exit voyafb_exit(void) -+{ -+ *(volatile unsigned long *)(CRT_HWC_ADDRESS) &= 0x7fffffff; -+} -+ -+static int change_mode(struct fb_var_screeninfo *var) -+{ -+ if((var->xoffset < 0)||(var->xoffset > XRES)|| -+ (var->yoffset < 0)||(var->yoffset > YRES)) -+ { -+ return(-1); -+ } -+ *(volatile unsigned long *)(CRT_HWC_LOCATION) = (var->yoffset << 16) | -+ var->xoffset; -+ return(0); -+} -+ -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/voyager_crtfb.c linux-2.6.17/drivers/video/voyager/voyager_crtfb.c ---- linux-2.6.17-vanilla/drivers/video/voyager/voyager_crtfb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/voyager_crtfb.c 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,240 @@ -+/* -+ * linux/drivers/video/voyager_crtfb.c -- voyager crt frame buffer driver -+ * -+ * Copyright (C) 2003 Renesas Technology Sales Co.,Ltd. -+ * Copyright (C) 2003 Atom Create Engineering Co.,Ltd. -+ * Anthor : Atom Create Engineering Co.,Ltd. -+ * Kenichi Sakuma -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file COPYING in the main directory of this archive for -+ * more details. -+ * -+ * 1.00 -+ * - initial version (ks) -+ * 1.01 -+ * - Kernel 2.6 correspondence -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/errno.h> -+#include <linux/string.h> -+#include <linux/mm.h> -+#include <linux/tty.h> -+#include <linux/slab.h> -+#include <linux/vmalloc.h> -+#include <linux/delay.h> -+#include <linux/interrupt.h> -+#include <linux/fb.h> -+#include <linux/init.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+#include <asm/mach/voyagergx_reg.h> -+#include <video/voyager.h> -+ -+static struct fb_info voyafb_info; -+ -+int voyafb_init6(void); -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info); -+static int voyafb_set_par(struct fb_info *info); -+static int voyafb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, -+ u_int transp, struct fb_info *info); -+static int voyafb_blank(int blank, struct fb_info *info); -+static int voyafb_ioctl(struct inode*, struct file*, -+ unsigned int, unsigned long, struct fb_info*); -+ -+static unsigned int pseudo_palette[16]; -+ -+static struct fb_ops voyafb_ops = { -+ .owner = THIS_MODULE, -+ .fb_check_var = voyafb_check_var, -+ .fb_set_par = voyafb_set_par, -+ .fb_setcolreg = voyafb_setcolreg, -+ .fb_blank = voyafb_blank, -+ .fb_fillrect = cfb_fillrect, -+ .fb_copyarea = cfb_copyarea, -+ .fb_imageblit = cfb_imageblit, -+ .fb_ioctl = voyafb_ioctl, -+}; -+ -+static struct fb_var_screeninfo voyafb_var __initdata = { -+ .xres = XRES, -+ .yres = YRES, -+ .xres_virtual = XRES, -+ .yres_virtual = YRES, -+ .bits_per_pixel = BPP, -+ .red = { 11,5,0 }, -+ .green = { 5,6,0 }, -+ .blue = { 0,5,0 }, -+ .height = -1, -+ .width = -1, -+ .vmode = FB_VMODE_NONINTERLACED, -+ .pixclock = 10000, -+ .left_margin = 16, -+ .right_margin = 16, -+ .upper_margin = 16, -+ .lower_margin = 16, -+ .hsync_len = 8, -+ .vsync_len = 8, -+}; -+ -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info) -+{ -+ if (var->xres > XRES || var->yres > YRES -+ || var->xres_virtual > XRES || var->yres_virtual > YRES -+ || var->bits_per_pixel != BPP -+ || var->nonstd -+ || (var->vmode & FB_VMODE_MASK) != FB_VMODE_NONINTERLACED) -+ return -EINVAL; -+ -+ var->xres = var->xres_virtual = XRES; -+ var->yres = var->yres_virtual = YRES; -+ -+ return 0; -+} -+ -+static int voyafb_set_par(struct fb_info *info) -+{ -+ info->fix.line_length = XRES*2; -+ info->fix.visual = FB_VISUAL_TRUECOLOR; -+ -+ info->var.red.offset = 11; -+ info->var.green.offset = 5; -+ info->var.blue.offset = 0; -+ info->var.red.length = info->var.blue.length = 5; -+ info->var.green.length = 6; -+ return 0; -+} -+ -+static int voyafb_blank(int blank, struct fb_info *info) -+{ -+ return 1; -+} -+ -+static int voyafb_setcolreg(unsigned regno, unsigned red, unsigned green, -+ unsigned blue, unsigned transp, -+ struct fb_info* info) -+{ -+ red >>= 11; -+ green >>= 11; -+ blue >>= 10; -+ -+ if (regno < 16) -+ ((u32 *)(info->pseudo_palette))[regno] = ((red & 31) << 6) | -+ ((green & 31) << 11) | -+ ((blue & 63)); -+ return 0; -+} -+ -+static int voyafb_ioctl(struct inode* inode, struct file* file, -+ unsigned int cmd, unsigned long arg, -+ struct fb_info* info) -+{ -+ if(cmd == VOYAGER_IOCTL_ENABLE) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(CRT_DISPLAY_CTRL) &= 0xfffffffb; -+ } -+ else { -+ *(volatile unsigned long *)(CRT_DISPLAY_CTRL) |= 0x04; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_TYPE) { -+ *(volatile unsigned long *)(CRT_DISPLAY_CTRL) &= 0xfffffffc; -+ *(volatile unsigned long *)(CRT_DISPLAY_CTRL) |= (arg & 0x03); -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_SELECT) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(CRT_DISPLAY_CTRL) &= 0xfffffdff; -+ } -+ else { -+ *(volatile unsigned long *)(CRT_DISPLAY_CTRL) |= 0x00000200; -+ } -+ return 0; -+ } -+ return -EINVAL; -+} -+ -+ -+static void __init voya_hw_init(void) -+{ -+int i; -+ -+ *(volatile unsigned long *)(CRT_DISPLAY_CTRL) &= 0xfffffcf0; -+ *(volatile unsigned long *)(CRT_FB_ADDRESS) = 0x80000000 + (VOY_VRAM_TOP6 & 0x00ffffff); -+ *(volatile unsigned long *)(CRT_FB_WIDTH) = 0x5000500; -+ *(volatile unsigned long *)(CRT_HORIZONTAL_TOTAL) = 0x033f027f; -+ *(volatile unsigned long *)(CRT_HORIZONTAL_SYNC) = 0x4a028b; -+ *(volatile unsigned long *)(CRT_VERTICAL_TOTAL) = 0x20c01df; -+ *(volatile unsigned long *)(CRT_VERTICAL_SYNC) = 0x201e9; -+ *(volatile unsigned long *)(CRT_DISPLAY_CTRL) |= 0x70000105; -+ //palet initialize -+ for(i=0;i<256;i++) { -+ *(volatile unsigned long *)(CRT_PALETTE_RAM+(i*4)) = (i << 16)+(i << 8)+i; -+ } -+} -+ -+ -+ -+static struct fb_fix_screeninfo voyafb_fix __initdata = { -+ .id = "VOYAGER CRT", -+ .type = FB_TYPE_PACKED_PIXELS, -+ .visual = FB_VISUAL_TRUECOLOR, -+ .accel = FB_ACCEL_NONE, -+ .line_length = XRES*2, -+ .smem_len = MAX_FRAMEBUFFER_MEM_SIZE, -+}; -+ -+ -+static void __init init_voya(struct fb_info *p, unsigned long addr) -+{ -+ p->fix = voyafb_fix; -+ p->fix.smem_start = addr; -+ -+ p->var = voyafb_var; -+ -+ p->fbops = &voyafb_ops; -+ p->flags = FBINFO_FLAG_DEFAULT; -+ p->pseudo_palette = pseudo_palette; -+ -+ fb_alloc_cmap(&p->cmap, 16, 0); -+ -+ if (register_framebuffer(p) < 0) { -+ printk(KERN_ERR "VOYAGER GX CRT framebuffer failed to register\n"); -+ return; -+ } -+ -+ printk(KERN_INFO "fb%d: VOYAGER GX_CRT frame buffer (%dK RAM detected)\n", -+ p->node, p->fix.smem_len / 1024); -+ -+ voya_hw_init(); -+} -+ -+int __init voyafb_init6(void) -+{ -+ struct fb_info *p = &voyafb_info; -+ unsigned long addr, size; -+ -+ addr = VOY_VRAM_TOP6; -+ size = MAX_FRAMEBUFFER_MEM_SIZE; -+ p->screen_base = ioremap((u_long)addr, -+ ALLOCATED_FB_MEM_SIZE); -+ if (p->screen_base == NULL) { -+ return -ENOMEM; -+ } -+ init_voya(p, addr); -+ memset(p->screen_base, 0, MAX_FRAMEBUFFER_MEM_SIZE); -+ -+ return 0; -+} -+ -+static void __exit voyafb_exit(void) -+{ -+ *(volatile unsigned long *)(CRT_DISPLAY_CTRL) &= 0xfffffffb; -+} -+ -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/voyager_gxfb.c linux-2.6.17/drivers/video/voyager/voyager_gxfb.c ---- linux-2.6.17-vanilla/drivers/video/voyager/voyager_gxfb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/voyager_gxfb.c 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,441 @@ -+/* -+ * linux/drivers/video/voyager_gxfb.c -- voyager panel frame buffer driver -+ * -+ * Copyright (C) 2003 Renesas Technology Sales Co.,Ltd. -+ * Copyright (C) 2003 Atom Create Engineering Co.,Ltd. -+ * Anthor : Atom Create Engineering Co.,Ltd. -+ * Kenichi Sakuma -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file COPYING in the main directory of this archive for -+ * more details. -+ * -+ * 1.00 -+ * - initial version (ks) -+ * 1.01 -+ * - Kernel 2.6 correspondence -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/errno.h> -+#include <linux/string.h> -+#include <linux/mm.h> -+#include <linux/tty.h> -+#include <linux/slab.h> -+#include <linux/vmalloc.h> -+#include <linux/delay.h> -+#include <linux/interrupt.h> -+#include <linux/fb.h> -+#include <linux/init.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+#include <asm/mach/voyagergx_reg.h> -+#include <video/voyager.h> -+ -+#ifdef CONFIG_FB_VOYAGER_GX_MP -+#define MAX_VRAM MAX_FRAMEBUFFER_MEM_SIZE -+#else -+#define MAX_VRAM 1024*768*4 -+#endif -+ -+#ifdef CONFIG_FB_VOYAGER_GX_MP -+extern int voyafb_init2(void); -+extern int voyafb_init3(void); -+extern int voyafb_init4(void); -+extern int voyafb_init5(void); -+extern int voyafb_init6(void); -+extern int voyafb_init7(void); -+#endif -+ -+static struct fb_info voyafb_info; -+ -+static int voyafb_init(void); -+static int voyafbmem_init(void); -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info); -+static int voyafb_set_par(struct fb_info *info); -+static int voyafb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, -+ u_int transp, struct fb_info *info); -+static int voyafb_blank(int blank, struct fb_info *info); -+static int voyafb_ioctl(struct inode*, struct file*, -+ unsigned int, unsigned long, struct fb_info*); -+static int voyafb_pan_display(struct fb_var_screeninfo *var, -+ struct fb_info *info); -+static void vsyncwait(int delay); -+static int change_mode(void); -+ -+typedef struct { -+ __u32 xres; -+ __u32 yres; -+ __u32 clock; -+ __u32 h_total; -+ __u32 h_sync; -+ __u32 v_total; -+ __u32 v_sync; -+} VOYA_CRT_DATA; -+ -+static VOYA_CRT_DATA clock_data[] = { -+ { 640, 480, 0x10021801, 0x33f027f, 0x4a028b, 0x20c01df, 0x201e9, }, -+ { 800, 600, 0x023a1801, 0x454031f, 0x9b0350, 0x2730257, 0x40258, }, -+ {1024, 768, 0x283a1801, 0x5460400, 0x800438, 0x3340300, 0x3031b, }, -+ {-1, -1, -1, -1, -1, -1, -1, }, -+}; -+static int clock_data_index = 0; -+static int clock_data_bpp = BPP; -+ -+static unsigned int pseudo_palette[17]; -+ -+static struct fb_ops voyafb_ops = { -+ .owner = THIS_MODULE, -+ .fb_check_var = voyafb_check_var, -+ .fb_set_par = voyafb_set_par, -+ .fb_setcolreg = voyafb_setcolreg, -+ .fb_blank = voyafb_blank, -+ .fb_fillrect = cfb_fillrect, -+ .fb_copyarea = cfb_copyarea, -+ .fb_imageblit = cfb_imageblit, -+ .fb_ioctl = voyafb_ioctl, -+ .fb_pan_display = voyafb_pan_display, -+}; -+ -+static struct fb_var_screeninfo voyafb_var __initdata = { -+ .xres = XRES, -+ .yres = YRES, -+ .xres_virtual = XRES, -+ .yres_virtual = YRES, -+ .bits_per_pixel = BPP, -+ .red = { 11,5,0 }, -+ .green = { 5,6,0 }, -+ .blue = { 0,5,0 }, -+ .height = -1, -+ .width = -1, -+ .vmode = FB_VMODE_NONINTERLACED, -+ .pixclock = 10000, -+ .left_margin = 0, -+ .right_margin = 0, -+ .upper_margin = 0, -+ .lower_margin = 0, -+ .hsync_len = 0, -+ .vsync_len = 0, -+}; -+ -+static int voyafb_pan_display(struct fb_var_screeninfo *var, -+ struct fb_info *info) -+{ -+ info->var.xoffset = 0; -+ info->var.yoffset = 0; -+ info->var.vmode &= ~FB_VMODE_YWRAP; -+ -+ return 0; -+} -+ -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info) -+{ -+#ifndef CONFIG_FB_VOYAGER_GX_MP -+ int i; -+#endif -+ -+#ifdef CONFIG_FB_VOYAGER_GX_MP -+ if (var->xres > XRES || var->yres > YRES -+ || var->xres_virtual > XRES || var->yres_virtual > YRES -+ || var->bits_per_pixel != BPP -+ || var->nonstd -+ || (var->vmode & FB_VMODE_MASK) != FB_VMODE_NONINTERLACED) -+ return -EINVAL; -+ -+ var->xres = var->xres_virtual = XRES; -+ var->yres = var->yres_virtual = YRES; -+#else -+ if ((var->bits_per_pixel != 8) && -+ (var->bits_per_pixel != 16) && -+ (var->bits_per_pixel != 32)) -+ return -EINVAL; -+ -+ for (i=0; clock_data[i].xres != -1; i++) -+ if ((clock_data[i].xres == var->xres) && -+ (clock_data[i].yres == var->yres)) -+ break; -+ -+ if (clock_data[i].xres == -1) -+ return -EINVAL; -+ -+ clock_data_index = i; -+ clock_data_bpp = var->bits_per_pixel; -+#endif -+ -+ return 0; -+} -+ -+static int voyafb_set_par(struct fb_info *info) -+{ -+#ifdef CONFIG_FB_VOYAGER_GX_MP -+ info->fix.line_length = XRES * 2; -+ info->fix.visual = FB_VISUAL_TRUECOLOR; -+ -+ info->var.bits_per_pixel = 16; -+ info->var.red.offset = 11; -+ info->var.green.offset = 5; -+ info->var.blue.offset = 0; -+ info->var.red.length = info->var.blue.length = 5; -+ info->var.green.length = 6; -+#else -+ if (clock_data_bpp == 8) { -+ info->fix.line_length = clock_data[clock_data_index].xres; -+ info->var.transp.offset = 0; -+ info->var.transp.length = 0; -+ info->var.red.length = info->var.blue.length = info->var.green.length = 8; -+ info->var.red.offset = info->var.blue.offset = info->var.green.offset = 0; -+ info->var.bits_per_pixel = 8; -+ info->fix.visual = FB_VISUAL_PSEUDOCOLOR; -+ } else if (clock_data_bpp == 16) { -+ info->fix.line_length = clock_data[clock_data_index].xres * 2; -+ info->var.transp.offset = 0; -+ info->var.transp.length = 0; -+ info->var.red.length = 5; -+ info->var.blue.length = 5; -+ info->var.green.length = 6; -+ info->var.red.offset = 11; -+ info->var.green.offset = 5; -+ info->var.blue.offset = 0; -+ info->var.bits_per_pixel = 16; -+ info->fix.visual = FB_VISUAL_TRUECOLOR; -+ } else { -+ info->fix.line_length = clock_data[clock_data_index].xres * 4; -+ info->var.transp.offset = 24; -+ info->var.transp.length = 8; -+ info->var.red.length = 8; -+ info->var.blue.length = 8; -+ info->var.green.length = 8; -+ info->var.red.offset = 16; -+ info->var.green.offset = 8; -+ info->var.blue.offset = 0; -+ info->var.bits_per_pixel = 32; -+ info->fix.visual = FB_VISUAL_TRUECOLOR; -+ } -+ change_mode(); -+#endif -+ -+ return 0; -+} -+ -+static int voyafb_blank(int blank, struct fb_info *info) -+{ -+ return 0; -+} -+ -+static int voyafb_setcolreg(unsigned regno, unsigned red, unsigned green, -+ unsigned blue, unsigned transp, -+ struct fb_info* info) -+{ -+ int *palette; -+ -+ if (regno > 256) -+ return 1; -+ -+ palette = (int *)PANEL_PALETTE_RAM; -+ palette[regno] = (red & 0xff) << 16 | (green & 0xff) << 8 | (blue & 0xff); -+ ((u32 *)(info->pseudo_palette))[regno] = (red & 0xff) << 16 | (green & 0xff) << 8 | (blue & 0xff); -+ -+ return 0; -+} -+ -+static int voyafb_ioctl(struct inode* inode, struct file* file, -+ unsigned int cmd, unsigned long arg, -+ struct fb_info* info) -+{ -+ static long *po; -+ int *wk; -+ -+ if (cmd == VOYAGER_IOCTL_DEBUG_ADD) { -+ po = (long *)arg; -+ return 0; -+ } else if (cmd == VOYAGER_IOCTL_DEBUG_GET) { -+ wk = (int *)arg; -+ *wk = *po; -+ return 0; -+ } else if (cmd == VOYAGER_IOCTL_DEBUG_PUT) { -+ *po = arg; -+ return 0; -+ } else if (cmd == VOYAGER_IOCTL_ENABLE) { -+ if (arg == 0) -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) &= 0xfffffffb; -+ else -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) |= 0x04; -+ return 0; -+ } else if (cmd == VOYAGER_IOCTL_TYPE) { -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) &= 0xfffffffc; -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) |= (arg & 0x03); -+ return 0; -+ } -+ -+ return -EINVAL; -+} -+ -+static void __init voya_hw_init(void) -+{ -+ int i; -+ -+ //DAC enable -+ *(volatile unsigned long *)(MISC_CTRL) &= 0xffffefff; -+ -+ //Power Gate -+ *(volatile unsigned long *)(POWER_MODE0_GATE) |= 0x7f; -+ *(volatile unsigned long *)(POWER_MODE1_GATE) |= 0x7f; -+ -+ //Power Clock -+ *(volatile unsigned long *)(POWER_MODE0_CLOCK) = 0x10021801; -+ *(volatile unsigned long *)(POWER_MODE1_CLOCK) = 0x10021801; -+ -+ //Power Mode Control -+ *(volatile unsigned long *)(POWER_MODE_CTRL) = 0; -+ -+ //Miscellaneous Timing -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) &= 0xfffffffb; -+ *(volatile unsigned long *)(VIDEO_DISPLAY_CTRL) &= 0xfffffffb; -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) &= 0xfffffffb; -+ *(volatile unsigned long *)(ALPHA_DISPLAY_CTRL) &= 0xfffffffb; -+ *(volatile unsigned long *)(PANEL_HWC_ADDRESS) &= 0x7fffffff; -+ *(volatile unsigned long *)(CRT_DISPLAY_CTRL) &= 0xfffffffb; -+ *(volatile unsigned long *)(CRT_HWC_ADDRESS) &= 0x7fffffff; -+ -+ change_mode(); -+ -+ vsyncwait(4); -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) |= 0x1000000; -+ vsyncwait(4); -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) |= 0x3000000; -+ vsyncwait(4); -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) |= 0x7000000; -+ -+ //palet initialize -+ for (i=0; i<256; i++) { -+ *(volatile unsigned long *)(PANEL_PALETTE_RAM+(i*4)) = (i << 16)+(i << 8)+i; -+ } -+} -+ -+static struct fb_fix_screeninfo voyafb_fix __initdata = { -+ .id = "VOYAGER PANEL", -+ .type = FB_TYPE_PACKED_PIXELS, -+ .visual = FB_VISUAL_TRUECOLOR, -+ .accel = FB_ACCEL_NONE, -+ .line_length = XRES * (BPP / 8), -+ .smem_len = MAX_VRAM, -+}; -+ -+ -+static void __init init_voya(struct fb_info *p, unsigned long addr) -+{ -+ p->fix = voyafb_fix; -+ p->fix.smem_start = addr; -+ -+ p->var = voyafb_var; -+ -+ p->fbops = &voyafb_ops; -+ p->flags = FBINFO_DEFAULT; -+ p->pseudo_palette = pseudo_palette; -+ -+ fb_alloc_cmap(&p->cmap, 16, 0); -+ -+ if (register_framebuffer(p) < 0) { -+ printk(KERN_ERR "VOYAGER GX PANEL framebuffer failed to register\n"); -+ return; -+ } -+ -+ printk(KERN_INFO "fb%d: VOYAGER GX_PANEL frame buffer (%dK RAM detected)\n", -+ p->node, p->fix.smem_len / 1024); -+ -+ voya_hw_init(); -+} -+ -+static int __init voyafb_init(void) -+{ -+ struct fb_info *p = &voyafb_info; -+ unsigned long addr; -+ -+ if (fb_get_options("voyager_panel_fb", NULL)) -+ return -ENODEV; -+ -+ addr = VOY_VRAM_TOP0; -+ p->screen_base = ioremap((u_long)addr, ALLOCATED_FB_MEM_SIZE); -+ if (p->screen_base == NULL) -+ return -ENOMEM; -+ -+ init_voya(p, addr); -+ -+ return 0; -+} -+ -+static void __exit voyafb_exit(void) -+{ -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) &= 0xfffffffb; -+} -+ -+static int __init voyafbmem_init(void) -+{ -+ voyafb_init(); -+#ifdef CONFIG_FB_VOYAGER_GX_MP -+ voyafb_init2(); -+ voyafb_init3(); -+ voyafb_init4(); -+ voyafb_init5(); -+ voyafb_init6(); -+ voyafb_init7(); -+#endif -+ -+ return 0; -+} -+ -+module_init(voyafbmem_init); -+ -+static void vsyncwait(int delay) -+{ -+ int reg; -+ -+ while(delay-- > 0) { -+ do { -+ reg = *(volatile unsigned long *)(CMD_INTPR_STATUS); -+ } while(reg & 0x1000); -+ do { -+ reg = *(volatile unsigned long *)(CMD_INTPR_STATUS); -+ } while(!reg & 0x1000); -+ } -+} -+ -+static int change_mode() -+{ -+ int size,xres,yres; -+ -+ xres = clock_data[clock_data_index].xres; -+ yres = clock_data[clock_data_index].yres; -+ size = clock_data_bpp / 8; -+ -+ //Power Clock -+ *(volatile unsigned long *)(POWER_MODE0_CLOCK) = clock_data[clock_data_index].clock; -+ *(volatile unsigned long *)(POWER_MODE1_CLOCK) = clock_data[clock_data_index].clock; -+ //PANEL register SET -+ *(volatile unsigned long *)(PANEL_FB_ADDRESS) = 0x80000000 + (VOY_VRAM_TOP0 & 0x00ffffff); -+ *(volatile unsigned long *)(PANEL_FB_WIDTH) = (xres * size) << 16 | (xres * size); -+ *(volatile unsigned long *)(PANEL_WINDOW_WIDTH) = (xres << 16); -+ *(volatile unsigned long *)(PANEL_WINDOW_HEIGHT) = (yres << 16); -+ *(volatile unsigned long *)(PANEL_PLANE_TL) = 0; -+ *(volatile unsigned long *)(PANEL_PLANE_BR) = ((yres-1) << 16) | (xres-1); -+ *(volatile unsigned long *)(PANEL_HORIZONTAL_TOTAL) = clock_data[clock_data_index].h_total; -+ *(volatile unsigned long *)(PANEL_HORIZONTAL_SYNC) = clock_data[clock_data_index].h_sync; -+ *(volatile unsigned long *)(PANEL_VERTICAL_TOTAL) = clock_data[clock_data_index].v_total; -+ *(volatile unsigned long *)(PANEL_VERTICAL_SYNC) = clock_data[clock_data_index].v_sync; -+ -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) &= 0xffffcea8; -+ if (size == 1) -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) |= 0x3104; -+ else if (size == 2) -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) |= 0x3105; -+ else -+ *(volatile unsigned long *)(PANEL_DISPLAY_CTRL) |= 0x3106; -+ -+ return(0); -+} -+ -+MODULE_LICENSE("GPL"); -+ -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/voyager_panelcsrfb.c linux-2.6.17/drivers/video/voyager/voyager_panelcsrfb.c ---- linux-2.6.17-vanilla/drivers/video/voyager/voyager_panelcsrfb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/voyager_panelcsrfb.c 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,240 @@ -+/* -+ * linux/drivers/video/voyager_panelcsrfb.c -- voyager panel HWC frame buffer driver -+ * -+ * Copyright (C) 2003 Renesas Technology Sales Co.,Ltd. -+ * Copyright (C) 2003 Atom Create Engineering Co.,Ltd. -+ * Anthor : Atom Create Engineering Co.,Ltd. -+ * Kenichi Sakuma -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file COPYING in the main directory of this archive for -+ * more details. -+ * -+ * 1.00 -+ * - initial version (ks) -+ * 1.01 -+ * - Kernel 2.6 correspondence -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/errno.h> -+#include <linux/string.h> -+#include <linux/mm.h> -+#include <linux/tty.h> -+#include <linux/slab.h> -+#include <linux/vmalloc.h> -+#include <linux/delay.h> -+#include <linux/interrupt.h> -+#include <linux/fb.h> -+#include <linux/init.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+#include <asm/mach/voyagergx_reg.h> -+#include <video/voyager.h> -+ -+static struct fb_info voyafb_info; -+ -+int voyafb_init5(void); -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info); -+static int voyafb_set_par(struct fb_info *info); -+static int voyafb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, -+ u_int transp, struct fb_info *info); -+static int voyafb_blank(int blank, struct fb_info *info); -+static int voyafb_ioctl(struct inode*, struct file*, -+ unsigned int, unsigned long, struct fb_info*); -+static int change_mode(struct fb_var_screeninfo *var); -+ -+static unsigned int pseudo_palette[16]; -+ -+static struct fb_ops voyafb_ops = { -+ .owner = THIS_MODULE, -+ .fb_check_var = voyafb_check_var, -+ .fb_set_par = voyafb_set_par, -+ .fb_setcolreg = voyafb_setcolreg, -+ .fb_blank = voyafb_blank, -+ .fb_fillrect = cfb_fillrect, -+ .fb_copyarea = cfb_copyarea, -+ .fb_imageblit = cfb_imageblit, -+ .fb_ioctl = voyafb_ioctl, -+}; -+ -+static struct fb_var_screeninfo voyafb_var __initdata = { -+ .xres = CSR_XRES, -+ .yres = CSR_YRES, -+ .xres_virtual = CSR_XRES, -+ .yres_virtual = CSR_YRES, -+ .bits_per_pixel = CSR_BPP, -+ .red = { 11,5,0 }, -+ .green = { 5,6,0 }, -+ .blue = { 0,5,0 }, -+ .height = -1, -+ .width = -1, -+ .vmode = FB_VMODE_NONINTERLACED, -+ .pixclock = 10000, -+ .left_margin = 16, -+ .right_margin = 16, -+ .upper_margin = 16, -+ .lower_margin = 16, -+ .hsync_len = 8, -+ .vsync_len = 8, -+}; -+ -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info) -+{ -+ if (var->xres > CSR_XRES || var->yres > CSR_YRES -+ || var->xres_virtual > CSR_XRES || var->yres_virtual > CSR_YRES -+ || var->bits_per_pixel != CSR_BPP -+ || var->nonstd -+ || (var->vmode & FB_VMODE_MASK) != FB_VMODE_NONINTERLACED) -+ return -EINVAL; -+ -+ var->xres = var->xres_virtual = CSR_XRES; -+ var->yres = var->yres_virtual = CSR_YRES; -+ if(change_mode(var) != 0) { -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+static int voyafb_set_par(struct fb_info *info) -+{ -+ info->fix.line_length = CSR_XRES/2; -+ info->fix.visual = FB_VISUAL_TRUECOLOR; -+ -+ info->var.red.offset = 11; -+ info->var.green.offset = 5; -+ info->var.blue.offset = 0; -+ info->var.red.length = info->var.blue.length = 5; -+ info->var.green.length = 6; -+ return 0; -+} -+ -+static int voyafb_blank(int blank, struct fb_info *info) -+{ -+ return 1; -+} -+ -+static int voyafb_setcolreg(unsigned regno, unsigned red, unsigned green, -+ unsigned blue, unsigned transp, -+ struct fb_info* info) -+{ -+ red >>= 11; -+ green >>= 11; -+ blue >>= 10; -+ -+ if (regno < 16) -+ ((u32 *)(info->pseudo_palette))[regno] = ((red & 31) << 6) | -+ ((green & 31) << 11) | -+ ((blue & 63)); -+ return 0; -+} -+ -+static int voyafb_ioctl(struct inode* inode, struct file* file, -+ unsigned int cmd, unsigned long arg, -+ struct fb_info* info) -+{ -+ if(cmd == VOYAGER_IOCTL_ENABLE) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(PANEL_HWC_ADDRESS) &= 0x7fffffff; -+ } -+ else { -+ *(volatile unsigned long *)(PANEL_HWC_ADDRESS) |= 0x80000000; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_COLOR_1) { -+ *(volatile unsigned long *)(PANEL_HWC_COLOR_12) = arg; -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_COLOR_2) { -+ *(volatile unsigned long *)(PANEL_HWC_COLOR_3) = arg; -+ return 0; -+ } -+ return -EINVAL; -+} -+ -+ -+static void __init voya_hw_init(void) -+{ -+ *(volatile unsigned long *)(PANEL_HWC_ADDRESS) = (VOY_VRAM_TOP5 & 0x00ffffff); -+ *(volatile unsigned long *)(PANEL_HWC_COLOR_12) = 0x5555aaaa; -+ *(volatile unsigned long *)(PANEL_HWC_COLOR_3) = 0x0000ffff; -+ change_mode(&voyafb_var); -+} -+ -+ -+ -+static struct fb_fix_screeninfo voyafb_fix __initdata = { -+ .id = "VOYAGER P_CSR", -+ .type = FB_TYPE_PACKED_PIXELS, -+ .visual = FB_VISUAL_TRUECOLOR, -+ .accel = FB_ACCEL_NONE, -+ .line_length = CSR_XRES/2, -+ .smem_len = MAX_HWC_MEM_SIZE, -+}; -+ -+ -+static void __init init_voya(struct fb_info *p, unsigned long addr) -+{ -+ p->fix = voyafb_fix; -+ p->fix.smem_start = addr; -+ -+ p->var = voyafb_var; -+ -+ p->fbops = &voyafb_ops; -+ p->flags = FBINFO_FLAG_DEFAULT; -+ p->pseudo_palette = pseudo_palette; -+ -+ fb_alloc_cmap(&p->cmap, 16, 0); -+ -+ if (register_framebuffer(p) < 0) { -+ printk(KERN_ERR "VOYAGER GX PANEL CSR framebuffer failed to register\n"); -+ return; -+ } -+ -+ printk(KERN_INFO "fb%d: VOYAGER GX_PANEL CSR frame buffer (%dK RAM detected)\n", -+ p->node, p->fix.smem_len / 1024); -+ -+ voya_hw_init(); -+} -+ -+int __init voyafb_init5(void) -+{ -+ struct fb_info *p = &voyafb_info; -+ unsigned long addr, size; -+ -+ addr = VOY_VRAM_TOP6; -+ size = MAX_HWC_MEM_SIZE; -+ p->screen_base = ioremap((u_long)addr, -+ ALLOCATED_FB_MEM_SIZE); -+ if (p->screen_base == NULL) { -+ return -ENOMEM; -+ } -+ init_voya(p, addr); -+ memset(p->screen_base, 0, MAX_HWC_MEM_SIZE); -+ -+ return 0; -+} -+ -+static void __exit voyafb_exit(void) -+{ -+ *(volatile unsigned long *)(PANEL_HWC_ADDRESS) &= 0x7fffffff; -+} -+ -+static int change_mode(struct fb_var_screeninfo *var) -+{ -+ if((var->xoffset < 0)||(var->xoffset > XRES)|| -+ (var->yoffset < 0)||(var->yoffset > YRES)) -+ { -+ return(-1); -+ } -+ *(volatile unsigned long *)(PANEL_HWC_LOCATION) = (var->yoffset << 16) | -+ var->xoffset; -+ return(0); -+} -+ -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/voyager_valphafb.c linux-2.6.17/drivers/video/voyager/voyager_valphafb.c ---- linux-2.6.17-vanilla/drivers/video/voyager/voyager_valphafb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/voyager_valphafb.c 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,286 @@ -+/* -+ * linux/drivers/video/voyager_valphafb.c -- voyager video alpha frame buffer driver -+ * -+ * Copyright (C) 2003 Renesas Technology Sales Co.,Ltd. -+ * Copyright (C) 2003 Atom Create Engineering Co.,Ltd. -+ * Anthor : Atom Create Engineering Co.,Ltd. -+ * Kenichi Sakuma -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file COPYING in the main directory of this archive for -+ * more details. -+ * -+ * 1.00 -+ * - initial version (ks) -+ * 1.01 -+ * - Kernel 2.6 correspondence -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/errno.h> -+#include <linux/string.h> -+#include <linux/mm.h> -+#include <linux/tty.h> -+#include <linux/slab.h> -+#include <linux/vmalloc.h> -+#include <linux/delay.h> -+#include <linux/interrupt.h> -+#include <linux/fb.h> -+#include <linux/init.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+#include <asm/mach/voyagergx_reg.h> -+#include <video/voyager.h> -+ -+static struct fb_info voyafb_info; -+ -+int voyafb_init3(void); -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info); -+static int voyafb_set_par(struct fb_info *info); -+static int voyafb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, -+ u_int transp, struct fb_info *info); -+static int voyafb_blank(int blank, struct fb_info *info); -+static int voyafb_ioctl(struct inode*, struct file*, -+ unsigned int, unsigned long, struct fb_info*); -+static int change_mode(struct fb_var_screeninfo *var); -+ -+static unsigned int pseudo_palette[16]; -+ -+static struct fb_ops voyafb_ops = { -+ .owner = THIS_MODULE, -+ .fb_check_var = voyafb_check_var, -+ .fb_set_par = voyafb_set_par, -+ .fb_setcolreg = voyafb_setcolreg, -+ .fb_blank = voyafb_blank, -+ .fb_fillrect = cfb_fillrect, -+ .fb_copyarea = cfb_copyarea, -+ .fb_imageblit = cfb_imageblit, -+ .fb_ioctl = voyafb_ioctl, -+}; -+ -+static struct fb_var_screeninfo voyafb_var __initdata = { -+ .xres = XRES, -+ .yres = YRES, -+ .xres_virtual = XRES, -+ .yres_virtual = YRES, -+ .bits_per_pixel = BPP, -+ .red = { 11,5,0 }, -+ .green = { 5,6,0 }, -+ .blue = { 0,5,0 }, -+ .height = -1, -+ .width = -1, -+ .vmode = FB_VMODE_NONINTERLACED, -+ .pixclock = 10000, -+ .left_margin = 16, -+ .right_margin = 16, -+ .upper_margin = 16, -+ .lower_margin = 16, -+ .hsync_len = 8, -+ .vsync_len = 8, -+}; -+ -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info) -+{ -+ if (var->xres > XRES || var->yres > YRES -+ || var->xres_virtual > XRES || var->yres_virtual > YRES -+ || var->bits_per_pixel != BPP -+ || var->nonstd -+ || (var->vmode & FB_VMODE_MASK) != FB_VMODE_NONINTERLACED) -+ return -EINVAL; -+ -+ var->xres_virtual = XRES; -+ var->yres_virtual = YRES; -+ -+ if(change_mode(var) != 0) { -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+static int voyafb_set_par(struct fb_info *info) -+{ -+ info->fix.line_length = XRES*2; -+ info->fix.visual = FB_VISUAL_TRUECOLOR; -+ -+ info->var.red.offset = 11; -+ info->var.green.offset = 5; -+ info->var.blue.offset = 0; -+ info->var.red.length = info->var.blue.length = 5; -+ info->var.green.length = 6; -+ return 0; -+} -+ -+static int voyafb_blank(int blank, struct fb_info *info) -+{ -+ return 1; -+} -+ -+static int voyafb_setcolreg(unsigned regno, unsigned red, unsigned green, -+ unsigned blue, unsigned transp, -+ struct fb_info* info) -+{ -+ red >>= 11; -+ green >>= 11; -+ blue >>= 10; -+ -+ if (regno < 16) -+ ((u32 *)(info->pseudo_palette))[regno] = ((red & 31) << 6) | -+ ((green & 31) << 11) | -+ ((blue & 63)); -+ return 0; -+} -+ -+static int voyafb_ioctl(struct inode* inode, struct file* file, -+ unsigned int cmd, unsigned long arg, -+ struct fb_info* info) -+{ -+ if(cmd == VOYAGER_IOCTL_ENABLE) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) &= 0xfffffffb; -+ } -+ else { -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) |= 0x04; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_ENABLE_CK) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) &= 0xfffffff7; -+ } -+ else { -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) |= 0x08; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_ENABLE_AL) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) &= 0xefffffff; -+ } -+ else { -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) |= 0x10000000; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_SCALE) { -+ *(volatile unsigned long *)(VIDEO_ALPHA_SCALE) = arg; -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_CHKEY) { -+ *(volatile unsigned long *)(VIDEO_ALPHA_CHROMA_KEY) = arg; -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_TYPE) { -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) &= 0xfffffffc; -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) |= (arg & 0x03); -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_ALPHA) { -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) &= 0xf0ffffff; -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) |= (arg & 0x0f) << 24; -+ return 0; -+ } -+ return -EINVAL; -+} -+ -+static void __init voya_hw_init(void) -+{ -+ *(volatile unsigned long *)(VIDEO_ALPHA_FB_ADDRESS) = 0x80000000 + (VOY_VRAM_TOP3 & 0x00ffffff); -+ change_mode(&voyafb_var); -+ *(volatile unsigned long *)(VIDEO_ALPHA_SCALE) = 0; -+ *(volatile unsigned long *)(VIDEO_ALPHA_CHROMA_KEY) = 0; -+ -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) &= 0xfffffff0; -+// *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) |= 0x05; -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) |= 0x01; -+} -+ -+static struct fb_fix_screeninfo voyafb_fix __initdata = { -+ .id = "VOYAGER VALPHA", -+ .type = FB_TYPE_PACKED_PIXELS, -+ .visual = FB_VISUAL_TRUECOLOR, -+ .accel = FB_ACCEL_NONE, -+ .line_length = XRES*2, -+ .smem_len = MAX_FRAMEBUFFER_MEM_SIZE, -+}; -+ -+ -+static void __init init_voya(struct fb_info *p, unsigned long addr) -+{ -+ p->fix = voyafb_fix; -+ p->fix.smem_start = addr; -+ -+ p->var = voyafb_var; -+ -+ p->fbops = &voyafb_ops; -+ p->flags = FBINFO_FLAG_DEFAULT; -+ p->pseudo_palette = pseudo_palette; -+ -+ fb_alloc_cmap(&p->cmap, 16, 0); -+ -+ if (register_framebuffer(p) < 0) { -+ printk(KERN_ERR "VOYAGER GX VIDEO ALPHA framebuffer failed to register\n"); -+ return; -+ } -+ -+ printk(KERN_INFO "fb%d: VOYAGER GX_VIDEO_ALPHA frame buffer (%dK RAM detected)\n", -+ p->node, p->fix.smem_len / 1024); -+ -+ voya_hw_init(); -+} -+ -+int __init voyafb_init3(void) -+{ -+ struct fb_info *p = &voyafb_info; -+ unsigned long addr, size; -+ -+ addr = VOY_VRAM_TOP3; -+ size = MAX_FRAMEBUFFER_MEM_SIZE; -+ p->screen_base = ioremap((u_long)addr, -+ ALLOCATED_FB_MEM_SIZE); -+ if (p->screen_base == NULL) { -+ return -ENOMEM; -+ } -+ init_voya(p, addr); -+ memset(p->screen_base, 0, MAX_FRAMEBUFFER_MEM_SIZE); -+ -+ return 0; -+} -+ -+static void __exit voyafb_exit(void) -+{ -+ *(volatile unsigned long *)(VIDEO_ALPHA_DISPLAY_CTRL) &= 0xfffffffb; -+} -+ -+ -+//------------------------------------------------------------------------------------ -+static int change_mode(struct fb_var_screeninfo *var) -+{ -+int x,ali,size; -+ -+ if((var->xres < 0)||(var->xres > XRES)|| -+ (var->yres < 0)||(var->yres > YRES)|| -+ (var->xres_virtual < 0)||(var->xres_virtual > XRES)|| -+ (var->yres_virtual < 0)||(var->yres_virtual > YRES)|| -+ (var->xoffset < 0)||(var->xoffset > XRES)|| -+ (var->yoffset < 0)||(var->yoffset > YRES)) -+ { -+ return(-1); -+ } -+ x = var->xres_virtual * 2; -+ ali = x + (x % 16); -+ *(volatile unsigned long *)(VIDEO_ALPHA_FB_WIDTH) = (ali << 16) | ali; -+ *(volatile unsigned long *)(VIDEO_ALPHA_PLANE_TL) = (var->yoffset << 16) | -+ var->xoffset; -+ *(volatile unsigned long *)(VIDEO_ALPHA_PLANE_BR) = -+ ((var->yoffset + var->yres - 1) << 16) | -+ (var->xoffset + var->xres - 1); -+ size = var->xres_virtual * var->yres_virtual * var->bits_per_pixel / 8; -+ *(volatile unsigned long *)(VIDEO_ALPHA_FB_LAST_ADDRESS) = 0x80000000 + (VOY_VRAM_TOP3 & 0x00ffffff) + size; -+ return(0); -+} -+ -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/drivers/video/voyager/voyager_videofb.c linux-2.6.17/drivers/video/voyager/voyager_videofb.c ---- linux-2.6.17-vanilla/drivers/video/voyager/voyager_videofb.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/drivers/video/voyager/voyager_videofb.c 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,273 @@ -+/* -+ * linux/drivers/video/voyager_videofb.c -- voyager video frame buffer driver -+ * -+ * Copyright (C) 2003 Renesas Technology Sales Co.,Ltd. -+ * Copyright (C) 2003 Atom Create Engineering Co.,Ltd. -+ * Anthor : Atom Create Engineering Co.,Ltd. -+ * Kenichi Sakuma -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file COPYING in the main directory of this archive for -+ * more details. -+ * -+ * 1.00 -+ * - initial version (ks) -+ * 1.01 -+ * - Kernel 2.6 correspondence -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/errno.h> -+#include <linux/string.h> -+#include <linux/mm.h> -+#include <linux/tty.h> -+#include <linux/slab.h> -+#include <linux/vmalloc.h> -+#include <linux/delay.h> -+#include <linux/interrupt.h> -+#include <linux/fb.h> -+#include <linux/init.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+#include <asm/mach/voyagergx_reg.h> -+#include <video/voyager.h> -+ -+static struct fb_info voyafb_info; -+ -+int voyafb_init2(void); -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info); -+static int voyafb_set_par(struct fb_info *info); -+static int voyafb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, -+ u_int transp, struct fb_info *info); -+static int voyafb_blank(int blank, struct fb_info *info); -+static int voyafb_ioctl(struct inode*, struct file*, -+ unsigned int, unsigned long, struct fb_info*); -+static int change_mode(struct fb_var_screeninfo *var); -+ -+static unsigned int pseudo_palette[16]; -+ -+static struct fb_ops voyafb_ops = { -+ .owner = THIS_MODULE, -+ .fb_check_var = voyafb_check_var, -+ .fb_set_par = voyafb_set_par, -+ .fb_setcolreg = voyafb_setcolreg, -+ .fb_blank = voyafb_blank, -+ .fb_fillrect = cfb_fillrect, -+ .fb_copyarea = cfb_copyarea, -+ .fb_imageblit = cfb_imageblit, -+ .fb_ioctl = voyafb_ioctl, -+}; -+ -+static struct fb_var_screeninfo voyafb_var __initdata = { -+ .xres = XRES, -+ .yres = YRES, -+ .xres_virtual = XRES, -+ .yres_virtual = YRES, -+ .bits_per_pixel = BPP, -+ .red = { 11,5,0 }, -+ .green = { 5,6,0 }, -+ .blue = { 0,5,0 }, -+ .height = -1, -+ .width = -1, -+ .vmode = FB_VMODE_NONINTERLACED, -+ .pixclock = 10000, -+ .left_margin = 16, -+ .right_margin = 16, -+ .upper_margin = 16, -+ .lower_margin = 16, -+ .hsync_len = 8, -+ .vsync_len = 8, -+}; -+ -+static int voyafb_check_var(struct fb_var_screeninfo *var, -+ struct fb_info *info) -+{ -+ if (var->xres > XRES || var->yres > YRES -+ || var->xres_virtual > XRES || var->yres_virtual > YRES -+ || var->bits_per_pixel != BPP -+ || var->nonstd -+ || (var->vmode & FB_VMODE_MASK) != FB_VMODE_NONINTERLACED) -+ return -EINVAL; -+ -+ var->xres_virtual = XRES; -+ var->yres_virtual = YRES; -+ -+ if(change_mode(var) != 0) { -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+static int voyafb_set_par(struct fb_info *info) -+{ -+ info->fix.line_length = XRES*2; -+ info->fix.visual = FB_VISUAL_TRUECOLOR; -+ -+ info->var.red.offset = 11; -+ info->var.green.offset = 5; -+ info->var.blue.offset = 0; -+ info->var.red.length = info->var.blue.length = 5; -+ info->var.green.length = 6; -+ return 0; -+} -+ -+static int voyafb_blank(int blank, struct fb_info *info) -+{ -+ return 1; -+} -+ -+static int voyafb_setcolreg(unsigned regno, unsigned red, unsigned green, -+ unsigned blue, unsigned transp, -+ struct fb_info* info) -+{ -+ red >>= 11; -+ green >>= 11; -+ blue >>= 10; -+ -+ if (regno < 16) -+ ((u32 *)(info->pseudo_palette))[regno] = ((red & 31) << 6) | -+ ((green & 31) << 11) | -+ ((blue & 63)); -+ return 0; -+} -+ -+static int voyafb_ioctl(struct inode* inode, struct file* file, -+ unsigned int cmd, unsigned long arg, -+ struct fb_info* info) -+{ -+ if(cmd == VOYAGER_IOCTL_ENABLE) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(VIDEO_DISPLAY_CTRL) &= 0xfffffffb; -+ } -+ else { -+ *(volatile unsigned long *)(VIDEO_DISPLAY_CTRL) |= 0x04; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_ENABLE_CP) { -+ if(arg == 0) { -+ *(volatile unsigned long *)(VIDEO_DISPLAY_CTRL) &= 0xffffbfff; -+ } -+ else { -+ *(volatile unsigned long *)(VIDEO_DISPLAY_CTRL) |= 0x00004000; -+ } -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_SCALE) { -+ *(volatile unsigned long *)(VIDEO_SCALE) = arg; -+ return 0; -+ } -+ else if(cmd == VOYAGER_IOCTL_TYPE) { -+ *(volatile unsigned long *)(VIDEO_DISPLAY_CTRL) &= 0xfffffffc; -+ *(volatile unsigned long *)(VIDEO_DISPLAY_CTRL) |= (arg & 0x03); -+ return 0; -+ } -+ return -EINVAL; -+} -+ -+static void __init voya_hw_init(void) -+{ -+int i; -+ -+ *(volatile unsigned long *)(VIDEO_FB_0_ADDRESS) = 0x80000000 + (VOY_VRAM_TOP1 & 0x00ffffff); -+ *(volatile unsigned long *)(VIDEO_FB_1_ADDRESS) = 0x80000000 + (VOY_VRAM_TOP2 & 0x00ffffff); -+ change_mode(&voyafb_var); -+ *(volatile unsigned long *)(VIDEO_SCALE) = 0; -+ -+ *(volatile unsigned long *)(VIDEO_DISPLAY_CTRL) &= 0xffffcea8; -+ *(volatile unsigned long *)(VIDEO_DISPLAY_CTRL) |= 0x10003; -+ //palet initialize -+ for(i=0;i<256;i++) { -+ *(volatile unsigned long *)(VIDEO_PALETTE_RAM+(i*4)) = (i << 16)+(i << 8)+i; -+ } -+} -+ -+static struct fb_fix_screeninfo voyafb_fix __initdata = { -+ .id = "VOYAGER VIDEO", -+ .type = FB_TYPE_PACKED_PIXELS, -+ .visual = FB_VISUAL_TRUECOLOR, -+ .accel = FB_ACCEL_NONE, -+ .line_length = XRES*2, -+ .smem_len = MAX_FRAMEBUFFER_MEM_SIZE, -+}; -+ -+ -+static void __init init_voya(struct fb_info *p, unsigned long addr) -+{ -+ p->fix = voyafb_fix; -+ p->fix.smem_start = addr; -+ -+ p->var = voyafb_var; -+ -+ p->fbops = &voyafb_ops; -+ p->flags = FBINFO_FLAG_DEFAULT; -+ p->pseudo_palette = pseudo_palette; -+ -+ fb_alloc_cmap(&p->cmap, 16, 0); -+ -+ if (register_framebuffer(p) < 0) { -+ printk(KERN_ERR "VOYAGER GX VIDEO framebuffer failed to register\n"); -+ return; -+ } -+ -+ printk(KERN_INFO "fb%d: VOYAGER GX_VIDEO frame buffer (%dK RAM detected)\n", -+ p->node, p->fix.smem_len / 1024); -+ -+ voya_hw_init(); -+} -+ -+int __init voyafb_init2(void) -+{ -+ struct fb_info *p = &voyafb_info; -+ unsigned long addr, size; -+ -+ addr = VOY_VRAM_TOP1; -+ size = MAX_FRAMEBUFFER_MEM_SIZE; -+ p->screen_base = ioremap((u_long)addr, -+ ALLOCATED_FB_MEM_SIZE); -+ if (p->screen_base == NULL) { -+ return -ENOMEM; -+ } -+ init_voya(p, addr); -+ memset(p->screen_base, 0, MAX_FRAMEBUFFER_MEM_SIZE); -+ -+ return 0; -+} -+ -+static void __exit voyafb_exit(void) -+{ -+ *(volatile unsigned long *)(VIDEO_DISPLAY_CTRL) &= 0xfffffffb; -+} -+ -+ -+//------------------------------------------------------------------------------------ -+static int change_mode(struct fb_var_screeninfo *var) -+{ -+int x,ali,size; -+ -+ if((var->xres < 0)||(var->xres > XRES)|| -+ (var->yres < 0)||(var->yres > YRES)|| -+ (var->xres_virtual < 0)||(var->xres_virtual > XRES)|| -+ (var->yres_virtual < 0)||(var->yres_virtual > YRES)|| -+ (var->xoffset < 0)||(var->xoffset > XRES)|| -+ (var->yoffset < 0)||(var->yoffset > YRES)) -+ { -+ return(-1); -+ } -+ x = var->xres_virtual * 2; -+ ali = x + (x % 16); -+ *(volatile unsigned long *)(VIDEO_FB_WIDTH) = (ali << 16) | ali; -+ *(volatile unsigned long *)(VIDEO_PLANE_TL) = (var->yoffset << 16) | var->xoffset; -+ *(volatile unsigned long *)(VIDEO_PLANE_BR) = -+ ((var->yoffset + var->yres - 1) << 16) | -+ (var->xoffset + var->xres - 1); -+ size = var->xres_virtual * var->yres_virtual * var->bits_per_pixel / 8; -+ *(volatile unsigned long *)(VIDEO_FB_0_LAST_ADDRESS) = 0x80000000 + (VOY_VRAM_TOP1 & 0x00ffffff) + size; -+ *(volatile unsigned long *)(VIDEO_FB_1_LAST_ADDRESS) = 0x80000000 + (VOY_VRAM_TOP2 & 0x00ffffff) + size; -+ return(0); -+} -+ -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/include/CVS/Entries linux-2.6.17/include/CVS/Entries ---- linux-2.6.17-vanilla/include/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/CVS/Entries 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,3 @@ -+D/asm-sh//// -+D/linux//// -+D/video//// -diff -ruN linux-2.6.17-vanilla/include/CVS/Repository linux-2.6.17/include/CVS/Repository ---- linux-2.6.17-vanilla/include/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/CVS/Repository 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include -diff -ruN linux-2.6.17-vanilla/include/CVS/Root linux-2.6.17/include/CVS/Root ---- linux-2.6.17-vanilla/include/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/CVS/Root 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/CVS/Entries linux-2.6.17/include/asm-sh/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/CVS/Entries 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,114 @@ -+/adc.h/1.2/Fri Sep 24 14:58:00 2004/-ko/ -+/apm.h/1.1/Sun Jan 29 17:46:24 2006// -+/atomic.h/1.6/Mon Mar 27 21:06:15 2006/-ko/ -+/bug.h/1.5/Tue Jun 21 04:15:52 2005// -+/bugs.h/1.8/Sun Aug 21 23:47:31 2005// -+/byteorder.h/1.4/Wed Feb 4 16:16:29 2004/-ko/ -+/cache.h/1.11/Mon Mar 27 21:06:15 2006/-ko/ -+/cacheflush.h/1.7/Sat Dec 31 11:30:47 2005// -+/checksum.h/1.9/Sat Jan 7 20:08:29 2006// -+/clock.h/1.2/Sun Nov 13 16:57:33 2005/-ko/ -+/current.h/1.3/Sun May 4 19:30:00 2003/-ko/ -+/delay.h/1.3/Tue May 6 23:33:19 2003/-ko/ -+/div64.h/1.5/Mon Jul 21 13:36:14 2003/-ko/ -+/dma-mapping.h/1.12/Wed Jan 4 13:24:06 2006// -+/dma.h/1.18/Sun Oct 16 18:27:54 2005// -+/elf.h/1.5/Tue Jan 3 22:35:58 2006/-ko/ -+/fixmap.h/1.1/Tue Mar 30 01:02:55 2004// -+/flat.h/1.2/Wed Jun 16 15:21:48 2004/-ko/ -+/floppy.h/1.3/Tue Jun 21 04:15:52 2005/-ko/ -+/freq.h/1.4/Sat Mar 26 20:25:36 2005/-ko/ -+/hardirq.h/1.10/Mon Jan 31 20:45:09 2005/-ko/ -+/hd64461.h/1.4/Sun Jan 29 17:46:24 2006/-ko/ -+/hw_irq.h/1.4/Sun May 4 19:30:01 2003// -+/ide.h/1.15/Tue Jan 3 22:35:58 2006/-ko/ -+/io_generic.h/1.4/Wed Nov 23 15:47:38 2005/-ko/ -+/ioctl.h/1.3/Mon Mar 27 21:06:15 2006/-ko/ -+/ioctls.h/1.5/Sun Jan 22 17:35:31 2006/-ko/ -+/ipc.h/1.5/Tue Jun 21 04:15:52 2005/-ko/ -+/irq-sh73180.h/1.2/Sun Jan 8 12:22:58 2006// -+/keyboard.h/1.3/Fri May 16 17:19:08 2003/-ko/ -+/kgdb.h/1.6/Sun Feb 5 12:27:59 2006// -+/kmap_types.h/1.3/Thu Mar 11 18:08:05 2004// -+/local.h/1.1/Sun Jul 27 20:21:41 2003// -+/machvec.h/1.13/Wed Jan 4 13:20:32 2006// -+/mc146818rtc.h/1.5/Wed Jan 4 18:42:42 2006// -+/microdev.h/1.1/Sat Dec 17 23:34:08 2005/-ko/ -+/mman.h/1.5/Mon Mar 27 21:06:15 2006// -+/mmu.h/1.4/Tue Jan 3 22:51:48 2006// -+/mmu_context.h/1.12/Thu Oct 20 22:48:05 2005// -+/module.h/1.4/Sun Oct 26 23:34:34 2003// -+/namei.h/1.2/Wed Apr 7 20:19:00 2004/-ko/ -+/param.h/1.4/Thu Mar 11 18:08:05 2004// -+/pci.h/1.19/Sun Feb 5 21:55:30 2006// -+/percpu.h/1.1/Sat Oct 19 07:31:03 2002// -+/pgalloc.h/1.20/Sat Dec 31 11:30:47 2005/-ko/ -+/pgtable.h/1.33/Sun Jan 22 17:26:20 2006// -+/pm.h/1.1/Sun Jan 29 17:46:24 2006// -+/posix_types.h/1.3/Thu Oct 9 14:59:21 2003// -+/ptrace.h/1.13/Mon Mar 27 21:06:15 2006// -+/rwsem.h/1.2/Tue Jan 3 22:35:58 2006/-ko/ -+/scatterlist.h/1.6/Sat Sep 3 20:05:39 2005/-ko/ -+/se.h/1.1/Wed Jan 4 17:53:54 2006/-ko/ -+/se7300.h/1.1/Wed Jan 4 17:25:52 2006/-ko/ -+/se73180.h/1.1/Wed Jan 4 17:33:14 2006/-ko/ -+/se7751.h/1.1/Wed Jan 4 18:13:24 2006/-ko/ -+/sections.h/1.1/Sun Jul 27 21:05:50 2003// -+/segment.h/1.4/Wed Jul 16 03:58:49 2003// -+/semaphore.h/1.7/Tue Jan 3 22:35:58 2006// -+/serial.h/1.4/Mon Aug 29 21:01:19 2005/-ko/ -+/shmparam.h/1.3/Fri Sep 24 14:58:00 2004// -+/sigcontext.h/1.4/Wed Apr 28 08:53:25 2004/-ko/ -+/signal.h/1.7/Tue Jun 21 04:15:52 2005// -+/smc37c93x.h/1.3/Tue May 31 14:08:54 2005/-ko/ -+/smp.h/1.6/Mon Aug 29 21:01:19 2005// -+/snapgear.h/1.1/Wed Jan 4 18:42:42 2006/-ko/ -+/spinlock.h/1.8/Fri Oct 28 13:12:50 2005/-ko/ -+/statfs.h/1.3/Sat Jun 28 15:44:06 2003// -+/system.h/1.24/Mon Mar 27 21:06:15 2006// -+/systemh7751.h/1.1/Wed Jan 4 18:52:50 2006/-ko/ -+/timer.h/1.2/Sun Jan 29 17:46:24 2006/-ko/ -+/timex.h/1.6/Tue Jun 21 04:15:52 2005// -+/titan.h/1.1/Tue Nov 29 04:01:49 2005// -+/tlb.h/1.5/Tue May 6 23:28:51 2003// -+/tlbflush.h/1.1/Fri Apr 12 04:26:29 2002// -+/ubc.h/1.4/Fri Sep 24 14:58:00 2004// -+/user.h/1.5/Fri Sep 24 14:58:00 2004/-ko/ -+/watchdog.h/1.4/Fri Sep 24 14:58:00 2004/-ko/ -+D/bigsur//// -+D/cat68701//// -+D/cpu-sh2//// -+D/cpu-sh3//// -+D/cpu-sh4//// -+D/cqreek//// -+D/dmida//// -+D/dreamcast//// -+D/ec3104//// -+D/edosk7705//// -+D/harp//// -+D/hd64465//// -+D/hp6xx//// -+D/hs7751rvoip//// -+D/landisk//// -+D/mpc1211//// -+D/overdrive//// -+D/r7780rp//// -+D/rts7751r2d//// -+D/saturn//// -+D/sh03//// -+D/sh2000//// -+/addrspace.h/1.4/Wed Jul 5 14:51:36 2006// -+/bitops.h/1.11/Wed Jul 5 14:51:36 2006/-ko/ -+/io.h/1.20/Wed Jul 5 14:51:36 2006// -+/kexec.h/1.2/Wed Jul 5 14:51:36 2006/-ko/ -+/page.h/1.15/Wed Jul 5 14:51:36 2006// -+/poll.h/1.3/Wed Jul 5 14:51:37 2006// -+/types.h/1.7/Wed Jul 5 14:51:37 2006/-ko/ -+/processor.h/1.36/Fri Jul 7 10:15:20 2006/-ko/ -+/thread_info.h/1.18/Fri Jul 7 10:15:20 2006/-ko/ -+/uaccess.h/1.17/Fri Jul 7 10:15:20 2006/-ko/ -+/unistd.h/1.29/Fri Jul 7 10:15:20 2006/-ko/ -+/rtc.h/1.6/Sat Jul 8 20:16:14 2006/-ko/ -+/irq-sh7780.h/1.3/Wed Jul 12 16:51:59 2006/-ko/ -+/irq.h/1.31/Wed Jul 12 16:51:59 2006/-ko/ -+/sfp-machine.h/1.1/Wed Jul 12 10:35:55 2006/-ko/ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/CVS/Repository linux-2.6.17/include/asm-sh/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/CVS/Repository 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/CVS/Root linux-2.6.17/include/asm-sh/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/CVS/Root 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/apm.h linux-2.6.17/include/asm-sh/apm.h ---- linux-2.6.17-vanilla/include/asm-sh/apm.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/apm.h 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,46 @@ -+/* -+ * Copyright 2006 (c) Andriy Skulysh <askulysh@gmail.com> -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * -+ */ -+ -+#ifndef __ASM_SH_APM_H -+#define __ASM_SH_APM_H -+ -+#define APM_AC_OFFLINE 0 -+#define APM_AC_ONLINE 1 -+#define APM_AC_BACKUP 2 -+#define APM_AC_UNKNOWN 0xff -+ -+#define APM_BATTERY_STATUS_HIGH 0 -+#define APM_BATTERY_STATUS_LOW 1 -+#define APM_BATTERY_STATUS_CRITICAL 2 -+#define APM_BATTERY_STATUS_CHARGING 3 -+#define APM_BATTERY_STATUS_NOT_PRESENT 4 -+#define APM_BATTERY_STATUS_UNKNOWN 0xff -+ -+#define APM_BATTERY_LIFE_UNKNOWN 0xFFFF -+#define APM_BATTERY_LIFE_MINUTES 0x8000 -+#define APM_BATTERY_LIFE_VALUE_MASK 0x7FFF -+ -+#define APM_BATTERY_FLAG_HIGH (1 << 0) -+#define APM_BATTERY_FLAG_LOW (1 << 1) -+#define APM_BATTERY_FLAG_CRITICAL (1 << 2) -+#define APM_BATTERY_FLAG_CHARGING (1 << 3) -+#define APM_BATTERY_FLAG_NOT_PRESENT (1 << 7) -+#define APM_BATTERY_FLAG_UNKNOWN 0xff -+ -+#define APM_UNITS_MINS 0 -+#define APM_UNITS_SECS 1 -+#define APM_UNITS_UNKNOWN -1 -+ -+ -+extern int (*apm_get_info)(char *buf, char **start, off_t fpos, int length); -+extern int apm_suspended; -+ -+void apm_queue_event(apm_event_t event); -+ -+#endif -diff -ruN linux-2.6.17-vanilla/include/asm-sh/atomic.h linux-2.6.17/include/asm-sh/atomic.h ---- linux-2.6.17-vanilla/include/asm-sh/atomic.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/atomic.h 2006-07-12 16:54:25.000000000 +0000 -@@ -14,6 +14,7 @@ - #define atomic_read(v) ((v)->counter) - #define atomic_set(v,i) ((v)->counter = (i)) - -+#include <linux/compiler.h> - #include <asm/system.h> - - /* -diff -ruN linux-2.6.17-vanilla/include/asm-sh/bigsur/CVS/Entries linux-2.6.17/include/asm-sh/bigsur/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/bigsur/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/bigsur/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,4 @@ -+/bigsur.h/1.2/Fri Nov 1 17:19:28 2002// -+/io.h/1.4/Mon Aug 4 01:38:06 2003// -+/serial.h/1.4/Mon Aug 29 21:01:19 2005// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/bigsur/CVS/Repository linux-2.6.17/include/asm-sh/bigsur/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/bigsur/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/bigsur/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/bigsur -diff -ruN linux-2.6.17-vanilla/include/asm-sh/bigsur/CVS/Root linux-2.6.17/include/asm-sh/bigsur/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/bigsur/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/bigsur/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/bitops.h linux-2.6.17/include/asm-sh/bitops.h ---- linux-2.6.17-vanilla/include/asm-sh/bitops.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/bitops.h 2006-07-12 16:54:25.000000000 +0000 -@@ -6,7 +6,7 @@ - /* For __swab32 */ - #include <asm/byteorder.h> - --static __inline__ void set_bit(int nr, volatile void * addr) -+static inline void set_bit(int nr, volatile void * addr) - { - int mask; - volatile unsigned int *a = addr; -@@ -24,7 +24,7 @@ - */ - #define smp_mb__before_clear_bit() barrier() - #define smp_mb__after_clear_bit() barrier() --static __inline__ void clear_bit(int nr, volatile void * addr) -+static inline void clear_bit(int nr, volatile void * addr) - { - int mask; - volatile unsigned int *a = addr; -@@ -37,7 +37,7 @@ - local_irq_restore(flags); - } - --static __inline__ void change_bit(int nr, volatile void * addr) -+static inline void change_bit(int nr, volatile void * addr) - { - int mask; - volatile unsigned int *a = addr; -@@ -50,7 +50,7 @@ - local_irq_restore(flags); - } - --static __inline__ int test_and_set_bit(int nr, volatile void * addr) -+static inline int test_and_set_bit(int nr, volatile void * addr) - { - int mask, retval; - volatile unsigned int *a = addr; -@@ -66,7 +66,7 @@ - return retval; - } - --static __inline__ int test_and_clear_bit(int nr, volatile void * addr) -+static inline int test_and_clear_bit(int nr, volatile void * addr) - { - int mask, retval; - volatile unsigned int *a = addr; -@@ -82,7 +82,7 @@ - return retval; - } - --static __inline__ int test_and_change_bit(int nr, volatile void * addr) -+static inline int test_and_change_bit(int nr, volatile void * addr) - { - int mask, retval; - volatile unsigned int *a = addr; -@@ -100,7 +100,7 @@ - - #include <asm-generic/bitops/non-atomic.h> - --static __inline__ unsigned long ffz(unsigned long word) -+static inline unsigned long ffz(unsigned long word) - { - unsigned long result; - -@@ -120,7 +120,7 @@ - * - * Undefined if no bit exists, so code should check against 0 first. - */ --static __inline__ unsigned long __ffs(unsigned long word) -+static inline unsigned long __ffs(unsigned long word) - { - unsigned long result; - -diff -ruN linux-2.6.17-vanilla/include/asm-sh/bugs.h linux-2.6.17/include/asm-sh/bugs.h ---- linux-2.6.17-vanilla/include/asm-sh/bugs.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/bugs.h 2006-07-12 16:54:25.000000000 +0000 -@@ -32,6 +32,10 @@ - case CPU_SH7750 ... CPU_SH4_501: - *p++ = '4'; - break; -+ case CPU_SH7770 ... CPU_SH7781: -+ *p++ = '4'; -+ *p++ = 'a'; -+ break; - default: - *p++ = '?'; - *p++ = '!'; -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cache.h linux-2.6.17/include/asm-sh/cache.h ---- linux-2.6.17-vanilla/include/asm-sh/cache.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cache.h 2006-07-12 16:54:25.000000000 +0000 -@@ -10,7 +10,6 @@ - #ifdef __KERNEL__ - - #include <asm/cpu/cache.h> --#include <asm/cpu/cacheflush.h> - - #define SH_CACHE_VALID 1 - #define SH_CACHE_UPDATED 2 -@@ -23,24 +22,31 @@ - #define L1_CACHE_ALIGN(x) (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1)) - - struct cache_info { -- unsigned int ways; -- unsigned int sets; -- unsigned int linesz; -- -+ unsigned int ways; /* Number of cache ways */ -+ unsigned int sets; /* Number of cache sets */ -+ unsigned int linesz; /* Cache line size (bytes) */ -+ -+ unsigned int way_size; /* sets * line size */ -+ -+ /* -+ * way_incr is the address offset for accessing the next way -+ * in memory mapped cache array ops. -+ */ - unsigned int way_incr; -- - unsigned int entry_shift; - unsigned int entry_mask; - -+ /* -+ * Compute a mask which selects the address bits which overlap between -+ * 1. those used to select the cache set during indexing -+ * 2. those in the physical page number. -+ */ -+ unsigned int alias_mask; -+ -+ unsigned int n_aliases; /* Number of aliases */ -+ - unsigned long flags; - }; - --/* Flush (write-back only) a region (smaller than a page) */ --extern void __flush_wback_region(void *start, int size); --/* Flush (write-back & invalidate) a region (smaller than a page) */ --extern void __flush_purge_region(void *start, int size); --/* Flush (invalidate only) a region (smaller than a page) */ --extern void __flush_invalidate_region(void *start, int size); -- - #endif /* __KERNEL__ */ - #endif /* __ASM_SH_CACHE_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cacheflush.h linux-2.6.17/include/asm-sh/cacheflush.h ---- linux-2.6.17-vanilla/include/asm-sh/cacheflush.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cacheflush.h 2006-07-12 16:54:25.000000000 +0000 -@@ -2,6 +2,7 @@ - #define __ASM_SH_CACHEFLUSH_H - #ifdef __KERNEL__ - -+#include <linux/mm.h> - #include <asm/cpu/cacheflush.h> - - /* Flush (write-back only) a region (smaller than a page) */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cat68701/CVS/Entries linux-2.6.17/include/asm-sh/cat68701/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/cat68701/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cat68701/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,2 @@ -+/io.h/1.4/Mon Aug 4 01:44:40 2003// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cat68701/CVS/Repository linux-2.6.17/include/asm-sh/cat68701/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/cat68701/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cat68701/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/cat68701 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cat68701/CVS/Root linux-2.6.17/include/asm-sh/cat68701/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/cat68701/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cat68701/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/checksum.h linux-2.6.17/include/asm-sh/checksum.h ---- linux-2.6.17-vanilla/include/asm-sh/checksum.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/checksum.h 2006-07-12 16:54:25.000000000 +0000 -@@ -160,6 +160,7 @@ - } - - #define _HAVE_ARCH_IPV6_CSUM -+#ifdef CONFIG_IPV6 - static __inline__ unsigned short int csum_ipv6_magic(struct in6_addr *saddr, - struct in6_addr *daddr, - __u32 len, -@@ -195,6 +196,7 @@ - - return csum_fold(sum); - } -+#endif - - /* - * Copy and checksum to user -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh2/CVS/Entries linux-2.6.17/include/asm-sh/cpu-sh2/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh2/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh2/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,8 @@ -+/addrspace.h/1.1/Fri Jul 4 13:01:46 2003// -+/cache.h/1.3/Wed Jul 16 04:08:29 2003/-ko/ -+/cacheflush.h/1.4/Tue Jun 21 04:15:52 2005/-ko/ -+/dma.h/1.1/Fri Jul 4 13:01:46 2003// -+/shmparam.h/1.1/Fri Jul 4 13:01:46 2003// -+/ubc.h/1.1/Fri Jul 4 13:01:46 2003// -+/watchdog.h/1.1/Sat May 24 19:12:09 2003// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh2/CVS/Repository linux-2.6.17/include/asm-sh/cpu-sh2/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh2/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh2/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/cpu-sh2 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh2/CVS/Root linux-2.6.17/include/asm-sh/cpu-sh2/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh2/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh2/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/CVS/Entries linux-2.6.17/include/asm-sh/cpu-sh3/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh3/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,14 @@ -+/adc.h/1.2/Sun Aug 15 16:59:32 2004/-ko/ -+/addrspace.h/1.2/Sun May 4 19:30:07 2003/-ko/ -+/cache.h/1.4/Mon Aug 30 12:55:32 2004/-ko/ -+/cacheflush.h/1.8/Tue Jan 3 23:01:25 2006/-ko/ -+/dac.h/1.2/Sat Jun 5 17:17:34 2004/-ko/ -+/dma.h/1.7/Wed Jan 4 14:59:08 2006/-ko/ -+/freq.h/1.4/Sun Jan 29 17:46:24 2006/-ko/ -+/mmu_context.h/1.4/Sat Jan 7 20:05:01 2006/-ko/ -+/rtc.h/1.2/Sun May 4 19:30:08 2003/-ko/ -+/shmparam.h/1.2/Sun May 4 19:30:08 2003/-ko/ -+/timer.h/1.3/Tue May 31 14:07:35 2005/-ko/ -+/ubc.h/1.2/Sun May 4 19:30:08 2003/-ko/ -+/watchdog.h/1.1/Sat May 24 19:12:09 2003// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/CVS/Repository linux-2.6.17/include/asm-sh/cpu-sh3/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh3/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/cpu-sh3 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/CVS/Root linux-2.6.17/include/asm-sh/cpu-sh3/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh3/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/cache.h linux-2.6.17/include/asm-sh/cpu-sh3/cache.h ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/cache.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh3/cache.h 2006-07-12 16:54:26.000000000 +0000 -@@ -26,7 +26,7 @@ - #define CCR_CACHE_ENABLE CCR_CACHE_CE - #define CCR_CACHE_INVALIDATE CCR_CACHE_CF - --#if defined(CONFIG_CPU_SUBTYPE_SH7705) -+#if defined(CONFIG_CPU_SUBTYPE_SH7705) - #define CCR3 0xa40000b4 - #define CCR_CACHE_16KB 0x00010000 - #define CCR_CACHE_32KB 0x00020000 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/cacheflush.h linux-2.6.17/include/asm-sh/cpu-sh3/cacheflush.h ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/cacheflush.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh3/cacheflush.h 2006-07-12 16:54:26.000000000 +0000 -@@ -10,7 +10,7 @@ - #ifndef __ASM_CPU_SH3_CACHEFLUSH_H - #define __ASM_CPU_SH3_CACHEFLUSH_H - --/* -+/* - * Cache flushing: - * - * - flush_cache_all() flushes entire cache -@@ -35,53 +35,41 @@ - /* 32KB cache, 4kb PAGE sizes need to check bit 12 */ - #define CACHE_ALIAS 0x00001000 - --struct page; --struct mm_struct; --struct vm_area_struct; -- --extern void flush_cache_all(void); --extern void flush_cache_mm(struct mm_struct *mm); --extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, -- unsigned long end); --extern void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); --extern void flush_dcache_page(struct page *pg); --extern void flush_icache_range(unsigned long start, unsigned long end); --extern void flush_icache_page(struct vm_area_struct *vma, struct page *page); -- --#define flush_dcache_mmap_lock(mapping) do { } while (0) --#define flush_dcache_mmap_unlock(mapping) do { } while (0) -- --/* SH3 has unified cache so no special action needed here */ --#define flush_cache_sigtramp(vaddr) do { } while (0) --#define flush_page_to_ram(page) do { } while (0) --#define flush_icache_user_range(vma,pg,adr,len) do { } while (0) -- --#define p3_cache_init() do { } while (0) -- - #define PG_mapped PG_arch_1 - --/* We provide our own get_unmapped_area to avoid cache alias issue */ --#define HAVE_ARCH_UNMAPPED_AREA -- -+void flush_cache_all(void); -+void flush_cache_mm(struct mm_struct *mm); -+void flush_cache_range(struct vm_area_struct *vma, unsigned long start, -+ unsigned long end); -+void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); -+void flush_dcache_page(struct page *pg); -+void flush_icache_range(unsigned long start, unsigned long end); -+void flush_icache_page(struct vm_area_struct *vma, struct page *page); - #else -- - #define flush_cache_all() do { } while (0) - #define flush_cache_mm(mm) do { } while (0) - #define flush_cache_range(vma, start, end) do { } while (0) - #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) - #define flush_dcache_page(page) do { } while (0) --#define flush_dcache_mmap_lock(mapping) do { } while (0) --#define flush_dcache_mmap_unlock(mapping) do { } while (0) - #define flush_icache_range(start, end) do { } while (0) - #define flush_icache_page(vma,pg) do { } while (0) --#define flush_icache_user_range(vma,pg,adr,len) do { } while (0) -+#endif -+ -+#define flush_dcache_mmap_lock(mapping) do { } while (0) -+#define flush_dcache_mmap_unlock(mapping) do { } while (0) -+ -+/* SH3 has unified cache so no special action needed here */ - #define flush_cache_sigtramp(vaddr) do { } while (0) -+#define flush_icache_user_range(vma,pg,adr,len) do { } while (0) - - #define p3_cache_init() do { } while (0) - -+/* -+ * We provide our own get_unmapped_area to avoid cache aliasing issues -+ * on SH7705 with a 32KB cache, and to page align addresses in the -+ * non-aliasing case. -+ */ - #define HAVE_ARCH_UNMAPPED_AREA - --#endif -- - #endif /* __ASM_CPU_SH3_CACHEFLUSH_H */ - -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/freq.h linux-2.6.17/include/asm-sh/cpu-sh3/freq.h ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/freq.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh3/freq.h 2006-07-12 16:54:26.000000000 +0000 -@@ -18,5 +18,9 @@ - #define MIN_DIVISOR_NR 0 - #define MAX_DIVISOR_NR 4 - -+#define FRQCR_CKOEN 0x0100 -+#define FRQCR_PLLEN 0x0080 -+#define FRQCR_PSTBY 0x0040 -+ - #endif /* __ASM_CPU_SH3_FREQ_H */ - -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/timer.h linux-2.6.17/include/asm-sh/cpu-sh3/timer.h ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh3/timer.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh3/timer.h 2006-07-12 16:54:26.000000000 +0000 -@@ -23,6 +23,10 @@ - * --------------------------------------------------------------------------- - */ - -+#if !defined(CONFIG_CPU_SUBTYPE_SH7727) -+#define TMU_TOCR 0xfffffe90 /* Byte access */ -+#endif -+ - #if defined(CONFIG_CPU_SUBTYPE_SH7300) || defined(CONFIG_CPU_SUBTYPE_SH7710) - #define TMU_TSTR 0xa412fe92 /* Byte access */ - -@@ -39,9 +43,6 @@ - #define TMU2_TCR 0xa412feb4 /* Word access */ - - #else --#if !defined(CONFIG_CPU_SUBTYPE_SH7727) --#define TMU_TOCR 0xfffffe90 /* Byte access */ --#endif - #define TMU_TSTR 0xfffffe92 /* Byte access */ - - #define TMU0_TCOR 0xfffffe94 /* Long access */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/CVS/Entries linux-2.6.17/include/asm-sh/cpu-sh4/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh4/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,14 @@ -+/addrspace.h/1.3/Wed Jan 18 05:43:01 2006/-ko/ -+/cache.h/1.5/Sun Aug 21 23:47:31 2005/-ko/ -+/cacheflush.h/1.6/Sat Dec 31 11:30:49 2005/-ko/ -+/dma-sh7780.h/1.2/Sun Feb 5 15:29:22 2006/-ko/ -+/dma.h/1.10/Sun Feb 5 15:29:22 2006/-ko/ -+/freq.h/1.4/Sun Aug 21 23:47:31 2005/-ko/ -+/mmu_context.h/1.5/Sat Jan 7 20:05:01 2006/-ko/ -+/rtc.h/1.2/Sun May 4 19:30:12 2003/-ko/ -+/shmparam.h/1.2/Sun May 4 19:30:13 2003/-ko/ -+/sq.h/1.2/Sat Jan 7 13:14:44 2006// -+/timer.h/1.1/Thu Oct 14 12:22:25 2004/-ko/ -+/ubc.h/1.2/Sun May 4 19:30:13 2003/-ko/ -+/watchdog.h/1.1/Sat May 24 19:12:09 2003// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/CVS/Repository linux-2.6.17/include/asm-sh/cpu-sh4/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh4/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/cpu-sh4 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/CVS/Root linux-2.6.17/include/asm-sh/cpu-sh4/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh4/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/addrspace.h linux-2.6.17/include/asm-sh/cpu-sh4/addrspace.h ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/addrspace.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh4/addrspace.h 2006-07-12 16:54:26.000000000 +0000 -@@ -22,5 +22,8 @@ - #define P4SEG_TLB_DATA 0xf7000000 - #define P4SEG_REG_BASE 0xff000000 - -+#define PA_AREA5_IO 0xb4000000 /* Area 5 IO Memory */ -+#define PA_AREA6_IO 0xb8000000 /* Area 6 IO Memory */ -+ - #endif /* __ASM_CPU_SH4_ADDRSPACE_H */ - -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/cache.h linux-2.6.17/include/asm-sh/cpu-sh4/cache.h ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/cache.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh4/cache.h 2006-07-12 16:54:26.000000000 +0000 -@@ -22,7 +22,9 @@ - #define CCR_CACHE_ICE 0x0100 /* Instruction Cache Enable */ - #define CCR_CACHE_ICI 0x0800 /* IC Invalidate */ - #define CCR_CACHE_IIX 0x8000 /* IC Index Enable */ -+#ifndef CONFIG_CPU_SUBTYPE_SH7780 - #define CCR_CACHE_EMODE 0x80000000 /* EMODE Enable */ -+#endif - - /* Default CCR setup: 8k+16k-byte cache,P1-wb,enable */ - #define CCR_CACHE_ENABLE (CCR_CACHE_OCE|CCR_CACHE_ICE) -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/cacheflush.h linux-2.6.17/include/asm-sh/cpu-sh4/cacheflush.h ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/cacheflush.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh4/cacheflush.h 2006-07-12 16:54:26.000000000 +0000 -@@ -16,34 +16,26 @@ - * caching; in which case they're only semi-broken), - * so we need them. - */ -- --/* Page is 4K, OC size is 16K, there are four lines. */ --#define CACHE_ALIAS 0x00003000 -- --struct page; --struct mm_struct; --struct vm_area_struct; -- --extern void flush_cache_all(void); --extern void flush_cache_mm(struct mm_struct *mm); --extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, -- unsigned long end); --extern void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); --extern void flush_dcache_page(struct page *pg); -+void flush_cache_all(void); -+void flush_cache_mm(struct mm_struct *mm); -+void flush_cache_range(struct vm_area_struct *vma, unsigned long start, -+ unsigned long end); -+void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, -+ unsigned long pfn); -+void flush_dcache_page(struct page *pg); - - #define flush_dcache_mmap_lock(mapping) do { } while (0) - #define flush_dcache_mmap_unlock(mapping) do { } while (0) - --extern void flush_icache_range(unsigned long start, unsigned long end); --extern void flush_cache_sigtramp(unsigned long addr); --extern void flush_icache_user_range(struct vm_area_struct *vma, -- struct page *page, unsigned long addr, -- int len); -+void flush_icache_range(unsigned long start, unsigned long end); -+void flush_cache_sigtramp(unsigned long addr); -+void flush_icache_user_range(struct vm_area_struct *vma, struct page *page, -+ unsigned long addr, int len); - - #define flush_icache_page(vma,pg) do { } while (0) - - /* Initialization of P3 area for copy_user_page */ --extern void p3_cache_init(void); -+void p3_cache_init(void); - - #define PG_mapped PG_arch_1 - -@@ -61,4 +53,3 @@ - } - #endif /* CONFIG_MMU */ - #endif /* __ASM_CPU_SH4_CACHEFLUSH_H */ -- -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/dma-sh7780.h linux-2.6.17/include/asm-sh/cpu-sh4/dma-sh7780.h ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/dma-sh7780.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh4/dma-sh7780.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,39 @@ -+#ifndef __ASM_SH_CPU_SH4_DMA_SH7780_H -+#define __ASM_SH_CPU_SH4_DMA_SH7780_H -+ -+#define REQ_HE 0x000000C0 -+#define REQ_H 0x00000080 -+#define REQ_LE 0x00000040 -+#define TM_BURST 0x0000020 -+#define TS_8 0x00000000 -+#define TS_16 0x00000008 -+#define TS_32 0x00000010 -+#define TS_16BLK 0x00000018 -+#define TS_32BLK 0x00100000 -+ -+/* -+ * The SuperH DMAC supports a number of transmit sizes, we list them here, -+ * with their respective values as they appear in the CHCR registers. -+ * -+ * Defaults to a 64-bit transfer size. -+ */ -+enum { -+ XMIT_SZ_8BIT, -+ XMIT_SZ_16BIT, -+ XMIT_SZ_32BIT, -+ XMIT_SZ_128BIT, -+ XMIT_SZ_256BIT, -+}; -+ -+/* -+ * The DMA count is defined as the number of bytes to transfer. -+ */ -+static unsigned int __attribute__ ((used)) ts_shift[] = { -+ [XMIT_SZ_8BIT] = 0, -+ [XMIT_SZ_16BIT] = 1, -+ [XMIT_SZ_32BIT] = 2, -+ [XMIT_SZ_128BIT] = 4, -+ [XMIT_SZ_256BIT] = 5, -+}; -+ -+#endif /* __ASM_SH_CPU_SH4_DMA_SH7780_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/dma.h linux-2.6.17/include/asm-sh/cpu-sh4/dma.h ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/dma.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh4/dma.h 2006-07-12 16:54:26.000000000 +0000 -@@ -1,11 +1,17 @@ - #ifndef __ASM_CPU_SH4_DMA_H - #define __ASM_CPU_SH4_DMA_H - -+#define DMAOR_INIT ( 0x8000 | DMAOR_DME ) -+ - #ifdef CONFIG_CPU_SH4A - #define SH_DMAC_BASE 0xfc808020 -+ -+#define CHCR_TS_MASK 0x18 -+#define CHCR_TS_SHIFT 3 -+ -+#include <asm/cpu/dma-sh7780.h> - #else - #define SH_DMAC_BASE 0xffa00000 --#endif - - /* Definitions for the SuperH DMAC */ - #define TM_BURST 0x0000080 -@@ -19,8 +25,6 @@ - - #define DMAOR_COD 0x00000008 - --#define DMAOR_INIT ( 0x8000 | DMAOR_DME ) -- - /* - * The SuperH DMAC supports a number of transmit sizes, we list them here, - * with their respective values as they appear in the CHCR registers. -@@ -45,5 +49,6 @@ - [XMIT_SZ_32BIT] = 2, - [XMIT_SZ_256BIT] = 5, - }; -+#endif - - #endif /* __ASM_CPU_SH4_DMA_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/sq.h linux-2.6.17/include/asm-sh/cpu-sh4/sq.h ---- linux-2.6.17-vanilla/include/asm-sh/cpu-sh4/sq.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cpu-sh4/sq.h 2006-07-12 16:54:26.000000000 +0000 -@@ -17,7 +17,7 @@ - * Store queues range from e0000000-e3fffffc, allowing approx. 64MB to be - * mapped to any physical address space. Since data is written (and aligned) - * to 32-byte boundaries, we need to be sure that all allocations are aligned. -- */ -+ */ - #define SQ_SIZE 32 - #define SQ_ALIGN_MASK (~(SQ_SIZE - 1)) - #define SQ_ALIGN(addr) (((addr)+SQ_SIZE-1) & SQ_ALIGN_MASK) -@@ -26,23 +26,10 @@ - #define SQ_QACR1 (P4SEG_REG_BASE + 0x3c) - #define SQ_ADDRMAX (P4SEG_STORE_QUE + 0x04000000) - --struct sq_mapping { -- const char *name; -- -- unsigned long sq_addr; -- unsigned long addr; -- unsigned int size; -- -- struct list_head list; --}; -- - /* arch/sh/kernel/cpu/sh4/sq.c */ --extern struct sq_mapping *sq_remap(unsigned long phys, unsigned int size, const char *name); --extern void sq_unmap(struct sq_mapping *map); -- --extern void sq_clear(unsigned long addr, unsigned int len); --extern void sq_flush(void *addr); --extern void sq_flush_range(unsigned long start, unsigned int len); -+unsigned long sq_remap(unsigned long phys, unsigned int size, -+ const char *name, unsigned long flags); -+void sq_unmap(unsigned long vaddr); -+void sq_flush_range(unsigned long start, unsigned int len); - - #endif /* __ASM_CPU_SH4_SQ_H */ -- -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cqreek/CVS/Entries linux-2.6.17/include/asm-sh/cqreek/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/cqreek/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cqreek/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,2 @@ -+/cqreek.h/1.2/Fri Nov 1 17:19:28 2002// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cqreek/CVS/Repository linux-2.6.17/include/asm-sh/cqreek/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/cqreek/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cqreek/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/cqreek -diff -ruN linux-2.6.17-vanilla/include/asm-sh/cqreek/CVS/Root linux-2.6.17/include/asm-sh/cqreek/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/cqreek/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/cqreek/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/dmida/CVS/Entries linux-2.6.17/include/asm-sh/dmida/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/dmida/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/dmida/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,2 @@ -+/io.h/1.2/Sun May 4 19:30:13 2003/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/dmida/CVS/Repository linux-2.6.17/include/asm-sh/dmida/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/dmida/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/dmida/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/dmida -diff -ruN linux-2.6.17-vanilla/include/asm-sh/dmida/CVS/Root linux-2.6.17/include/asm-sh/dmida/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/dmida/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/dmida/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/dreamcast/CVS/Entries linux-2.6.17/include/asm-sh/dreamcast/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/dreamcast/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/dreamcast/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,4 @@ -+/dma.h/1.2/Wed Aug 27 12:35:06 2003// -+/pci.h/1.1/Sun Aug 17 16:27:11 2003// -+/sysasic.h/1.4/Sat Aug 23 00:46:39 2003// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/dreamcast/CVS/Repository linux-2.6.17/include/asm-sh/dreamcast/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/dreamcast/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/dreamcast/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/dreamcast -diff -ruN linux-2.6.17-vanilla/include/asm-sh/dreamcast/CVS/Root linux-2.6.17/include/asm-sh/dreamcast/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/dreamcast/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/dreamcast/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/ec3104/CVS/Entries linux-2.6.17/include/asm-sh/ec3104/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/ec3104/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/ec3104/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,5 @@ -+/ec3104.h/1.2/Fri Nov 1 17:19:29 2002// -+/io.h/1.3/Tue Jul 29 14:27:12 2003// -+/keyboard.h/1.2/Fri Nov 1 17:19:29 2002// -+/serial.h/1.4/Mon Aug 29 21:01:19 2005// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/ec3104/CVS/Repository linux-2.6.17/include/asm-sh/ec3104/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/ec3104/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/ec3104/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/ec3104 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/ec3104/CVS/Root linux-2.6.17/include/asm-sh/ec3104/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/ec3104/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/ec3104/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/edosk7705/CVS/Entries linux-2.6.17/include/asm-sh/edosk7705/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/edosk7705/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/edosk7705/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,2 @@ -+/io.h/1.1/Mon Aug 30 12:55:33 2004/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/edosk7705/CVS/Repository linux-2.6.17/include/asm-sh/edosk7705/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/edosk7705/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/edosk7705/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/edosk7705 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/edosk7705/CVS/Root linux-2.6.17/include/asm-sh/edosk7705/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/edosk7705/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/edosk7705/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/harp/CVS/Entries linux-2.6.17/include/asm-sh/harp/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/harp/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/harp/CVS/Entries 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,3 @@ -+/harp.h/1.2/Fri Nov 1 17:19:29 2002// -+/io.h/1.2/Sun May 4 19:30:14 2003/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/harp/CVS/Repository linux-2.6.17/include/asm-sh/harp/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/harp/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/harp/CVS/Repository 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/harp -diff -ruN linux-2.6.17-vanilla/include/asm-sh/harp/CVS/Root linux-2.6.17/include/asm-sh/harp/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/harp/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/harp/CVS/Root 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hd64461.h linux-2.6.17/include/asm-sh/hd64461.h ---- linux-2.6.17-vanilla/include/asm-sh/hd64461.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hd64461.h 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,208 @@ -+#ifndef __ASM_SH_HD64461 -+#define __ASM_SH_HD64461 -+/* -+ * $Id: hd64461.h,v 1.5 2004/03/16 00:07:51 lethal Exp $ -+ * Copyright (C) 2000 YAEGASHI Takeshi -+ * Hitachi HD64461 companion chip support -+ */ -+ -+/* Constants for PCMCIA mappings */ -+#define HD64461_PCC_WINDOW 0x01000000 -+ -+#define HD64461_PCC0_BASE 0xb8000000 /* area 6 */ -+#define HD64461_PCC0_ATTR (HD64461_PCC0_BASE) -+#define HD64461_PCC0_COMM (HD64461_PCC0_BASE+HD64461_PCC_WINDOW) -+#define HD64461_PCC0_IO (HD64461_PCC0_BASE+2*HD64461_PCC_WINDOW) -+ -+#define HD64461_PCC1_BASE 0xb4000000 /* area 5 */ -+#define HD64461_PCC1_ATTR (HD64461_PCC1_BASE) -+#define HD64461_PCC1_COMM (HD64461_PCC1_BASE+HD64461_PCC_WINDOW) -+ -+#define HD64461_STBCR 0x10000 -+#define HD64461_STBCR_CKIO_STBY 0x2000 -+#define HD64461_STBCR_SAFECKE_IST 0x1000 -+#define HD64461_STBCR_SLCKE_IST 0x0800 -+#define HD64461_STBCR_SAFECKE_OST 0x0400 -+#define HD64461_STBCR_SLCKE_OST 0x0200 -+#define HD64461_STBCR_SMIAST 0x0100 -+#define HD64461_STBCR_SLCDST 0x0080 -+#define HD64461_STBCR_SPC0ST 0x0040 -+#define HD64461_STBCR_SPC1ST 0x0020 -+#define HD64461_STBCR_SAFEST 0x0010 -+#define HD64461_STBCR_STM0ST 0x0008 -+#define HD64461_STBCR_STM1ST 0x0004 -+#define HD64461_STBCR_SIRST 0x0002 -+#define HD64461_STBCR_SURTST 0x0001 -+ -+#define HD64461_SYSCR 0x10002 -+#define HD64461_SCPUCR 0x10004 -+ -+#define HD64461_LCDCBAR 0x11000 -+#define HD64461_LCDCLOR 0x11002 -+#define HD64461_LCDCCR 0x11004 -+#define HD64461_LCDCCR_STBACK 0x0400 -+#define HD64461_LCDCCR_STREQ 0x0100 -+#define HD64461_LCDCCR_MOFF 0x0080 -+#define HD64461_LCDCCR_REFSEL 0x0040 -+#define HD64461_LCDCCR_EPON 0x0020 -+#define HD64461_LCDCCR_SPON 0x0010 -+ -+#define HD64461_LDR1 0x11010 -+#define HD64461_LDR1_DON 0x01 -+#define HD64461_LDR1_DINV 0x80 -+ -+#define HD64461_LDR2 0x11012 -+#define HD64461_LDHNCR 0x11014 -+#define HD64461_LDHNSR 0x11016 -+#define HD64461_LDVNTR 0x11018 -+#define HD64461_LDVNDR 0x1101a -+#define HD64461_LDVSPR 0x1101c -+#define HD64461_LDR3 0x1101e -+ -+#define HD64461_CPTWAR 0x11030 -+#define HD64461_CPTWDR 0x11032 -+#define HD64461_CPTRAR 0x11034 -+#define HD64461_CPTRDR 0x11036 -+ -+#define HD64461_GRDOR 0x11040 -+#define HD64461_GRSCR 0x11042 -+#define HD64461_GRCFGR 0x11044 -+#define HD64461_GRCFGR_ACCSTATUS 0x10 -+#define HD64461_GRCFGR_ACCRESET 0x08 -+#define HD64461_GRCFGR_ACCSTART_BITBLT 0x06 -+#define HD64461_GRCFGR_ACCSTART_LINE 0x04 -+#define HD64461_GRCFGR_COLORDEPTH16 0x01 -+ -+#define HD64461_LNSARH 0x11046 -+#define HD64461_LNSARL 0x11048 -+#define HD64461_LNAXLR 0x1104a -+#define HD64461_LNDGR 0x1104c -+#define HD64461_LNAXR 0x1104e -+#define HD64461_LNERTR 0x11050 -+#define HD64461_LNMDR 0x11052 -+#define HD64461_BBTSSARH 0x11054 -+#define HD64461_BBTSSARL 0x11056 -+#define HD64461_BBTDSARH 0x11058 -+#define HD64461_BBTDSARL 0x1105a -+#define HD64461_BBTDWR 0x1105c -+#define HD64461_BBTDHR 0x1105e -+#define HD64461_BBTPARH 0x11060 -+#define HD64461_BBTPARL 0x11062 -+#define HD64461_BBTMARH 0x11064 -+#define HD64461_BBTMARL 0x11066 -+#define HD64461_BBTROPR 0x11068 -+#define HD64461_BBTMDR 0x1106a -+ -+/* PC Card Controller Registers */ -+#define HD64461_PCC0ISR 0x12000 /* socket 0 interface status */ -+#define HD64461_PCC0GCR 0x12002 /* socket 0 general control */ -+#define HD64461_PCC0CSCR 0x12004 /* socket 0 card status change */ -+#define HD64461_PCC0CSCIER 0x12006 /* socket 0 card status change interrupt enable */ -+#define HD64461_PCC0SCR 0x12008 /* socket 0 software control */ -+#define HD64461_PCC1ISR 0x12010 /* socket 1 interface status */ -+#define HD64461_PCC1GCR 0x12012 /* socket 1 general control */ -+#define HD64461_PCC1CSCR 0x12014 /* socket 1 card status change */ -+#define HD64461_PCC1CSCIER 0x12016 /* socket 1 card status change interrupt enable */ -+#define HD64461_PCC1SCR 0x12018 /* socket 1 software control */ -+ -+/* PCC Interface Status Register */ -+#define HD64461_PCCISR_READY 0x80 /* card ready */ -+#define HD64461_PCCISR_MWP 0x40 /* card write-protected */ -+#define HD64461_PCCISR_VS2 0x20 /* voltage select pin 2 */ -+#define HD64461_PCCISR_VS1 0x10 /* voltage select pin 1 */ -+#define HD64461_PCCISR_CD2 0x08 /* card detect 2 */ -+#define HD64461_PCCISR_CD1 0x04 /* card detect 1 */ -+#define HD64461_PCCISR_BVD2 0x02 /* battery 1 */ -+#define HD64461_PCCISR_BVD1 0x01 /* battery 1 */ -+ -+#define HD64461_PCCISR_PCD_MASK 0x0c /* card detect */ -+#define HD64461_PCCISR_BVD_MASK 0x03 /* battery voltage */ -+#define HD64461_PCCISR_BVD_BATGOOD 0x03 /* battery good */ -+#define HD64461_PCCISR_BVD_BATWARN 0x01 /* battery low warning */ -+#define HD64461_PCCISR_BVD_BATDEAD1 0x02 /* battery dead */ -+#define HD64461_PCCISR_BVD_BATDEAD2 0x00 /* battery dead */ -+ -+/* PCC General Control Register */ -+#define HD64461_PCCGCR_DRVE 0x80 /* output drive */ -+#define HD64461_PCCGCR_PCCR 0x40 /* PC card reset */ -+#define HD64461_PCCGCR_PCCT 0x20 /* PC card type, 1=IO&mem, 0=mem */ -+#define HD64461_PCCGCR_VCC0 0x10 /* voltage control pin VCC0SEL0 */ -+#define HD64461_PCCGCR_PMMOD 0x08 /* memory mode */ -+#define HD64461_PCCGCR_PA25 0x04 /* pin A25 */ -+#define HD64461_PCCGCR_PA24 0x02 /* pin A24 */ -+#define HD64461_PCCGCR_REG 0x01 /* pin PCC0REG# */ -+ -+/* PCC Card Status Change Register */ -+#define HD64461_PCCCSCR_SCDI 0x80 /* sw card detect intr */ -+#define HD64461_PCCCSCR_SRV1 0x40 /* reserved */ -+#define HD64461_PCCCSCR_IREQ 0x20 /* IREQ intr req */ -+#define HD64461_PCCCSCR_SC 0x10 /* STSCHG (status change) pin */ -+#define HD64461_PCCCSCR_CDC 0x08 /* CD (card detect) change */ -+#define HD64461_PCCCSCR_RC 0x04 /* READY change */ -+#define HD64461_PCCCSCR_BW 0x02 /* battery warning change */ -+#define HD64461_PCCCSCR_BD 0x01 /* battery dead change */ -+ -+/* PCC Card Status Change Interrupt Enable Register */ -+#define HD64461_PCCCSCIER_CRE 0x80 /* change reset enable */ -+#define HD64461_PCCCSCIER_IREQE_MASK 0x60 /* IREQ enable */ -+#define HD64461_PCCCSCIER_IREQE_DISABLED 0x00 /* IREQ disabled */ -+#define HD64461_PCCCSCIER_IREQE_LEVEL 0x20 /* IREQ level-triggered */ -+#define HD64461_PCCCSCIER_IREQE_FALLING 0x40 /* IREQ falling-edge-trig */ -+#define HD64461_PCCCSCIER_IREQE_RISING 0x60 /* IREQ rising-edge-trig */ -+ -+#define HD64461_PCCCSCIER_SCE 0x10 /* status change enable */ -+#define HD64461_PCCCSCIER_CDE 0x08 /* card detect change enable */ -+#define HD64461_PCCCSCIER_RE 0x04 /* ready change enable */ -+#define HD64461_PCCCSCIER_BWE 0x02 /* battery warn change enable */ -+#define HD64461_PCCCSCIER_BDE 0x01 /* battery dead change enable*/ -+ -+/* PCC Software Control Register */ -+#define HD64461_PCCSCR_VCC1 0x02 /* voltage control pin 1 */ -+#define HD64461_PCCSCR_SWP 0x01 /* write protect */ -+ -+#define HD64461_P0OCR 0x1202a -+#define HD64461_P1OCR 0x1202c -+#define HD64461_PGCR 0x1202e -+ -+#define HD64461_GPACR 0x14000 -+#define HD64461_GPBCR 0x14002 -+#define HD64461_GPCCR 0x14004 -+#define HD64461_GPDCR 0x14006 -+#define HD64461_GPADR 0x14010 -+#define HD64461_GPBDR 0x14012 -+#define HD64461_GPCDR 0x14014 -+#define HD64461_GPDDR 0x14016 -+#define HD64461_GPAICR 0x14020 -+#define HD64461_GPBICR 0x14022 -+#define HD64461_GPCICR 0x14024 -+#define HD64461_GPDICR 0x14026 -+#define HD64461_GPAISR 0x14040 -+#define HD64461_GPBISR 0x14042 -+#define HD64461_GPCISR 0x14044 -+#define HD64461_GPDISR 0x14046 -+ -+#define HD64461_NIRR 0x15000 -+#define HD64461_NIMR 0x15002 -+ -+#define HD64461_IRQBASE OFFCHIP_IRQ_BASE -+#define HD64461_IRQ_NUM 16 -+ -+#define HD64461_IRQ_UART (HD64461_IRQBASE+5) -+#define HD64461_IRQ_IRDA (HD64461_IRQBASE+6) -+#define HD64461_IRQ_TMU1 (HD64461_IRQBASE+9) -+#define HD64461_IRQ_TMU0 (HD64461_IRQBASE+10) -+#define HD64461_IRQ_GPIO (HD64461_IRQBASE+11) -+#define HD64461_IRQ_AFE (HD64461_IRQBASE+12) -+#define HD64461_IRQ_PCC1 (HD64461_IRQBASE+13) -+#define HD64461_IRQ_PCC0 (HD64461_IRQBASE+14) -+ -+#define __IO_PREFIX hd64461 -+#include <asm/io_generic.h> -+ -+/* arch/sh/cchips/hd6446x/hd64461/setup.c */ -+int hd64461_irq_demux(int irq); -+void hd64461_register_irq_demux(int irq, -+ int (*demux) (int irq, void *dev), void *dev); -+void hd64461_unregister_irq_demux(int irq); -+ -+#endif -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hd64465/CVS/Entries linux-2.6.17/include/asm-sh/hd64465/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/hd64465/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hd64465/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,4 @@ -+/gpio.h/1.3/Sun May 4 19:30:14 2003// -+/hd64465.h/1.3/Sun May 4 19:30:15 2003// -+/io.h/1.4/Sun Aug 3 03:05:11 2003// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hd64465/CVS/Repository linux-2.6.17/include/asm-sh/hd64465/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/hd64465/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hd64465/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/hd64465 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hd64465/CVS/Root linux-2.6.17/include/asm-sh/hd64465/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/hd64465/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hd64465/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hp6xx/CVS/Entries linux-2.6.17/include/asm-sh/hp6xx/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/hp6xx/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hp6xx/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,4 @@ -+/hp6xx.h/1.3/Sun Jan 29 17:46:24 2006/-ko/ -+/ide.h/1.2/Sat Jun 5 17:17:34 2004/-ko/ -+/io.h/1.3/Wed Jan 4 14:53:17 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hp6xx/CVS/Repository linux-2.6.17/include/asm-sh/hp6xx/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/hp6xx/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hp6xx/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/hp6xx -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hp6xx/CVS/Root linux-2.6.17/include/asm-sh/hp6xx/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/hp6xx/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hp6xx/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hp6xx/hp6xx.h linux-2.6.17/include/asm-sh/hp6xx/hp6xx.h ---- linux-2.6.17-vanilla/include/asm-sh/hp6xx/hp6xx.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hp6xx/hp6xx.h 2006-07-12 16:54:26.000000000 +0000 -@@ -2,16 +2,33 @@ - #define __ASM_SH_HP6XX_H - - /* -- * Copyright (C) 2003 Andriy Skulysh -+ * Copyright (C) 2003, 2004, 2005 Andriy Skulysh -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * - */ - --#define HP680_TS_IRQ IRQ3_IRQ -+#define HP680_BTN_IRQ IRQ0_IRQ -+#define HP680_TS_IRQ IRQ3_IRQ -+#define HP680_HD64461_IRQ IRQ4_IRQ - - #define DAC_LCD_BRIGHTNESS 0 - #define DAC_SPEAKER_VOLUME 1 - -+#define PGDR_OPENED 0x01 -+#define PGDR_MAIN_BATTERY_OUT 0x04 -+#define PGDR_PLAY_BUTTON 0x08 -+#define PGDR_REWIND_BUTTON 0x10 -+#define PGDR_RECORD_BUTTON 0x20 -+ - #define PHDR_TS_PEN_DOWN 0x08 - -+#define PJDR_LED_BLINK 0x02 -+ -+#define PKDR_LED_GREEN 0x10 -+ - #define SCPDR_TS_SCAN_ENABLE 0x20 - #define SCPDR_TS_SCAN_Y 0x02 - #define SCPDR_TS_SCAN_X 0x01 -@@ -21,11 +38,43 @@ - - #define ADC_CHANNEL_TS_Y 1 - #define ADC_CHANNEL_TS_X 2 -+#define ADC_CHANNEL_BATTERY 3 -+#define ADC_CHANNEL_BACKUP 4 -+#define ADC_CHANNEL_CHARGE 5 - - #define HD64461_GPADR_SPEAKER 0x01 - #define HD64461_GPADR_PCMCIA0 (0x02|0x08) -+ - #define HD64461_GPBDR_LCDOFF 0x01 -+#define HD64461_GPBDR_LCD_CONTRAST_MASK 0x78 - #define HD64461_GPBDR_LED_RED 0x80 - -+#include <asm/hd64461.h> -+#include <asm/io.h> -+ -+#define PJDR 0xa4000130 -+#define PKDR 0xa4000132 -+ -+static inline void hp6xx_led_red(int on) -+{ -+ u16 v16; -+ v16 = ctrl_inw(CONFIG_HD64461_IOBASE + HD64461_GPBDR - 0x10000); -+ if (on) -+ ctrl_outw(v16 & (~HD64461_GPBDR_LED_RED), CONFIG_HD64461_IOBASE + HD64461_GPBDR - 0x10000); -+ else -+ ctrl_outw(v16 | HD64461_GPBDR_LED_RED, CONFIG_HD64461_IOBASE + HD64461_GPBDR - 0x10000); -+} -+ -+static inline void hp6xx_led_green(int on) -+{ -+ u8 v8; -+ -+ v8 = ctrl_inb(PKDR); -+ if (on) -+ ctrl_outb(v8 & (~PKDR_LED_GREEN), PKDR); -+ else -+ ctrl_outb(v8 | PKDR_LED_GREEN, PKDR); -+} -+ - - #endif /* __ASM_SH_HP6XX_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hp6xx/io.h linux-2.6.17/include/asm-sh/hp6xx/io.h ---- linux-2.6.17-vanilla/include/asm-sh/hp6xx/io.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hp6xx/io.h 2006-07-12 16:54:26.000000000 +0000 -@@ -4,7 +4,7 @@ - /* - * Nothing special here.. just use the generic cchip io routines. - */ --#include <asm/hd64461/io.h> -+#include <asm/hd64461.h> - - #endif /* __ASM_SH_HP6XX_IO_H */ - -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hs7751rvoip/CVS/Entries linux-2.6.17/include/asm-sh/hs7751rvoip/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/hs7751rvoip/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hs7751rvoip/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,3 @@ -+/hs7751rvoip.h/1.4/Wed Jan 18 05:43:01 2006/-ko/ -+/ide.h/1.1/Wed Apr 21 00:09:19 2004/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hs7751rvoip/CVS/Repository linux-2.6.17/include/asm-sh/hs7751rvoip/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/hs7751rvoip/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hs7751rvoip/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/hs7751rvoip -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hs7751rvoip/CVS/Root linux-2.6.17/include/asm-sh/hs7751rvoip/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/hs7751rvoip/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hs7751rvoip/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/hs7751rvoip/hs7751rvoip.h linux-2.6.17/include/asm-sh/hs7751rvoip/hs7751rvoip.h ---- linux-2.6.17-vanilla/include/asm-sh/hs7751rvoip/hs7751rvoip.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/hs7751rvoip/hs7751rvoip.h 2006-07-12 16:54:26.000000000 +0000 -@@ -19,8 +19,6 @@ - #define PA_OUTPORTR 0xa400000e /* Output Port Reguster */ - #define PA_VERREG 0xa4000014 /* FPGA Version Register */ - --#define PA_AREA5_IO 0xb4000000 /* Area 5 IO Memory */ --#define PA_AREA6_IO 0xb8000000 /* Area 6 IO Memory */ - #define PA_IDE_OFFSET 0x1f0 /* CF IDE Offset */ - - #define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */ -@@ -44,4 +42,13 @@ - #define IRQ_RINGING 4 /* Ringing IRQ */ - #define IRQ_CODEC 5 /* CODEC IRQ */ - -+#define __IO_PREFIX hs7751rvoip -+#include <asm/io_generic.h> -+ -+/* arch/sh/boards/renesas/hs7751rvoip/irq.c */ -+void init_hs7751rvoip_IRQ(void); -+ -+/* arch/sh/boards/renesas/hs7751rvoip/io.c */ -+void *hs7751rvoip_ioremap(unsigned long, unsigned long); -+ - #endif /* __ASM_SH_RENESAS_HS7751RVOIP */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/io.h linux-2.6.17/include/asm-sh/io.h ---- linux-2.6.17-vanilla/include/asm-sh/io.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/io.h 2006-07-12 16:54:25.000000000 +0000 -@@ -210,6 +210,11 @@ - *(volatile unsigned long*)addr = b; - } - -+static inline void ctrl_delay(void) -+{ -+ ctrl_inw(P2SEG); -+} -+ - #define IO_SPACE_LIMIT 0xffffffff - - /* -diff -ruN linux-2.6.17-vanilla/include/asm-sh/irq-sh73180.h linux-2.6.17/include/asm-sh/irq-sh73180.h ---- linux-2.6.17-vanilla/include/asm-sh/irq-sh73180.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/irq-sh73180.h 2006-07-12 16:54:25.000000000 +0000 -@@ -12,14 +12,14 @@ - #undef INTC_IPRC - #undef INTC_IPRD - --#undef DMTE0_IRQ --#undef DMTE1_IRQ --#undef DMTE2_IRQ --#undef DMTE3_IRQ --#undef DMTE4_IRQ --#undef DMTE5_IRQ --#undef DMTE6_IRQ --#undef DMTE7_IRQ -+#undef DMTE0_IRQ -+#undef DMTE1_IRQ -+#undef DMTE2_IRQ -+#undef DMTE3_IRQ -+#undef DMTE4_IRQ -+#undef DMTE5_IRQ -+#undef DMTE6_IRQ -+#undef DMTE7_IRQ - #undef DMAE_IRQ - #undef DMA_IPR_ADDR - #undef DMA_IPR_POS -@@ -180,7 +180,7 @@ - #define FLSTE_IRQ 92 - #define FLTEND_IRQ 93 - #define FLTRQ0_IRQ 94 --#define FLTRQ1_IRQ 95 -+#define FLTRQ1_IRQ 95 - #define FLCTL_IPR_ADDR INTC_IPRH - #define FLCTL_IPR_POS 1 - #define FLCTL_PRIORITY 3 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/irq-sh7780.h linux-2.6.17/include/asm-sh/irq-sh7780.h ---- linux-2.6.17-vanilla/include/asm-sh/irq-sh7780.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/irq-sh7780.h 2006-07-12 16:54:25.000000000 +0000 -@@ -145,11 +145,6 @@ - #define TMU_CH5_IPR_POS 1 - #define TMU_CH5_PRIORITY 2 - --#define RTC_IRQ 22 --#define RTC_IPR_ADDR INTC_INT2PRI1 --#define RTC_IPR_POS 0 --#define RTC_PRIORITY TIMER_PRIORITY -- - /* SCIF0 */ - #define SCIF0_ERI_IRQ 40 - #define SCIF0_RXI_IRQ 41 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/irq.h linux-2.6.17/include/asm-sh/irq.h ---- linux-2.6.17-vanilla/include/asm-sh/irq.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/irq.h 2006-07-12 16:54:25.000000000 +0000 -@@ -336,6 +336,11 @@ - extern unsigned short *irq_mask_register; - - /* -+ * PINT IRQs -+ */ -+void init_IRQ_pint(void); -+ -+/* - * Function for "on chip support modules". - */ - extern void make_ipr_irq(unsigned int irq, unsigned int addr, -@@ -578,7 +583,7 @@ - #define NR_INTC2_IRQS 64 - #elif defined(CONFIG_CPU_SUBTYPE_SH7780) - #define INTC2_BASE 0xffd40000 --#define INTC2_FIRST_IRQ 22 -+#define INTC2_FIRST_IRQ 21 - #define INTC2_INTMSK_OFFSET (0x38) - #define INTC2_INTMSKCLR_OFFSET (0x3c) - #define NR_INTC2_IRQS 60 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/kexec.h linux-2.6.17/include/asm-sh/kexec.h ---- linux-2.6.17-vanilla/include/asm-sh/kexec.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/kexec.h 2006-07-12 16:54:25.000000000 +0000 -@@ -23,6 +23,8 @@ - /* The native architecture */ - #define KEXEC_ARCH KEXEC_ARCH_SH - -+#define MAX_NOTE_BYTES 1024 -+ - #ifndef __ASSEMBLY__ - - extern void machine_shutdown(void); -diff -ruN linux-2.6.17-vanilla/include/asm-sh/kgdb.h linux-2.6.17/include/asm-sh/kgdb.h ---- linux-2.6.17-vanilla/include/asm-sh/kgdb.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/kgdb.h 2006-07-12 16:54:25.000000000 +0000 -@@ -128,4 +128,19 @@ - #define KGDB_ASSERT(condition, message) - #endif - -+/* Taken from sh-stub.c of GDB 4.18 */ -+static const char hexchars[] = "0123456789abcdef"; -+ -+/* Get high hex bits */ -+static inline char highhex(const int x) -+{ -+ return hexchars[(x >> 4) & 0xf]; -+} -+ -+/* Get low hex bits */ -+static inline char lowhex(const int x) -+{ -+ return hexchars[x & 0xf]; -+} -+ - #endif -diff -ruN linux-2.6.17-vanilla/include/asm-sh/landisk/CVS/Entries linux-2.6.17/include/asm-sh/landisk/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/landisk/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/landisk/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,4 @@ -+/gio.h/1.1/Thu Sep 29 07:23:18 2005/-ko/ -+/ide.h/1.1/Thu Sep 29 07:23:18 2005/-ko/ -+/iodata_landisk.h/1.3/Wed Jan 18 05:43:01 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/landisk/CVS/Repository linux-2.6.17/include/asm-sh/landisk/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/landisk/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/landisk/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/landisk -diff -ruN linux-2.6.17-vanilla/include/asm-sh/landisk/CVS/Root linux-2.6.17/include/asm-sh/landisk/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/landisk/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/landisk/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/landisk/gio.h linux-2.6.17/include/asm-sh/landisk/gio.h ---- linux-2.6.17-vanilla/include/asm-sh/landisk/gio.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/landisk/gio.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,45 @@ -+#ifndef __ASM_SH_LANDISK_GIO_H -+#define __ASM_SH_LANDISK_GIO_H -+ -+#include <linux/ioctl.h> -+ -+/* version */ -+#define VERSION_STR "1.00" -+ -+/* Driver name */ -+#define GIO_DRIVER_NAME "/dev/giodrv" -+ -+/* Use 'k' as magic number */ -+#define GIODRV_IOC_MAGIC 'k' -+ -+#define GIODRV_IOCRESET _IO(GIODRV_IOC_MAGIC, 0) -+/* -+ * S means "Set" through a ptr, -+ * T means "Tell" directly -+ * G means "Get" (to a pointed var) -+ * Q means "Query", response is on the return value -+ * X means "eXchange": G and S atomically -+ * H means "sHift": T and Q atomically -+ */ -+#define GIODRV_IOCSGIODATA1 _IOW(GIODRV_IOC_MAGIC, 1, unsigned char *) -+#define GIODRV_IOCGGIODATA1 _IOR(GIODRV_IOC_MAGIC, 2, unsigned char *) -+#define GIODRV_IOCSGIODATA2 _IOW(GIODRV_IOC_MAGIC, 3, unsigned short *) -+#define GIODRV_IOCGGIODATA2 _IOR(GIODRV_IOC_MAGIC, 4, unsigned short *) -+#define GIODRV_IOCSGIODATA4 _IOW(GIODRV_IOC_MAGIC, 5, unsigned long *) -+#define GIODRV_IOCGGIODATA4 _IOR(GIODRV_IOC_MAGIC, 6, unsigned long *) -+#define GIODRV_IOCSGIOSETADDR _IOW(GIODRV_IOC_MAGIC, 7, unsigned long *) -+#define GIODRV_IOCHARDRESET _IO(GIODRV_IOC_MAGIC, 8) /* debugging tool */ -+ -+#define GIODRV_IOCSGIO_LED _IOW(GIODRV_IOC_MAGIC, 9, unsigned long *) -+#define GIODRV_IOCGGIO_LED _IOR(GIODRV_IOC_MAGIC, 10, unsigned long *) -+#define GIODRV_IOCSGIO_BUZZER _IOW(GIODRV_IOC_MAGIC, 11, unsigned long *) -+#define GIODRV_IOCGGIO_LANDISK _IOR(GIODRV_IOC_MAGIC, 14, unsigned long *) -+#define GIODRV_IOCGGIO_BTN _IOR(GIODRV_IOC_MAGIC, 22, unsigned long *) -+#define GIODRV_IOCSGIO_BTNPID _IOW(GIODRV_IOC_MAGIC, 23, unsigned long *) -+#define GIODRV_IOCGGIO_BTNPID _IOR(GIODRV_IOC_MAGIC, 24, unsigned long *) -+ -+#define GIODRV_IOC_MAXNR 8 -+#define GIO_READ 0x00000000 -+#define GIO_WRITE 0x00000001 -+ -+#endif /* __ASM_SH_LANDISK_GIO_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/landisk/ide.h linux-2.6.17/include/asm-sh/landisk/ide.h ---- linux-2.6.17-vanilla/include/asm-sh/landisk/ide.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/landisk/ide.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,14 @@ -+/* -+ * modifed by kogiidena -+ * 2005.03.03 -+ */ -+ -+#ifndef __ASM_SH_LANDISK_IDE_H -+#define __ASM_SH_LANDISK_IDE_H -+ -+/* Nothing to see here.. */ -+#include <asm/landisk/iodata_landisk.h> -+#define IRQ_CFCARD IRQ_FATA /* CF Card IRQ */ -+#define IRQ_PCMCIA IRQ_ATA /* PCMCIA IRQ */ -+ -+#endif /* __ASM_SH_LANDISK_IDE_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/landisk/iodata_landisk.h linux-2.6.17/include/asm-sh/landisk/iodata_landisk.h ---- linux-2.6.17-vanilla/include/asm-sh/landisk/iodata_landisk.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/landisk/iodata_landisk.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,79 @@ -+#ifndef __ASM_SH_IODATA_LANDISK_H -+#define __ASM_SH_IODATA_LANDISK_H -+ -+/* -+ * linux/include/asm-sh/landisk/iodata_landisk.h -+ * -+ * Copyright (C) 2000 Atom Create Engineering Co., Ltd. -+ * -+ * IO-DATA LANDISK support -+ */ -+ -+/* Box specific addresses. */ -+ -+#define PA_USB 0xa4000000 /* USB Controller M66590 */ -+ -+#define PA_ATARST 0xb0000000 /* ATA/FATA Access Control Register */ -+#define PA_LED 0xb0000001 /* LED Control Register */ -+#define PA_STATUS 0xb0000002 /* Switch Status Register */ -+#define PA_SHUTDOWN 0xb0000003 /* Shutdown Control Register */ -+#define PA_PCIPME 0xb0000004 /* PCI PME Status Register */ -+#define PA_IMASK 0xb0000005 /* Interrupt Mask Register */ -+/* 2003.10.31 I-O DATA NSD NWG add. for shutdown port clear */ -+#define PA_PWRINT_CLR 0xb0000006 /* Shutdown Interrupt clear Register */ -+ -+#define PA_LCD_CLRDSP 0x00 /* LCD Clear Display Offset */ -+#define PA_LCD_RTNHOME 0x00 /* LCD Return Home Offset */ -+#define PA_LCD_ENTMODE 0x00 /* LCD Entry Mode Offset */ -+#define PA_LCD_DSPCTL 0x00 /* LCD Display ON/OFF Control Offset */ -+#define PA_LCD_FUNC 0x00 /* LCD Function Set Offset */ -+#define PA_LCD_CGRAM 0x00 /* LCD Set CGRAM Address Offset */ -+#define PA_LCD_DDRAM 0x00 /* LCD Set DDRAM Address Offset */ -+#define PA_LCD_RDFLAG 0x01 /* LCD Read Busy Flag Offset */ -+#define PA_LCD_WTDATA 0x02 /* LCD Write Datat to RAM Offset */ -+#define PA_LCD_RDDATA 0x03 /* LCD Read Data from RAM Offset */ -+#define PA_PIDE_OFFSET 0x40 /* CF IDE Offset */ -+#define PA_SIDE_OFFSET 0x40 /* HDD IDE Offset */ -+ -+#define IRQ_PCIINTA 5 /* PCI INTA IRQ */ -+#define IRQ_PCIINTB 6 /* PCI INTB IRQ */ -+#define IRQ_PCIINDC 7 /* PCI INTC IRQ */ -+#define IRQ_PCIINTD 8 /* PCI INTD IRQ */ -+#define IRQ_ATA 9 /* ATA IRQ */ -+#define IRQ_FATA 10 /* FATA IRQ */ -+#define IRQ_POWER 11 /* Power Switch IRQ */ -+#define IRQ_BUTTON 12 /* USL-5P Button IRQ */ -+#define IRQ_FAULT 13 /* USL-5P Fault IRQ */ -+ -+#define SHUTDOWN_BTN_MAJOR 99 /* Shutdown button device major no. */ -+ -+#define SHUTDOWN_LOOP_CNT 5 /* Shutdown button Detection loop */ -+#define SHUTDOWN_DELAY 200 /* Shutdown button delay value(ms) */ -+ -+ -+/* added by kogiidena */ -+/* -+ * landisk_ledparam -+ * -+ * led ------10 -6543210 -6543210 -6543210 -+ * |000000..|0.......|0.......|U.......| -+ * | HARD |fastblik| blink | on | -+ * -+ * led0: power U:update flag -+ * led1: error -+ * led2: usb1 -+ * led3: usb2 -+ * led4: usb3 -+ * led5: usb4 -+ * led6: usb5 -+ * -+ */ -+extern int landisk_ledparam; /* from setup.c */ -+extern int landisk_buzzerparam; /* from setup.c */ -+extern int landisk_arch; /* from setup.c */ -+ -+#define __IO_PREFIX landisk -+#include <asm/io_generic.h> -+ -+#endif /* __ASM_SH_IODATA_LANDISK_H */ -+ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/mc146818rtc.h linux-2.6.17/include/asm-sh/mc146818rtc.h ---- linux-2.6.17-vanilla/include/asm-sh/mc146818rtc.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/mc146818rtc.h 2006-07-12 16:54:25.000000000 +0000 -@@ -24,7 +24,7 @@ - #define CMOS_WRITE(val,addr) __CMOS_WRITE(val,addr,b) - - #elif defined(CONFIG_SH_SECUREEDGE5410) --#include <asm/snapgear/io.h> -+#include <asm/snapgear.h> - - #define RTC_PORT(n) SECUREEDGE_IOPORT_ADDR - #define CMOS_READ(addr) secureedge5410_cmos_read(addr) -diff -ruN linux-2.6.17-vanilla/include/asm-sh/mmu.h linux-2.6.17/include/asm-sh/mmu.h ---- linux-2.6.17-vanilla/include/asm-sh/mmu.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/mmu.h 2006-07-12 16:54:25.000000000 +0000 -@@ -25,5 +25,60 @@ - typedef unsigned long mm_context_t; - - #endif /* CONFIG_MMU */ --#endif /* __MMH_H */ -+ -+/* -+ * Privileged Space Mapping Buffer (PMB) definitions -+ */ -+#define PMB_PASCR 0xff000070 -+#define PMB_IRMCR 0xff000078 -+ -+#define PMB_ADDR 0xf6100000 -+#define PMB_DATA 0xf7100000 -+#define PMB_ENTRY_MAX 16 -+#define PMB_E_MASK 0x0000000f -+#define PMB_E_SHIFT 8 -+ -+#define PMB_SZ_16M 0x00000000 -+#define PMB_SZ_64M 0x00000010 -+#define PMB_SZ_128M 0x00000080 -+#define PMB_SZ_512M 0x00000090 -+#define PMB_SZ_MASK PMB_SZ_512M -+#define PMB_C 0x00000008 -+#define PMB_WT 0x00000001 -+#define PMB_UB 0x00000200 -+#define PMB_V 0x00000100 -+ -+#define PMB_NO_ENTRY (-1) -+ -+struct pmb_entry; -+ -+struct pmb_entry { -+ unsigned long vpn; -+ unsigned long ppn; -+ unsigned long flags; -+ -+ /* -+ * 0 .. NR_PMB_ENTRIES for specific entry selection, or -+ * PMB_NO_ENTRY to search for a free one -+ */ -+ int entry; -+ -+ struct pmb_entry *next; -+ /* Adjacent entry link for contiguous multi-entry mappings */ -+ struct pmb_entry *link; -+}; -+ -+/* arch/sh/mm/pmb.c */ -+int __set_pmb_entry(unsigned long vpn, unsigned long ppn, -+ unsigned long flags, int *entry); -+int set_pmb_entry(struct pmb_entry *pmbe); -+void clear_pmb_entry(struct pmb_entry *pmbe); -+struct pmb_entry *pmb_alloc(unsigned long vpn, unsigned long ppn, -+ unsigned long flags); -+void pmb_free(struct pmb_entry *pmbe); -+long pmb_remap(unsigned long virt, unsigned long phys, -+ unsigned long size, unsigned long flags); -+void pmb_unmap(unsigned long addr); -+ -+#endif /* __MMU_H */ - -diff -ruN linux-2.6.17-vanilla/include/asm-sh/mmu_context.h linux-2.6.17/include/asm-sh/mmu_context.h ---- linux-2.6.17-vanilla/include/asm-sh/mmu_context.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/mmu_context.h 2006-07-12 16:54:25.000000000 +0000 -@@ -174,9 +174,7 @@ - { - /* Enable MMU */ - ctrl_outl(MMU_CONTROL_INIT, MMUCR); -- -- /* The manual suggests doing some nops after turning on the MMU */ -- __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop\n\t"); -+ ctrl_barrier(); - - if (mmu_context_cache == NO_CONTEXT) - mmu_context_cache = MMU_CONTEXT_FIRST_VERSION; -@@ -191,7 +189,8 @@ - cr = ctrl_inl(MMUCR); - cr &= ~MMU_CONTROL_INIT; - ctrl_outl(cr, MMUCR); -- __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop\n\t"); -+ -+ ctrl_barrier(); - } - #else - /* -diff -ruN linux-2.6.17-vanilla/include/asm-sh/mpc1211/CVS/Entries linux-2.6.17/include/asm-sh/mpc1211/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/mpc1211/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/mpc1211/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,8 @@ -+/dma.h/1.1/Fri May 16 17:19:08 2003/-ko/ -+/io.h/1.3/Mon Aug 4 01:51:58 2003/-ko/ -+/keyboard.h/1.2/Wed Mar 2 13:03:01 2005/-ko/ -+/m1543c.h/1.1/Fri May 16 17:19:08 2003/-ko/ -+/mc146818rtc.h/1.1/Fri May 16 17:19:08 2003/-ko/ -+/mpc1211.h/1.1/Fri May 16 17:19:08 2003/-ko/ -+/pci.h/1.1/Fri May 16 17:19:08 2003/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/mpc1211/CVS/Repository linux-2.6.17/include/asm-sh/mpc1211/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/mpc1211/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/mpc1211/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/mpc1211 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/mpc1211/CVS/Root linux-2.6.17/include/asm-sh/mpc1211/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/mpc1211/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/mpc1211/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/namei.h linux-2.6.17/include/asm-sh/namei.h ---- linux-2.6.17-vanilla/include/asm-sh/namei.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/namei.h 2006-07-12 16:54:25.000000000 +0000 -@@ -1,4 +1,4 @@ --/* $Id: namei.h,v 1.3 2000/07/04 06:24:49 gniibe Exp $ -+/* $Id: namei.h,v 1.2 2000/04/14 19:14:01 mjd Exp $ - * linux/include/asm-sh/namei.h - * - * Included from linux/fs/namei.c -diff -ruN linux-2.6.17-vanilla/include/asm-sh/overdrive/CVS/Entries linux-2.6.17/include/asm-sh/overdrive/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/overdrive/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/overdrive/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,5 @@ -+/fpga.h/1.2/Fri Nov 1 17:19:31 2002// -+/gt64111.h/1.2/Fri Nov 1 17:19:31 2002// -+/io.h/1.3/Tue Jul 29 14:27:12 2003// -+/overdrive.h/1.2/Fri Nov 1 17:19:31 2002// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/overdrive/CVS/Repository linux-2.6.17/include/asm-sh/overdrive/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/overdrive/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/overdrive/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/overdrive -diff -ruN linux-2.6.17-vanilla/include/asm-sh/overdrive/CVS/Root linux-2.6.17/include/asm-sh/overdrive/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/overdrive/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/overdrive/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/page.h linux-2.6.17/include/asm-sh/page.h ---- linux-2.6.17-vanilla/include/asm-sh/page.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/page.h 2006-07-12 16:54:25.000000000 +0000 -@@ -31,7 +31,6 @@ - #define HPAGE_SIZE (1UL << HPAGE_SHIFT) - #define HPAGE_MASK (~(HPAGE_SIZE-1)) - #define HUGETLB_PAGE_ORDER (HPAGE_SHIFT-PAGE_SHIFT) --#define ARCH_HAS_SETCLEAR_HUGE_PTE - #endif - - #ifdef __KERNEL__ -@@ -43,38 +42,30 @@ - extern void clear_page_slow(void *to); - extern void copy_page_slow(void *to, void *from); - --#if defined(CONFIG_SH7705_CACHE_32KB) && defined(CONFIG_MMU) -+#if defined(CONFIG_MMU) && (defined(CONFIG_CPU_SH4) || \ -+ defined(CONFIG_SH7705_CACHE_32KB)) - struct page; - extern void clear_user_page(void *to, unsigned long address, struct page *pg); - extern void copy_user_page(void *to, void *from, unsigned long address, struct page *pg); - extern void __clear_user_page(void *to, void *orig_to); - extern void __copy_user_page(void *to, void *from, void *orig_to); --#elif defined(CONFIG_CPU_SH2) || defined(CONFIG_CPU_SH3) || !defined(CONFIG_MMU) -+#elif defined(CONFIG_CPU_SH3) || !defined(CONFIG_MMU) - #define clear_user_page(page, vaddr, pg) clear_page(page) - #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) --#elif defined(CONFIG_CPU_SH4) --struct page; --extern void clear_user_page(void *to, unsigned long address, struct page *pg); --extern void copy_user_page(void *to, void *from, unsigned long address, struct page *pg); --extern void __clear_user_page(void *to, void *orig_to); --extern void __copy_user_page(void *to, void *from, void *orig_to); - #endif - - /* - * These are used to make use of C type-checking.. - */ - typedef struct { unsigned long pte; } pte_t; --typedef struct { unsigned long pmd; } pmd_t; - typedef struct { unsigned long pgd; } pgd_t; - typedef struct { unsigned long pgprot; } pgprot_t; - - #define pte_val(x) ((x).pte) --#define pmd_val(x) ((x).pmd) - #define pgd_val(x) ((x).pgd) - #define pgprot_val(x) ((x).pgprot) - - #define __pte(x) ((pte_t) { (x) } ) --#define __pmd(x) ((pmd_t) { (x) } ) - #define __pgd(x) ((pgd_t) { (x) } ) - #define __pgprot(x) ((pgprot_t) { (x) } ) - -@@ -105,7 +96,7 @@ - - /* PFN start number, because of __MEMORY_START */ - #define PFN_START (__MEMORY_START >> PAGE_SHIFT) --#define ARCH_PFN_OFFSET (FPN_START) -+#define ARCH_PFN_OFFSET (PFN_START) - #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) - #define pfn_valid(pfn) (((pfn) - PFN_START) < max_mapnr) - #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) -diff -ruN linux-2.6.17-vanilla/include/asm-sh/pci.h linux-2.6.17/include/asm-sh/pci.h ---- linux-2.6.17-vanilla/include/asm-sh/pci.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/pci.h 2006-07-12 16:54:25.000000000 +0000 -@@ -32,6 +32,34 @@ - #define PCIBIOS_MIN_IO board_pci_channels->io_resource->start - #define PCIBIOS_MIN_MEM board_pci_channels->mem_resource->start - -+/* -+ * I/O routine helpers -+ */ -+#ifdef CONFIG_CPU_SUBTYPE_SH7780 -+#define PCI_IO_AREA 0xFE400000 -+#define PCI_IO_SIZE 0x00400000 -+#else -+#define PCI_IO_AREA 0xFE240000 -+#define PCI_IO_SIZE 0X00040000 -+#endif -+ -+#define PCI_MEM_SIZE 0x01000000 -+ -+#define SH4_PCIIOBR_MASK 0xFFFC0000 -+#define pci_ioaddr(addr) (PCI_IO_AREA + (addr & ~SH4_PCIIOBR_MASK)) -+ -+#if defined(CONFIG_PCI) -+#define is_pci_ioaddr(port) \ -+ (((port) >= PCIBIOS_MIN_IO) && \ -+ ((port) < (PCIBIOS_MIN_IO + PCI_IO_SIZE))) -+#define is_pci_memaddr(port) \ -+ (((port) >= PCIBIOS_MIN_MEM) && \ -+ ((port) < (PCIBIOS_MIN_MEM + PCI_MEM_SIZE))) -+#else -+#define is_pci_ioaddr(port) (0) -+#define is_pci_memaddr(port) (0) -+#endif -+ - struct pci_dev; - - extern void pcibios_set_master(struct pci_dev *dev); -@@ -87,15 +115,6 @@ - */ - #define pci_dac_dma_supported(pci_dev, mask) (0) - --/* These macros should be used after a pci_map_sg call has been done -- * to get bus addresses of each of the SG entries and their lengths. -- * You should only work with the number of sg entries pci_map_sg -- * returns, or alternatively stop on the first sg_dma_len(sg) which -- * is 0. -- */ --#define sg_dma_address(sg) (virt_to_bus((sg)->dma_address)) --#define sg_dma_len(sg) ((sg)->length) -- - #ifdef CONFIG_PCI - static inline void pci_dma_burst_advice(struct pci_dev *pdev, - enum pci_dma_burst_strategy *strat, -@@ -107,11 +126,12 @@ - #endif - - /* Board-specific fixup routines. */ --extern void pcibios_fixup(void); --extern void pcibios_fixup_irqs(void); -+void pcibios_fixup(void); -+int pcibios_init_platform(void); -+int pcibios_map_platform_irq(struct pci_dev *dev, u8 slot, u8 pin); - - #ifdef CONFIG_PCI_AUTO --extern int pciauto_assign_resources(int busno, struct pci_channel *hose); -+int pciauto_assign_resources(int busno, struct pci_channel *hose); - #endif - - static inline void pcibios_add_platform_entries(struct pci_dev *dev) -diff -ruN linux-2.6.17-vanilla/include/asm-sh/pgalloc.h linux-2.6.17/include/asm-sh/pgalloc.h ---- linux-2.6.17-vanilla/include/asm-sh/pgalloc.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/pgalloc.h 2006-07-12 16:54:25.000000000 +0000 -@@ -1,15 +1,6 @@ - #ifndef __ASM_SH_PGALLOC_H - #define __ASM_SH_PGALLOC_H - --#include <linux/threads.h> --#include <linux/slab.h> --#include <linux/mm.h> -- --#define pgd_quicklist ((unsigned long *)0) --#define pmd_quicklist ((unsigned long *)0) --#define pte_quicklist ((unsigned long *)0) --#define pgtable_cache_size 0L -- - #define pmd_populate_kernel(mm, pmd, pte) \ - set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte))) - -@@ -24,38 +15,24 @@ - */ - static inline pgd_t *pgd_alloc(struct mm_struct *mm) - { -- unsigned int pgd_size = (USER_PTRS_PER_PGD * sizeof(pgd_t)); -- pgd_t *pgd = (pgd_t *)kmalloc(pgd_size, GFP_KERNEL); -- -- if (pgd) -- memset(pgd, 0, pgd_size); -- -- return pgd; -+ return (pgd_t *)__get_free_page(GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO); - } - - static inline void pgd_free(pgd_t *pgd) - { -- kfree(pgd); -+ free_page((unsigned long)pgd); - } - - static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, - unsigned long address) - { -- pte_t *pte; -- -- pte = (pte_t *) __get_free_page(GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO); -- -- return pte; -+ return (pte_t *)__get_free_page(GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO); - } - - static inline struct page *pte_alloc_one(struct mm_struct *mm, - unsigned long address) - { -- struct page *pte; -- -- pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0); -- -- return pte; -+ return alloc_page(GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO); - } - - static inline void pte_free_kernel(pte_t *pte) -@@ -75,14 +52,8 @@ - * inside the pgd, so has no extra memory associated with it. - */ - --#define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *)2); }) - #define pmd_free(x) do { } while (0) - #define __pmd_free_tlb(tlb,x) do { } while (0) --#define pgd_populate(mm, pmd, pte) BUG() - #define check_pgt_cache() do { } while (0) - --#ifdef CONFIG_CPU_SH4 --#define PG_mapped PG_arch_1 --#endif -- - #endif /* __ASM_SH_PGALLOC_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/pgtable.h linux-2.6.17/include/asm-sh/pgtable.h ---- linux-2.6.17-vanilla/include/asm-sh/pgtable.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/pgtable.h 2006-07-12 16:54:25.000000000 +0000 -@@ -1,43 +1,43 @@ --#ifndef __ASM_SH_PGTABLE_H --#define __ASM_SH_PGTABLE_H -- --#include <asm-generic/4level-fixup.h> -- - /* -+ * This file contains the functions and defines necessary to modify and -+ * use the SuperH page table tree. -+ * - * Copyright (C) 1999 Niibe Yutaka -- * Copyright (C) 2002, 2003, 2004 Paul Mundt -+ * Copyright (C) 2002 - 2005 Paul Mundt -+ * -+ * This file is subject to the terms and conditions of the GNU General -+ * Public License. See the file "COPYING" in the main directory of this -+ * archive for more details. - */ -+#ifndef __ASM_SH_PGTABLE_H -+#define __ASM_SH_PGTABLE_H - - #include <linux/config.h> --#include <asm/pgtable-2level.h> -+#include <asm-generic/pgtable-nopmd.h> -+#include <asm/page.h> -+ -+#define PTRS_PER_PGD 1024 - --/* -- * This file contains the functions and defines necessary to modify and use -- * the SuperH page table tree. -- */ - #ifndef __ASSEMBLY__ --#include <asm/processor.h> - #include <asm/addrspace.h> - #include <asm/fixmap.h> --#include <linux/threads.h> - - extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; - extern void paging_init(void); - - /* -- * Basically we have the same two-level (which is the logical three level -- * Linux page table layout folded) page tables as the i386. -- */ -- --/* - * ZERO_PAGE is a global shared page that is always zero: used - * for zero-mapped memory areas etc.. - */ --extern unsigned long empty_zero_page[1024]; -+extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; - #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) - - #endif /* !__ASSEMBLY__ */ - -+/* traditional two-level paging structure */ -+#define PGDIR_SHIFT 22 -+#define PTRS_PER_PMD 1 -+#define PTRS_PER_PTE 1024 - #define PMD_SIZE (1UL << PMD_SHIFT) - #define PMD_MASK (~(PMD_SIZE-1)) - #define PGDIR_SIZE (1UL << PGDIR_SHIFT) -@@ -48,7 +48,6 @@ - - #define PTE_PHYS_MASK 0x1ffff000 - --#ifndef __ASSEMBLY__ - /* - * First 1MB map is used by fixed purpose. - * Currently only 4-enty (16kB) is used (see arch/sh/mm/cache.c) -@@ -56,20 +55,41 @@ - #define VMALLOC_START (P3SEG+0x00100000) - #define VMALLOC_END (FIXADDR_START-2*PAGE_SIZE) - --#define _PAGE_WT 0x001 /* WT-bit on SH-4, 0 on SH-3 */ --#define _PAGE_HW_SHARED 0x002 /* SH-bit : page is shared among processes */ --#define _PAGE_DIRTY 0x004 /* D-bit : page changed */ --#define _PAGE_CACHABLE 0x008 /* C-bit : cachable */ --#define _PAGE_SZ0 0x010 /* SZ0-bit : Size of page */ --#define _PAGE_RW 0x020 /* PR0-bit : write access allowed */ --#define _PAGE_USER 0x040 /* PR1-bit : user space access allowed */ --#define _PAGE_SZ1 0x080 /* SZ1-bit : Size of page (on SH-4) */ --#define _PAGE_PRESENT 0x100 /* V-bit : page is valid */ --#define _PAGE_PROTNONE 0x200 /* software: if not present */ --#define _PAGE_ACCESSED 0x400 /* software: page referenced */ --#define _PAGE_U0_SHARED 0x800 /* software: page is shared in user space */ -- --#define _PAGE_FILE _PAGE_WT /* software: pagecache or swap? */ -+/* -+ * Linux PTEL encoding. -+ * -+ * Hardware and software bit definitions for the PTEL value: -+ * -+ * - Bits 0 and 7 are reserved on SH-3 (_PAGE_WT and _PAGE_SZ1 on SH-4). -+ * -+ * - Bit 1 is the SH-bit, but is unused on SH-3 due to an MMU bug (the -+ * hardware PTEL value can't have the SH-bit set when MMUCR.IX is set, -+ * which is the default in cpu-sh3/mmu_context.h:MMU_CONTROL_INIT). -+ * -+ * In order to keep this relatively clean, do not use these for defining -+ * SH-3 specific flags until all of the other unused bits have been -+ * exhausted. -+ * -+ * - Bit 9 is reserved by everyone and used by _PAGE_PROTNONE. -+ * -+ * - Bits 10 and 11 are low bits of the PPN that are reserved on >= 4K pages. -+ * Bit 10 is used for _PAGE_ACCESSED, bit 11 remains unused. -+ * -+ * - Bits 31, 30, and 29 remain unused by everyone and can be used for future -+ * software flags, although care must be taken to update _PAGE_CLEAR_FLAGS. -+ */ -+#define _PAGE_WT 0x001 /* WT-bit on SH-4, 0 on SH-3 */ -+#define _PAGE_HW_SHARED 0x002 /* SH-bit : shared among processes */ -+#define _PAGE_DIRTY 0x004 /* D-bit : page changed */ -+#define _PAGE_CACHABLE 0x008 /* C-bit : cachable */ -+#define _PAGE_SZ0 0x010 /* SZ0-bit : Size of page */ -+#define _PAGE_RW 0x020 /* PR0-bit : write access allowed */ -+#define _PAGE_USER 0x040 /* PR1-bit : user space access allowed */ -+#define _PAGE_SZ1 0x080 /* SZ1-bit : Size of page (on SH-4) */ -+#define _PAGE_PRESENT 0x100 /* V-bit : page is valid */ -+#define _PAGE_PROTNONE 0x200 /* software: if not present */ -+#define _PAGE_ACCESSED 0x400 /* software: page referenced */ -+#define _PAGE_FILE _PAGE_WT /* software: pagecache or swap? */ - - /* software: moves to PTEA.TC (Timing Control) */ - #define _PAGE_PCC_AREA5 0x00000000 /* use BSC registers for area5 */ -@@ -84,23 +104,17 @@ - #define _PAGE_PCC_ATR8 0x60000000 /* Attribute Memory space, 8 bit bus */ - #define _PAGE_PCC_ATR16 0x60000001 /* Attribute Memory space, 6 bit bus */ - -- --/* Mask which drop software flags -- * We also drop WT bit since it is used for _PAGE_FILE -- * bit in this implementation. -- */ --#define _PAGE_CLEAR_FLAGS (_PAGE_WT | _PAGE_PROTNONE | _PAGE_ACCESSED | _PAGE_U0_SHARED) -- --#if defined(CONFIG_CPU_SH3) --/* -- * MMU on SH-3 has bug on SH-bit: We can't use it if MMUCR.IX=1. -- * Work around: Just drop SH-bit. -- */ --#define _PAGE_FLAGS_HARDWARE_MASK (0x1fffffff & ~(_PAGE_CLEAR_FLAGS | _PAGE_HW_SHARED)) -+/* Mask which drops unused bits from the PTEL value */ -+#ifdef CONFIG_CPU_SH3 -+#define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED| \ -+ _PAGE_FILE | _PAGE_SZ1 | \ -+ _PAGE_HW_SHARED) - #else --#define _PAGE_FLAGS_HARDWARE_MASK (0x1fffffff & ~(_PAGE_CLEAR_FLAGS)) -+#define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED | _PAGE_FILE) - #endif - -+#define _PAGE_FLAGS_HARDWARE_MASK (0x1fffffff & ~(_PAGE_CLEAR_FLAGS)) -+ - /* Hardware flags: SZ0=1 (4k-byte) */ - #define _PAGE_FLAGS_HARD _PAGE_SZ0 - -@@ -110,15 +124,15 @@ - #define _PAGE_SZHUGE (_PAGE_SZ0 | _PAGE_SZ1) - #endif - --#define _PAGE_SHARED _PAGE_U0_SHARED -- - #define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY) - #define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY) --#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_CACHABLE | _PAGE_DIRTY | _PAGE_SHARED) -+#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_CACHABLE | _PAGE_DIRTY) -+ -+#ifndef __ASSEMBLY__ - - #ifdef CONFIG_MMU - #define PAGE_NONE __pgprot(_PAGE_PROTNONE | _PAGE_CACHABLE |_PAGE_ACCESSED | _PAGE_FLAGS_HARD) --#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_CACHABLE |_PAGE_ACCESSED | _PAGE_SHARED | _PAGE_FLAGS_HARD) -+#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_CACHABLE |_PAGE_ACCESSED | _PAGE_FLAGS_HARD) - #define PAGE_COPY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_CACHABLE | _PAGE_ACCESSED | _PAGE_FLAGS_HARD) - #define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_CACHABLE | _PAGE_ACCESSED | _PAGE_FLAGS_HARD) - #define PAGE_KERNEL __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_CACHABLE | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_HW_SHARED | _PAGE_FLAGS_HARD) -@@ -138,12 +152,13 @@ - #define PAGE_KERNEL_PCC __pgprot(0) - #endif - -+#endif /* __ASSEMBLY__ */ -+ - /* - * As i386 and MIPS, SuperH can't do page protection for execute, and - * considers that the same as a read. Also, write permissions imply -- * read permissions. This is the closest we can get.. -+ * read permissions. This is the closest we can get.. - */ -- - #define __P000 PAGE_NONE - #define __P001 PAGE_READONLY - #define __P010 PAGE_COPY -@@ -162,6 +177,26 @@ - #define __S110 PAGE_SHARED - #define __S111 PAGE_SHARED - -+#ifndef __ASSEMBLY__ -+ -+/* -+ * Certain architectures need to do special things when PTEs -+ * within a page table are directly modified. Thus, the following -+ * hook is made available. -+ */ -+#define set_pte(pteptr, pteval) (*(pteptr) = pteval) -+#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) -+ -+/* -+ * (pmds are folded into pgds so this doesn't get actually called, -+ * but the define is needed for a generic inline function.) -+ */ -+#define set_pmd(pmdptr, pmdval) (*(pmdptr) = pmdval) -+ -+#define pte_pfn(x) ((unsigned long)(((x).pte >> PAGE_SHIFT))) -+#define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) -+#define pfn_pmd(pfn, prot) __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) -+ - #define pte_none(x) (!pte_val(x)) - #define pte_present(x) (pte_val(x) & (_PAGE_PRESENT | _PAGE_PROTNONE)) - #define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0) -@@ -172,7 +207,7 @@ - #define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE) - - #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) --#define pte_page(x) phys_to_page(pte_val(x)&PTE_PHYS_MASK) -+#define pte_page(x) phys_to_page(pte_val(x)&PTE_PHYS_MASK) - - /* - * The following only work if pte_present() is true. -@@ -249,6 +284,11 @@ - #define pte_unmap(pte) do { } while (0) - #define pte_unmap_nested(pte) do { } while (0) - -+#define pte_ERROR(e) \ -+ printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e)) -+#define pgd_ERROR(e) \ -+ printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e)) -+ - struct vm_area_struct; - extern void update_mmu_cache(struct vm_area_struct * vma, - unsigned long address, pte_t pte); -@@ -273,8 +313,6 @@ - - typedef pte_t *pte_addr_t; - --#endif /* !__ASSEMBLY__ */ -- - #define kern_addr_valid(addr) (1) - - #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ -@@ -302,5 +340,7 @@ - - #include <asm-generic/pgtable.h> - -+#endif /* !__ASSEMBLY__ */ -+ - #endif /* __ASM_SH_PAGE_H */ - -diff -ruN linux-2.6.17-vanilla/include/asm-sh/pm.h linux-2.6.17/include/asm-sh/pm.h ---- linux-2.6.17-vanilla/include/asm-sh/pm.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/pm.h 2006-07-12 16:54:25.000000000 +0000 -@@ -0,0 +1,17 @@ -+/* -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * -+ * Copyright 2006 (c) Andriy Skulysh <askulysh@gmail.com> -+ * -+ */ -+#ifndef __ASM_SH_PM_H -+#define __ASM_SH_PM_H -+ -+extern u8 wakeup_start; -+extern u8 wakeup_end; -+ -+void pm_enter(void); -+ -+#endif -diff -ruN linux-2.6.17-vanilla/include/asm-sh/processor.h linux-2.6.17/include/asm-sh/processor.h ---- linux-2.6.17-vanilla/include/asm-sh/processor.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/processor.h 2006-07-12 16:54:26.000000000 +0000 -@@ -148,6 +148,10 @@ - union sh_fpu_union fpu; - }; - -+typedef struct { -+ unsigned long seg; -+} mm_segment_t; -+ - /* Count of active tasks with UBC settings */ - extern int ubc_usercnt; - -@@ -265,5 +269,18 @@ - #define cpu_sleep() __asm__ __volatile__ ("sleep" : : : "memory") - #define cpu_relax() do { } while (0) - -+#if defined(CONFIG_CPU_SH2A) || defined(CONFIG_CPU_SH3) || \ -+ defined(CONFIG_CPU_SH4) -+#define PREFETCH_STRIDE L1_CACHE_BYTES -+#define ARCH_HAS_PREFETCH -+#define ARCH_HAS_PREFETCHW -+static inline void prefetch(void *x) -+{ -+ __asm__ __volatile__ ("pref @%0\n\t" : : "r" (x) : "memory"); -+} -+ -+#define prefetchw(x) prefetch(x) -+#endif -+ - #endif /* __KERNEL__ */ - #endif /* __ASM_SH_PROCESSOR_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/r7780rp/CVS/Entries linux-2.6.17/include/asm-sh/r7780rp/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/r7780rp/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/r7780rp/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,3 @@ -+/ide.h/1.1/Sat Jan 7 19:55:57 2006/-ko/ -+/r7780rp.h/1.3/Thu Jul 6 12:38:31 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/r7780rp/CVS/Repository linux-2.6.17/include/asm-sh/r7780rp/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/r7780rp/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/r7780rp/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/r7780rp -diff -ruN linux-2.6.17-vanilla/include/asm-sh/r7780rp/CVS/Root linux-2.6.17/include/asm-sh/r7780rp/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/r7780rp/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/r7780rp/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/r7780rp/ide.h linux-2.6.17/include/asm-sh/r7780rp/ide.h ---- linux-2.6.17-vanilla/include/asm-sh/r7780rp/ide.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/r7780rp/ide.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,8 @@ -+#ifndef __ASM_SH_R7780RP_IDE_H -+#define __ASM_SH_R7780RP_IDE_H -+ -+/* Nothing to see here.. */ -+#include <asm/mach/r7780rp.h> -+ -+#endif /* __ASM_SH_R7780RP_IDE_H */ -+ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/r7780rp/r7780rp.h linux-2.6.17/include/asm-sh/r7780rp/r7780rp.h ---- linux-2.6.17-vanilla/include/asm-sh/r7780rp/r7780rp.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/r7780rp/r7780rp.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,177 @@ -+#ifndef __ASM_SH_RENESAS_R7780RP_H -+#define __ASM_SH_RENESAS_R7780RP_H -+ -+/* -+ * linux/include/asm-sh/r7780rp.h -+ * -+ * Copyright (C) 2000 Atom Create Engineering Co., Ltd. -+ * -+ * Renesas Solutions Highlander R7780RP support -+ */ -+ -+/* Box specific addresses. */ -+#if defined(CONFIG_SH_R7780MP) -+#define PA_BCR 0xa4000000 /* FPGA */ -+#define PA_IRLMSK (PA_BCR+0x0000) /* Interrupt Mask control */ -+#define PA_IRLMON (PA_BCR+0x0002) /* Interrupt Status control */ -+#define PA_IRLPRI1 (PA_BCR+0x0004) /* Interrupt Priorty 1 */ -+#define PA_IRLPRI2 (PA_BCR+0x0006) /* Interrupt Priorty 2 */ -+#define PA_IRLPRI3 (PA_BCR+0x0008) /* Interrupt Priorty 3 */ -+#define PA_IRLPRI4 (PA_BCR+0x000a) /* Interrupt Priorty 4 */ -+#define PA_RSTCTL (PA_BCR+0x000c) /* Reset Control */ -+#define PA_PCIBD (PA_BCR+0x000e) /* PCI Board detect control */ -+#define PA_PCICD (PA_BCR+0x0010) /* PCI Conector detect control */ -+#define PA_EXTGIO (PA_BCR+0x0016) /* Extension GPIO Control */ -+#define PA_IVDRMON (PA_BCR+0x0018) /* iVDR Moniter control */ -+#define PA_IVDRCTL (PA_BCR+0x001a) /* iVDR control */ -+#define PA_OBLED (PA_BCR+0x001c) /* On Board LED control */ -+#define PA_OBSW (PA_BCR+0x001e) /* On Board Switch control */ -+#define PA_AUDIOSEL (PA_BCR+0x0020) /* Sound Interface Select control */ -+#define PA_EXTPLR (PA_BCR+0x001e) /* Extention Pin Polarity control */ -+#define PA_TPCTL (PA_BCR+0x0100) /* Touch Panel Access control */ -+#define PA_TPDCKCTL (PA_BCR+0x0102) /* Touch Panel Access data control */ -+#define PA_TPCTLCLR (PA_BCR+0x0104) /* Touch Panel Access control */ -+#define PA_TPXPOS (PA_BCR+0x0106) /* Touch Panel X position control */ -+#define PA_TPYPOS (PA_BCR+0x0108) /* Touch Panel Y position control */ -+#define PA_DBSW (PA_BCR+0x0200) /* Debug Board Switch control */ -+#define PA_CFCTL (PA_BCR+0x0300) /* CF Timing control */ -+#define PA_CFPOW (PA_BCR+0x0302) /* CF Power control */ -+#define PA_CFCDINTCLR (PA_BCR+0x0304) /* CF Insert Interrupt clear */ -+#define PA_SCSMR0 (PA_BCR+0x0400) /* SCIF0 Serial mode control */ -+#define PA_SCBRR0 (PA_BCR+0x0404) /* SCIF0 Bit rate control */ -+#define PA_SCSCR0 (PA_BCR+0x0408) /* SCIF0 Serial control */ -+#define PA_SCFTDR0 (PA_BCR+0x040c) /* SCIF0 Send FIFO control */ -+#define PA_SCFSR0 (PA_BCR+0x0410) /* SCIF0 Serial status control */ -+#define PA_SCFRDR0 (PA_BCR+0x0414) /* SCIF0 Receive FIFO control */ -+#define PA_SCFCR0 (PA_BCR+0x0418) /* SCIF0 FIFO control */ -+#define PA_SCTFDR0 (PA_BCR+0x041c) /* SCIF0 Send FIFO data control */ -+#define PA_SCRFDR0 (PA_BCR+0x0420) /* SCIF0 Receive FIFO data control */ -+#define PA_SCSPTR0 (PA_BCR+0x0424) /* SCIF0 Serial Port control */ -+#define PA_SCLSR0 (PA_BCR+0x0428) /* SCIF0 Line Status control */ -+#define PA_SCRER0 (PA_BCR+0x042c) /* SCIF0 Serial Error control */ -+#define PA_SCSMR1 (PA_BCR+0x0500) /* SCIF1 Serial mode control */ -+#define PA_SCBRR1 (PA_BCR+0x0504) /* SCIF1 Bit rate control */ -+#define PA_SCSCR1 (PA_BCR+0x0508) /* SCIF1 Serial control */ -+#define PA_SCFTDR1 (PA_BCR+0x050c) /* SCIF1 Send FIFO control */ -+#define PA_SCFSR1 (PA_BCR+0x0510) /* SCIF1 Serial status control */ -+#define PA_SCFRDR1 (PA_BCR+0x0514) /* SCIF1 Receive FIFO control */ -+#define PA_SCFCR1 (PA_BCR+0x0518) /* SCIF1 FIFO control */ -+#define PA_SCTFDR1 (PA_BCR+0x051c) /* SCIF1 Send FIFO data control */ -+#define PA_SCRFDR1 (PA_BCR+0x0520) /* SCIF1 Receive FIFO data control */ -+#define PA_SCSPTR1 (PA_BCR+0x0524) /* SCIF1 Serial Port control */ -+#define PA_SCLSR1 (PA_BCR+0x0528) /* SCIF1 Line Status control */ -+#define PA_SCRER1 (PA_BCR+0x052c) /* SCIF1 Serial Error control */ -+#define PA_ICCR (PA_BCR+0x0600) /* Serial control */ -+#define PA_SAR (PA_BCR+0x0602) /* Serial Slave control */ -+#define PA_MDR (PA_BCR+0x0604) /* Serial Mode control */ -+#define PA_ADR1 (PA_BCR+0x0606) /* Serial Address1 control */ -+#define PA_DAR1 (PA_BCR+0x0646) /* Serial Data1 control */ -+#define PA_VERREG (PA_BCR+0x0700) /* FPGA Version Register */ -+#define PA_POFF (PA_BCR+0x0800) /* System Power Off control */ -+#define PA_PMR (PA_BCR+0x0900) /* */ -+ -+#define PA_AX88796L 0xa4100400 /* AX88796L Area */ -+#define PA_SC1602BSLB 0xa6000000 /* SC1602BSLB Area */ -+#define PA_AREA5_IO 0xb4000000 /* Area 5 IO Memory */ -+#define PA_AREA6_IO 0xb8000000 /* Area 6 IO Memory */ -+#define PA_IDE_OFFSET 0x1f0 /* CF IDE Offset */ -+#define AX88796L_IO_BASE 0x1000 /* AX88796L IO Base Address */ -+ -+#define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */ -+ -+#define IRQ_PCISLOT1 65 /* PCI Slot #1 IRQ */ -+#define IRQ_PCISLOT2 66 /* PCI Slot #2 IRQ */ -+#define IRQ_PCISLOT3 67 /* PCI Slot #3 IRQ */ -+#define IRQ_PCISLOT4 68 /* PCI Slot #4 IRQ */ -+#define IRQ_CFCARD 1 /* CF Card IRQ */ -+// #define IRQ_CFINST 0 /* CF Card Insert IRQ */ -+#define IRQ_TP 2 /* Touch Panel IRQ */ -+#define IRQ_SCI1 3 /* SCI1 IRQ */ -+#define IRQ_SCI0 4 /* SCI0 IRQ */ -+#define IRQ_2SERIAL 5 /* Serial IRQ */ -+#define IRQ_RTC 6 /* RTC A / B IRQ */ -+#define IRQ_EXTENTION6 7 /* EXT6n IRQ */ -+#define IRQ_EXTENTION5 8 /* EXT5n IRQ */ -+#define IRQ_EXTENTION4 9 /* EXT4n IRQ */ -+#define IRQ_EXTENTION2 10 /* EXT2n IRQ */ -+#define IRQ_EXTENTION1 11 /* EXT1n IRQ */ -+#define IRQ_ONETH 13 /* On board Ethernet IRQ */ -+#define IRQ_PSW 14 /* Push Switch IRQ */ -+ -+#else /* R7780RP */ -+ -+#define PA_BCR 0xa5000000 /* FPGA */ -+#define PA_IRLMSK (PA_BCR+0x0000) /* Interrupt Mask control */ -+#define PA_IRLMON (PA_BCR+0x0002) /* Interrupt Status control */ -+#define PA_SDPOW (PA_BCR+0x0004) /* SD Power control */ -+#define PA_RSTCTL (PA_BCR+0x0006) /* Device Reset control */ -+#define PA_PCIBD (PA_BCR+0x0008) /* PCI Board detect control */ -+#define PA_PCICD (PA_BCR+0x000a) /* PCI Conector detect control */ -+#define PA_ZIGIO1 (PA_BCR+0x000c) /* Zigbee IO control 1 */ -+#define PA_ZIGIO2 (PA_BCR+0x000e) /* Zigbee IO control 2 */ -+#define PA_ZIGIO3 (PA_BCR+0x0010) /* Zigbee IO control 3 */ -+#define PA_ZIGIO4 (PA_BCR+0x0012) /* Zigbee IO control 4 */ -+#define PA_IVDRMON (PA_BCR+0x0014) /* iVDR Moniter control */ -+#define PA_IVDRCTL (PA_BCR+0x0016) /* iVDR control */ -+#define PA_OBLED (PA_BCR+0x0018) /* On Board LED control */ -+#define PA_OBSW (PA_BCR+0x001a) /* On Board Switch control */ -+#define PA_AUDIOSEL (PA_BCR+0x001c) /* Sound Interface Select control */ -+#define PA_EXTPLR (PA_BCR+0x001e) /* Extention Pin Polarity control */ -+#define PA_TPCTL (PA_BCR+0x0100) /* Touch Panel Access control */ -+#define PA_TPDCKCTL (PA_BCR+0x0102) /* Touch Panel Access data control */ -+#define PA_TPCTLCLR (PA_BCR+0x0104) /* Touch Panel Access control */ -+#define PA_TPXPOS (PA_BCR+0x0106) /* Touch Panel X position control */ -+#define PA_TPYPOS (PA_BCR+0x0108) /* Touch Panel Y position control */ -+#define PA_DBDET (PA_BCR+0x0200) /* Debug Board detect control */ -+#define PA_DBDISPCTL (PA_BCR+0x0202) /* Debug Board Dot timing control */ -+#define PA_DBSW (PA_BCR+0x0204) /* Debug Board Switch control */ -+#define PA_CFCTL (PA_BCR+0x0300) /* CF Timing control */ -+#define PA_CFPOW (PA_BCR+0x0302) /* CF Power control */ -+#define PA_CFCDINTCLR (PA_BCR+0x0304) /* CF Insert Interrupt clear */ -+#define PA_SCSMR (PA_BCR+0x0400) /* SCIF Serial mode control */ -+#define PA_SCBRR (PA_BCR+0x0402) /* SCIF Bit rate control */ -+#define PA_SCSCR (PA_BCR+0x0404) /* SCIF Serial control */ -+#define PA_SCFDTR (PA_BCR+0x0406) /* SCIF Send FIFO control */ -+#define PA_SCFSR (PA_BCR+0x0408) /* SCIF Serial status control */ -+#define PA_SCFRDR (PA_BCR+0x040a) /* SCIF Receive FIFO control */ -+#define PA_SCFCR (PA_BCR+0x040c) /* SCIF FIFO control */ -+#define PA_SCFDR (PA_BCR+0x040e) /* SCIF FIFO data control */ -+#define PA_SCLSR (PA_BCR+0x0412) /* SCIF Line Status control */ -+#define PA_ICCR (PA_BCR+0x0500) /* Serial control */ -+#define PA_SAR (PA_BCR+0x0502) /* Serial Slave control */ -+#define PA_MDR (PA_BCR+0x0504) /* Serial Mode control */ -+#define PA_ADR1 (PA_BCR+0x0506) /* Serial Address1 control */ -+#define PA_DAR1 (PA_BCR+0x0546) /* Serial Data1 control */ -+#define PA_VERREG (PA_BCR+0x0600) /* FPGA Version Register */ -+ -+#define PA_AX88796L 0xa5800400 /* AX88796L Area */ -+#define PA_SC1602BSLB 0xa6000000 /* SC1602BSLB Area */ -+#define PA_AREA5_IO 0xb4000000 /* Area 5 IO Memory */ -+#define PA_AREA6_IO 0xb8000000 /* Area 6 IO Memory */ -+#define PA_IDE_OFFSET 0x1f0 /* CF IDE Offset */ -+#define AX88796L_IO_BASE 0x1000 /* AX88796L IO Base Address */ -+ -+#define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */ -+ -+#define IRQ_PCISLOT1 0 /* PCI Slot #1 IRQ */ -+#define IRQ_PCISLOT2 1 /* PCI Slot #2 IRQ */ -+#define IRQ_PCISLOT3 2 /* PCI Slot #3 IRQ */ -+#define IRQ_PCISLOT4 3 /* PCI Slot #4 IRQ */ -+#define IRQ_CFCARD 4 /* CF Card IRQ */ -+#define IRQ_CFINST 5 /* CF Card Insert IRQ */ -+#define IRQ_M66596 6 /* M66596 IRQ */ -+#define IRQ_SDCARD 7 /* SD Card IRQ */ -+#define IRQ_TUCHPANEL 8 /* Touch Panel IRQ */ -+#define IRQ_SCI 9 /* SCI IRQ */ -+#define IRQ_2SERIAL 10 /* Serial IRQ */ -+#define IRQ_EXTENTION 11 /* EXTn IRQ */ -+#define IRQ_ONETH 12 /* On board Ethernet IRQ */ -+#define IRQ_PSW 13 /* Push Switch IRQ */ -+#define IRQ_ZIGBEE 14 /* Ziggbee IO IRQ */ -+ -+#endif /* CONFIG_SH_R7780MP */ -+ -+#define __IO_PREFIX r7780rp -+#include <asm/io_generic.h> -+ -+#endif /* __ASM_SH_RENESAS_R7780RP */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/rtc.h linux-2.6.17/include/asm-sh/rtc.h ---- linux-2.6.17-vanilla/include/asm-sh/rtc.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/rtc.h 2006-07-12 16:54:26.000000000 +0000 -@@ -8,8 +8,8 @@ - extern void sh_rtc_gettimeofday(struct timespec *ts); - extern int sh_rtc_settimeofday(const time_t secs); - extern void (*board_time_init)(void); --extern void (*rtc_get_time)(struct timespec *); --extern int (*rtc_set_time)(const time_t); -+extern void (*rtc_sh_get_time)(struct timespec *); -+extern int (*rtc_sh_set_time)(const time_t); - - /* RCR1 Bits */ - #define RCR1_CF 0x80 /* Carry Flag */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/rts7751r2d/CVS/Entries linux-2.6.17/include/asm-sh/rts7751r2d/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/rts7751r2d/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/rts7751r2d/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,4 @@ -+/ide.h/1.1/Wed Apr 21 00:09:19 2004/-ko/ -+/rts7751r2d.h/1.3/Wed Jan 18 05:43:02 2006/-ko/ -+/voyagergx_reg.h/1.2/Sun Aug 15 16:59:32 2004/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/rts7751r2d/CVS/Repository linux-2.6.17/include/asm-sh/rts7751r2d/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/rts7751r2d/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/rts7751r2d/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/rts7751r2d -diff -ruN linux-2.6.17-vanilla/include/asm-sh/rts7751r2d/CVS/Root linux-2.6.17/include/asm-sh/rts7751r2d/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/rts7751r2d/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/rts7751r2d/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/rts7751r2d/rts7751r2d.h linux-2.6.17/include/asm-sh/rts7751r2d/rts7751r2d.h ---- linux-2.6.17-vanilla/include/asm-sh/rts7751r2d/rts7751r2d.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/rts7751r2d/rts7751r2d.h 2006-07-12 16:54:26.000000000 +0000 -@@ -41,8 +41,6 @@ - - #define PA_AX88796L 0xaa000400 /* AX88796L Area */ - #define PA_VOYAGER 0xab000000 /* VOYAGER GX Area */ --#define PA_AREA5_IO 0xb4000000 /* Area 5 IO Memory */ --#define PA_AREA6_IO 0xb8000000 /* Area 6 IO Memory */ - #define PA_IDE_OFFSET 0x1f0 /* CF IDE Offset */ - #define AX88796L_IO_BASE 0x1000 /* AX88796L IO Base Address */ - -@@ -70,4 +68,7 @@ - #define IRQ_PCISLOT2 10 /* PCI Slot #2 IRQ */ - #define IRQ_EXTENTION 11 /* EXTn IRQ */ - -+#define __IO_PREFIX rts7751r2d -+#include <asm/io_generic.h> -+ - #endif /* __ASM_SH_RENESAS_RTS7751R2D */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/saturn/CVS/Entries linux-2.6.17/include/asm-sh/saturn/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/saturn/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/saturn/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,3 @@ -+/io.h/1.3/Tue Jul 29 14:27:12 2003/-ko/ -+/smpc.h/1.2/Sun May 4 19:30:16 2003/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/saturn/CVS/Repository linux-2.6.17/include/asm-sh/saturn/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/saturn/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/saturn/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/saturn -diff -ruN linux-2.6.17-vanilla/include/asm-sh/saturn/CVS/Root linux-2.6.17/include/asm-sh/saturn/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/saturn/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/saturn/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/scatterlist.h linux-2.6.17/include/asm-sh/scatterlist.h ---- linux-2.6.17-vanilla/include/asm-sh/scatterlist.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/scatterlist.h 2006-07-12 16:54:26.000000000 +0000 -@@ -10,4 +10,13 @@ - - #define ISA_DMA_THRESHOLD (0x1fffffff) - -+/* These macros should be used after a pci_map_sg call has been done -+ * to get bus addresses of each of the SG entries and their lengths. -+ * You should only work with the number of sg entries pci_map_sg -+ * returns, or alternatively stop on the first sg_dma_len(sg) which -+ * is 0. -+ */ -+#define sg_dma_address(sg) ((sg)->dma_address) -+#define sg_dma_len(sg) ((sg)->length) -+ - #endif /* !(__ASM_SH_SCATTERLIST_H) */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/se.h linux-2.6.17/include/asm-sh/se.h ---- linux-2.6.17-vanilla/include/asm-sh/se.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/se.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,80 @@ -+#ifndef __ASM_SH_HITACHI_SE_H -+#define __ASM_SH_HITACHI_SE_H -+ -+/* -+ * linux/include/asm-sh/hitachi_se.h -+ * -+ * Copyright (C) 2000 Kazumoto Kojima -+ * -+ * Hitachi SolutionEngine support -+ */ -+ -+/* Box specific addresses. */ -+ -+#define PA_ROM 0x00000000 /* EPROM */ -+#define PA_ROM_SIZE 0x00400000 /* EPROM size 4M byte */ -+#define PA_FROM 0x01000000 /* EPROM */ -+#define PA_FROM_SIZE 0x00400000 /* EPROM size 4M byte */ -+#define PA_EXT1 0x04000000 -+#define PA_EXT1_SIZE 0x04000000 -+#define PA_EXT2 0x08000000 -+#define PA_EXT2_SIZE 0x04000000 -+#define PA_SDRAM 0x0c000000 -+#define PA_SDRAM_SIZE 0x04000000 -+ -+#define PA_EXT4 0x12000000 -+#define PA_EXT4_SIZE 0x02000000 -+#define PA_EXT5 0x14000000 -+#define PA_EXT5_SIZE 0x04000000 -+#define PA_PCIC 0x18000000 /* MR-SHPC-01 PCMCIA */ -+ -+#define PA_83902 0xb0000000 /* DP83902A */ -+#define PA_83902_IF 0xb0040000 /* DP83902A remote io port */ -+#define PA_83902_RST 0xb0080000 /* DP83902A reset port */ -+ -+#define PA_SUPERIO 0xb0400000 /* SMC37C935A super io chip */ -+#define PA_DIPSW0 0xb0800000 /* Dip switch 5,6 */ -+#define PA_DIPSW1 0xb0800002 /* Dip switch 7,8 */ -+#define PA_LED 0xb0c00000 /* LED */ -+#if defined(CONFIG_CPU_SUBTYPE_SH7705) -+#define PA_BCR 0xb0e00000 -+#else -+#define PA_BCR 0xb1400000 /* FPGA */ -+#endif -+ -+#define PA_MRSHPC 0xb83fffe0 /* MR-SHPC-01 PCMCIA controller */ -+#define PA_MRSHPC_MW1 0xb8400000 /* MR-SHPC-01 memory window base */ -+#define PA_MRSHPC_MW2 0xb8500000 /* MR-SHPC-01 attribute window base */ -+#define PA_MRSHPC_IO 0xb8600000 /* MR-SHPC-01 I/O window base */ -+#define MRSHPC_OPTION (PA_MRSHPC + 6) -+#define MRSHPC_CSR (PA_MRSHPC + 8) -+#define MRSHPC_ISR (PA_MRSHPC + 10) -+#define MRSHPC_ICR (PA_MRSHPC + 12) -+#define MRSHPC_CPWCR (PA_MRSHPC + 14) -+#define MRSHPC_MW0CR1 (PA_MRSHPC + 16) -+#define MRSHPC_MW1CR1 (PA_MRSHPC + 18) -+#define MRSHPC_IOWCR1 (PA_MRSHPC + 20) -+#define MRSHPC_MW0CR2 (PA_MRSHPC + 22) -+#define MRSHPC_MW1CR2 (PA_MRSHPC + 24) -+#define MRSHPC_IOWCR2 (PA_MRSHPC + 26) -+#define MRSHPC_CDCR (PA_MRSHPC + 28) -+#define MRSHPC_PCIC_INFO (PA_MRSHPC + 30) -+ -+#define BCR_ILCRA (PA_BCR + 0) -+#define BCR_ILCRB (PA_BCR + 2) -+#define BCR_ILCRC (PA_BCR + 4) -+#define BCR_ILCRD (PA_BCR + 6) -+#define BCR_ILCRE (PA_BCR + 8) -+#define BCR_ILCRF (PA_BCR + 10) -+#define BCR_ILCRG (PA_BCR + 12) -+ -+#if defined(CONFIG_CPU_SUBTYPE_SH7705) -+#define IRQ_STNIC 12 -+#else -+#define IRQ_STNIC 10 -+#endif -+ -+#define __IO_PREFIX se -+#include <asm/io_generic.h> -+ -+#endif /* __ASM_SH_HITACHI_SE_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/se7300.h linux-2.6.17/include/asm-sh/se7300.h ---- linux-2.6.17-vanilla/include/asm-sh/se7300.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/se7300.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,64 @@ -+#ifndef __ASM_SH_HITACHI_SE7300_H -+#define __ASM_SH_HITACHI_SE7300_H -+ -+/* -+ * linux/include/asm-sh/se/se7300.h -+ * -+ * Copyright (C) 2003 Takashi Kusuda <kusuda-takashi@hitachi-ul.co.jp> -+ * -+ * SH-Mobile SolutionEngine 7300 support -+ */ -+ -+/* Box specific addresses. */ -+ -+/* Area 0 */ -+#define PA_ROM 0x00000000 /* EPROM */ -+#define PA_ROM_SIZE 0x00400000 /* EPROM size 4M byte(Actually 2MB) */ -+#define PA_FROM 0x00400000 /* Flash ROM */ -+#define PA_FROM_SIZE 0x00400000 /* Flash size 4M byte */ -+#define PA_SRAM 0x00800000 /* SRAM */ -+#define PA_FROM_SIZE 0x00400000 /* SRAM size 4M byte */ -+/* Area 1 */ -+#define PA_EXT1 0x04000000 -+#define PA_EXT1_SIZE 0x04000000 -+/* Area 2 */ -+#define PA_EXT2 0x08000000 -+#define PA_EXT2_SIZE 0x04000000 -+/* Area 3 */ -+#define PA_SDRAM 0x0c000000 -+#define PA_SDRAM_SIZE 0x04000000 -+/* Area 4 */ -+#define PA_PCIC 0x10000000 /* MR-SHPC-01 PCMCIA */ -+#define PA_MRSHPC 0xb03fffe0 /* MR-SHPC-01 PCMCIA controller */ -+#define PA_MRSHPC_MW1 0xb0400000 /* MR-SHPC-01 memory window base */ -+#define PA_MRSHPC_MW2 0xb0500000 /* MR-SHPC-01 attribute window base */ -+#define PA_MRSHPC_IO 0xb0600000 /* MR-SHPC-01 I/O window base */ -+#define MRSHPC_OPTION (PA_MRSHPC + 6) -+#define MRSHPC_CSR (PA_MRSHPC + 8) -+#define MRSHPC_ISR (PA_MRSHPC + 10) -+#define MRSHPC_ICR (PA_MRSHPC + 12) -+#define MRSHPC_CPWCR (PA_MRSHPC + 14) -+#define MRSHPC_MW0CR1 (PA_MRSHPC + 16) -+#define MRSHPC_MW1CR1 (PA_MRSHPC + 18) -+#define MRSHPC_IOWCR1 (PA_MRSHPC + 20) -+#define MRSHPC_MW0CR2 (PA_MRSHPC + 22) -+#define MRSHPC_MW1CR2 (PA_MRSHPC + 24) -+#define MRSHPC_IOWCR2 (PA_MRSHPC + 26) -+#define MRSHPC_CDCR (PA_MRSHPC + 28) -+#define MRSHPC_PCIC_INFO (PA_MRSHPC + 30) -+#define PA_LED 0xb0800000 /* LED */ -+#define PA_DIPSW 0xb0900000 /* Dip switch 31 */ -+#define PA_EPLD_MODESET 0xb0a00000 /* FPGA Mode set register */ -+#define PA_EPLD_ST1 0xb0a80000 /* FPGA Interrupt status register1 */ -+#define PA_EPLD_ST2 0xb0ac0000 /* FPGA Interrupt status register2 */ -+/* Area 5 */ -+#define PA_EXT5 0x14000000 -+#define PA_EXT5_SIZE 0x04000000 -+/* Area 6 */ -+#define PA_LCD1 0xb8000000 -+#define PA_LCD2 0xb8800000 -+ -+#define __IO_PREFIX sh7300se -+#include <asm/io_generic.h> -+ -+#endif /* __ASM_SH_HITACHI_SE7300_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/se73180.h linux-2.6.17/include/asm-sh/se73180.h ---- linux-2.6.17-vanilla/include/asm-sh/se73180.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/se73180.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,65 @@ -+#ifndef __ASM_SH_HITACHI_SE73180_H -+#define __ASM_SH_HITACHI_SE73180_H -+ -+/* -+ * include/asm-sh/se/se73180.h -+ * -+ * Copyright (C) 2003 Takashi Kusuda <kusuda-takashi@hitachi-ul.co.jp> -+ * -+ * SH-Mobile SolutionEngine 73180 support -+ */ -+ -+/* Box specific addresses. */ -+ -+/* Area 0 */ -+#define PA_ROM 0x00000000 /* EPROM */ -+#define PA_ROM_SIZE 0x00400000 /* EPROM size 4M byte(Actually 2MB) */ -+#define PA_FROM 0x00400000 /* Flash ROM */ -+#define PA_FROM_SIZE 0x00400000 /* Flash size 4M byte */ -+#define PA_SRAM 0x00800000 /* SRAM */ -+#define PA_FROM_SIZE 0x00400000 /* SRAM size 4M byte */ -+/* Area 1 */ -+#define PA_EXT1 0x04000000 -+#define PA_EXT1_SIZE 0x04000000 -+/* Area 2 */ -+#define PA_EXT2 0x08000000 -+#define PA_EXT2_SIZE 0x04000000 -+/* Area 3 */ -+#define PA_SDRAM 0x0c000000 -+#define PA_SDRAM_SIZE 0x04000000 -+/* Area 4 */ -+#define PA_PCIC 0x10000000 /* MR-SHPC-01 PCMCIA */ -+#define PA_MRSHPC 0xb03fffe0 /* MR-SHPC-01 PCMCIA controller */ -+#define PA_MRSHPC_MW1 0xb0400000 /* MR-SHPC-01 memory window base */ -+#define PA_MRSHPC_MW2 0xb0500000 /* MR-SHPC-01 attribute window base */ -+#define PA_MRSHPC_IO 0xb0600000 /* MR-SHPC-01 I/O window base */ -+#define MRSHPC_OPTION (PA_MRSHPC + 6) -+#define MRSHPC_CSR (PA_MRSHPC + 8) -+#define MRSHPC_ISR (PA_MRSHPC + 10) -+#define MRSHPC_ICR (PA_MRSHPC + 12) -+#define MRSHPC_CPWCR (PA_MRSHPC + 14) -+#define MRSHPC_MW0CR1 (PA_MRSHPC + 16) -+#define MRSHPC_MW1CR1 (PA_MRSHPC + 18) -+#define MRSHPC_IOWCR1 (PA_MRSHPC + 20) -+#define MRSHPC_MW0CR2 (PA_MRSHPC + 22) -+#define MRSHPC_MW1CR2 (PA_MRSHPC + 24) -+#define MRSHPC_IOWCR2 (PA_MRSHPC + 26) -+#define MRSHPC_CDCR (PA_MRSHPC + 28) -+#define MRSHPC_PCIC_INFO (PA_MRSHPC + 30) -+#define PA_LED 0xb0C00000 /* LED */ -+#define LED_SHIFT 0 -+#define PA_DIPSW 0xb0900000 /* Dip switch 31 */ -+#define PA_EPLD_MODESET 0xb0a00000 /* FPGA Mode set register */ -+#define PA_EPLD_ST1 0xb0a80000 /* FPGA Interrupt status register1 */ -+#define PA_EPLD_ST2 0xb0ac0000 /* FPGA Interrupt status register2 */ -+/* Area 5 */ -+#define PA_EXT5 0x14000000 -+#define PA_EXT5_SIZE 0x04000000 -+/* Area 6 */ -+#define PA_LCD1 0xb8000000 -+#define PA_LCD2 0xb8800000 -+ -+#define __IO_PREFIX sh73180se -+#include <asm/io_generic.h> -+ -+#endif /* __ASM_SH_HITACHI_SE73180_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/se7751.h linux-2.6.17/include/asm-sh/se7751.h ---- linux-2.6.17-vanilla/include/asm-sh/se7751.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/se7751.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,71 @@ -+#ifndef __ASM_SH_HITACHI_7751SE_H -+#define __ASM_SH_HITACHI_7751SE_H -+ -+/* -+ * linux/include/asm-sh/hitachi_7751se.h -+ * -+ * Copyright (C) 2000 Kazumoto Kojima -+ * -+ * Hitachi SolutionEngine support -+ -+ * Modified for 7751 Solution Engine by -+ * Ian da Silva and Jeremy Siegel, 2001. -+ */ -+ -+/* Box specific addresses. */ -+ -+#define PA_ROM 0x00000000 /* EPROM */ -+#define PA_ROM_SIZE 0x00400000 /* EPROM size 4M byte */ -+#define PA_FROM 0x01000000 /* EPROM */ -+#define PA_FROM_SIZE 0x00400000 /* EPROM size 4M byte */ -+#define PA_EXT1 0x04000000 -+#define PA_EXT1_SIZE 0x04000000 -+#define PA_EXT2 0x08000000 -+#define PA_EXT2_SIZE 0x04000000 -+#define PA_SDRAM 0x0c000000 -+#define PA_SDRAM_SIZE 0x04000000 -+ -+#define PA_EXT4 0x12000000 -+#define PA_EXT4_SIZE 0x02000000 -+#define PA_EXT5 0x14000000 -+#define PA_EXT5_SIZE 0x04000000 -+#define PA_PCIC 0x18000000 /* MR-SHPC-01 PCMCIA */ -+ -+#define PA_DIPSW0 0xb9000000 /* Dip switch 5,6 */ -+#define PA_DIPSW1 0xb9000002 /* Dip switch 7,8 */ -+#define PA_LED 0xba000000 /* LED */ -+#define PA_BCR 0xbb000000 /* FPGA on the MS7751SE01 */ -+ -+#define PA_MRSHPC 0xb83fffe0 /* MR-SHPC-01 PCMCIA controler */ -+#define PA_MRSHPC_MW1 0xb8400000 /* MR-SHPC-01 memory window base */ -+#define PA_MRSHPC_MW2 0xb8500000 /* MR-SHPC-01 attribute window base */ -+#define PA_MRSHPC_IO 0xb8600000 /* MR-SHPC-01 I/O window base */ -+#define MRSHPC_MODE (PA_MRSHPC + 4) -+#define MRSHPC_OPTION (PA_MRSHPC + 6) -+#define MRSHPC_CSR (PA_MRSHPC + 8) -+#define MRSHPC_ISR (PA_MRSHPC + 10) -+#define MRSHPC_ICR (PA_MRSHPC + 12) -+#define MRSHPC_CPWCR (PA_MRSHPC + 14) -+#define MRSHPC_MW0CR1 (PA_MRSHPC + 16) -+#define MRSHPC_MW1CR1 (PA_MRSHPC + 18) -+#define MRSHPC_IOWCR1 (PA_MRSHPC + 20) -+#define MRSHPC_MW0CR2 (PA_MRSHPC + 22) -+#define MRSHPC_MW1CR2 (PA_MRSHPC + 24) -+#define MRSHPC_IOWCR2 (PA_MRSHPC + 26) -+#define MRSHPC_CDCR (PA_MRSHPC + 28) -+#define MRSHPC_PCIC_INFO (PA_MRSHPC + 30) -+ -+#define BCR_ILCRA (PA_BCR + 0) -+#define BCR_ILCRB (PA_BCR + 2) -+#define BCR_ILCRC (PA_BCR + 4) -+#define BCR_ILCRD (PA_BCR + 6) -+#define BCR_ILCRE (PA_BCR + 8) -+#define BCR_ILCRF (PA_BCR + 10) -+#define BCR_ILCRG (PA_BCR + 12) -+ -+#define IRQ_79C973 13 -+ -+#define __IO_PREFIX sh7751se -+#include <asm/io_generic.h> -+ -+#endif /* __ASM_SH_HITACHI_7751SE_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/sfp-machine.h linux-2.6.17/include/asm-sh/sfp-machine.h ---- linux-2.6.17-vanilla/include/asm-sh/sfp-machine.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/sfp-machine.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,86 @@ -+/* Machine-dependent software floating-point definitions. -+ SuperH kernel version. -+ Copyright (C) 1997,1998,1999 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Richard Henderson (rth@cygnus.com), -+ Jakub Jelinek (jj@ultra.linux.cz), -+ David S. Miller (davem@redhat.com) and -+ Peter Maydell (pmaydell@chiark.greenend.org.uk). -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Library General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Library General Public License for more details. -+ -+ You should have received a copy of the GNU Library General Public -+ License along with the GNU C Library; see the file COPYING.LIB. If -+ not, write to the Free Software Foundation, Inc., -+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+#ifndef _SFP_MACHINE_H -+#define _SFP_MACHINE_H -+ -+#include <linux/config.h> -+ -+#define _FP_W_TYPE_SIZE 32 -+#define _FP_W_TYPE unsigned long -+#define _FP_WS_TYPE signed long -+#define _FP_I_TYPE long -+ -+#define _FP_MUL_MEAT_S(R,X,Y) \ -+ _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) -+#define _FP_MUL_MEAT_D(R,X,Y) \ -+ _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) -+#define _FP_MUL_MEAT_Q(R,X,Y) \ -+ _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) -+ -+#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_udiv(S,R,X,Y) -+#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) -+#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) -+ -+#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) -+#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1 -+#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1 -+#define _FP_NANSIGN_S 0 -+#define _FP_NANSIGN_D 0 -+#define _FP_NANSIGN_Q 0 -+ -+#define _FP_KEEPNANFRACP 1 -+ -+/* -+ * If one NaN is signaling and the other is not, -+ * we choose that one, otherwise we choose X. -+ */ -+#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ -+ do { \ -+ if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \ -+ && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \ -+ { \ -+ R##_s = Y##_s; \ -+ _FP_FRAC_COPY_##wc(R,Y); \ -+ } \ -+ else \ -+ { \ -+ R##_s = X##_s; \ -+ _FP_FRAC_COPY_##wc(R,X); \ -+ } \ -+ R##_c = FP_CLS_NAN; \ -+ } while (0) -+ -+//#define FP_ROUNDMODE FPSCR_RM -+#define FP_DENORM_ZERO 1/*FPSCR_DN*/ -+ -+/* Exception flags. */ -+#define FP_EX_INVALID (1<<4) -+#define FP_EX_DIVZERO (1<<3) -+#define FP_EX_OVERFLOW (1<<2) -+#define FP_EX_UNDERFLOW (1<<1) -+#define FP_EX_INEXACT (1<<0) -+ -+#endif -+ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/sh03/CVS/Entries linux-2.6.17/include/asm-sh/sh03/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/sh03/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/sh03/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,4 @@ -+/ide.h/1.1/Fri Dec 3 01:43:33 2004/-ko/ -+/io.h/1.2/Wed Jan 4 18:27:49 2006/-ko/ -+/sh03.h/1.2/Sat Aug 13 14:34:12 2005/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/sh03/CVS/Repository linux-2.6.17/include/asm-sh/sh03/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/sh03/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/sh03/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/sh03 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/sh03/CVS/Root linux-2.6.17/include/asm-sh/sh03/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/sh03/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/sh03/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/sh03/io.h linux-2.6.17/include/asm-sh/sh03/io.h ---- linux-2.6.17-vanilla/include/asm-sh/sh03/io.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/sh03/io.h 2006-07-12 16:54:26.000000000 +0000 -@@ -33,14 +33,6 @@ - #define IRL3_IPR_POS 0 - #define IRL3_PRIORITY 4 - -- --extern unsigned long sh03_isa_port2addr(unsigned long offset); -- --extern void setup_sh03(void); --extern void init_sh03_IRQ(void); --extern void heartbeat_sh03(void); -- --extern void sh03_rtc_gettimeofday(struct timeval *tv); --extern int sh03_rtc_settimeofday(const struct timeval *tv); -+void heartbeat_sh03(void); - - #endif /* _ASM_SH_IO_SH03_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/sh2000/CVS/Entries linux-2.6.17/include/asm-sh/sh2000/CVS/Entries ---- linux-2.6.17-vanilla/include/asm-sh/sh2000/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/sh2000/CVS/Entries 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,2 @@ -+/sh2000.h/1.2/Fri Nov 1 17:19:31 2002// -+D -diff -ruN linux-2.6.17-vanilla/include/asm-sh/sh2000/CVS/Repository linux-2.6.17/include/asm-sh/sh2000/CVS/Repository ---- linux-2.6.17-vanilla/include/asm-sh/sh2000/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/sh2000/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/asm-sh/sh2000 -diff -ruN linux-2.6.17-vanilla/include/asm-sh/sh2000/CVS/Root linux-2.6.17/include/asm-sh/sh2000/CVS/Root ---- linux-2.6.17-vanilla/include/asm-sh/sh2000/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/sh2000/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/asm-sh/smc37c93x.h linux-2.6.17/include/asm-sh/smc37c93x.h ---- linux-2.6.17-vanilla/include/asm-sh/smc37c93x.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/smc37c93x.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,190 @@ -+#ifndef __ASM_SH_SMC37C93X_H -+#define __ASM_SH_SMC37C93X_H -+ -+/* -+ * linux/include/asm-sh/smc37c93x.h -+ * -+ * Copyright (C) 2000 Kazumoto Kojima -+ * -+ * SMSC 37C93x Super IO Chip support -+ */ -+ -+/* Default base I/O address */ -+#define FDC_PRIMARY_BASE 0x3f0 -+#define IDE1_PRIMARY_BASE 0x1f0 -+#define IDE1_SECONDARY_BASE 0x170 -+#define PARPORT_PRIMARY_BASE 0x378 -+#define COM1_PRIMARY_BASE 0x2f8 -+#define COM2_PRIMARY_BASE 0x3f8 -+#define RTC_PRIMARY_BASE 0x070 -+#define KBC_PRIMARY_BASE 0x060 -+#define AUXIO_PRIMARY_BASE 0x000 /* XXX */ -+ -+/* Logical device number */ -+#define LDN_FDC 0 -+#define LDN_IDE1 1 -+#define LDN_IDE2 2 -+#define LDN_PARPORT 3 -+#define LDN_COM1 4 -+#define LDN_COM2 5 -+#define LDN_RTC 6 -+#define LDN_KBC 7 -+#define LDN_AUXIO 8 -+ -+/* Configuration port and key */ -+#define CONFIG_PORT 0x3f0 -+#define INDEX_PORT CONFIG_PORT -+#define DATA_PORT 0x3f1 -+#define CONFIG_ENTER 0x55 -+#define CONFIG_EXIT 0xaa -+ -+/* Configuration index */ -+#define CURRENT_LDN_INDEX 0x07 -+#define POWER_CONTROL_INDEX 0x22 -+#define ACTIVATE_INDEX 0x30 -+#define IO_BASE_HI_INDEX 0x60 -+#define IO_BASE_LO_INDEX 0x61 -+#define IRQ_SELECT_INDEX 0x70 -+#define DMA_SELECT_INDEX 0x74 -+ -+#define GPIO46_INDEX 0xc6 -+#define GPIO47_INDEX 0xc7 -+ -+/* UART stuff. Only for debugging. */ -+/* UART Register */ -+ -+#define UART_RBR 0x0 /* Receiver Buffer Register (Read Only) */ -+#define UART_THR 0x0 /* Transmitter Holding Register (Write Only) */ -+#define UART_IER 0x2 /* Interrupt Enable Register */ -+#define UART_IIR 0x4 /* Interrupt Ident Register (Read Only) */ -+#define UART_FCR 0x4 /* FIFO Control Register (Write Only) */ -+#define UART_LCR 0x6 /* Line Control Register */ -+#define UART_MCR 0x8 /* MODEM Control Register */ -+#define UART_LSR 0xa /* Line Status Register */ -+#define UART_MSR 0xc /* MODEM Status Register */ -+#define UART_SCR 0xe /* Scratch Register */ -+#define UART_DLL 0x0 /* Divisor Latch (LS) */ -+#define UART_DLM 0x2 /* Divisor Latch (MS) */ -+ -+#ifndef __ASSEMBLY__ -+typedef struct uart_reg { -+ volatile __u16 rbr; -+ volatile __u16 ier; -+ volatile __u16 iir; -+ volatile __u16 lcr; -+ volatile __u16 mcr; -+ volatile __u16 lsr; -+ volatile __u16 msr; -+ volatile __u16 scr; -+} uart_reg; -+#endif /* ! __ASSEMBLY__ */ -+ -+/* Alias for Write Only Register */ -+ -+#define thr rbr -+#define tcr iir -+ -+/* Alias for Divisor Latch Register */ -+ -+#define dll rbr -+#define dlm ier -+#define fcr iir -+ -+/* Interrupt Enable Register */ -+ -+#define IER_ERDAI 0x0100 /* Enable Received Data Available Interrupt */ -+#define IER_ETHREI 0x0200 /* Enable Transmitter Holding Register Empty Interrupt */ -+#define IER_ELSI 0x0400 /* Enable Receiver Line Status Interrupt */ -+#define IER_EMSI 0x0800 /* Enable MODEM Status Interrupt */ -+ -+/* Interrupt Ident Register */ -+ -+#define IIR_IP 0x0100 /* "0" if Interrupt Pending */ -+#define IIR_IIB0 0x0200 /* Interrupt ID Bit 0 */ -+#define IIR_IIB1 0x0400 /* Interrupt ID Bit 1 */ -+#define IIR_IIB2 0x0800 /* Interrupt ID Bit 2 */ -+#define IIR_FIFO 0xc000 /* FIFOs enabled */ -+ -+/* FIFO Control Register */ -+ -+#define FCR_FEN 0x0100 /* FIFO enable */ -+#define FCR_RFRES 0x0200 /* Receiver FIFO reset */ -+#define FCR_TFRES 0x0400 /* Transmitter FIFO reset */ -+#define FCR_DMA 0x0800 /* DMA mode select */ -+#define FCR_RTL 0x4000 /* Receiver triger (LSB) */ -+#define FCR_RTM 0x8000 /* Receiver triger (MSB) */ -+ -+/* Line Control Register */ -+ -+#define LCR_WLS0 0x0100 /* Word Length Select Bit 0 */ -+#define LCR_WLS1 0x0200 /* Word Length Select Bit 1 */ -+#define LCR_STB 0x0400 /* Number of Stop Bits */ -+#define LCR_PEN 0x0800 /* Parity Enable */ -+#define LCR_EPS 0x1000 /* Even Parity Select */ -+#define LCR_SP 0x2000 /* Stick Parity */ -+#define LCR_SB 0x4000 /* Set Break */ -+#define LCR_DLAB 0x8000 /* Divisor Latch Access Bit */ -+ -+/* MODEM Control Register */ -+ -+#define MCR_DTR 0x0100 /* Data Terminal Ready */ -+#define MCR_RTS 0x0200 /* Request to Send */ -+#define MCR_OUT1 0x0400 /* Out 1 */ -+#define MCR_IRQEN 0x0800 /* IRQ Enable */ -+#define MCR_LOOP 0x1000 /* Loop */ -+ -+/* Line Status Register */ -+ -+#define LSR_DR 0x0100 /* Data Ready */ -+#define LSR_OE 0x0200 /* Overrun Error */ -+#define LSR_PE 0x0400 /* Parity Error */ -+#define LSR_FE 0x0800 /* Framing Error */ -+#define LSR_BI 0x1000 /* Break Interrupt */ -+#define LSR_THRE 0x2000 /* Transmitter Holding Register Empty */ -+#define LSR_TEMT 0x4000 /* Transmitter Empty */ -+#define LSR_FIFOE 0x8000 /* Receiver FIFO error */ -+ -+/* MODEM Status Register */ -+ -+#define MSR_DCTS 0x0100 /* Delta Clear to Send */ -+#define MSR_DDSR 0x0200 /* Delta Data Set Ready */ -+#define MSR_TERI 0x0400 /* Trailing Edge Ring Indicator */ -+#define MSR_DDCD 0x0800 /* Delta Data Carrier Detect */ -+#define MSR_CTS 0x1000 /* Clear to Send */ -+#define MSR_DSR 0x2000 /* Data Set Ready */ -+#define MSR_RI 0x4000 /* Ring Indicator */ -+#define MSR_DCD 0x8000 /* Data Carrier Detect */ -+ -+/* Baud Rate Divisor */ -+ -+#define UART_CLK (1843200) /* 1.8432 MHz */ -+#define UART_BAUD(x) (UART_CLK / (16 * (x))) -+ -+/* RTC register definition */ -+#define RTC_SECONDS 0 -+#define RTC_SECONDS_ALARM 1 -+#define RTC_MINUTES 2 -+#define RTC_MINUTES_ALARM 3 -+#define RTC_HOURS 4 -+#define RTC_HOURS_ALARM 5 -+#define RTC_DAY_OF_WEEK 6 -+#define RTC_DAY_OF_MONTH 7 -+#define RTC_MONTH 8 -+#define RTC_YEAR 9 -+#define RTC_FREQ_SELECT 10 -+# define RTC_UIP 0x80 -+# define RTC_DIV_CTL 0x70 -+/* This RTC can work under 32.768KHz clock only. */ -+# define RTC_OSC_ENABLE 0x20 -+# define RTC_OSC_DISABLE 0x00 -+#define RTC_CONTROL 11 -+# define RTC_SET 0x80 -+# define RTC_PIE 0x40 -+# define RTC_AIE 0x20 -+# define RTC_UIE 0x10 -+# define RTC_SQWE 0x08 -+# define RTC_DM_BINARY 0x04 -+# define RTC_24H 0x02 -+# define RTC_DST_EN 0x01 -+ -+#endif /* __ASM_SH_SMC37C93X_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/smp.h linux-2.6.17/include/asm-sh/smp.h ---- linux-2.6.17-vanilla/include/asm-sh/smp.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/smp.h 2006-07-12 16:54:26.000000000 +0000 -@@ -20,11 +20,6 @@ - #include <asm/atomic.h> - #include <asm/current.h> - --extern cpumask_t cpu_online_map; --extern cpumask_t cpu_possible_map; -- --#define cpu_online(cpu) cpu_isset(cpu, cpu_online_map) -- - #define raw_smp_processor_id() (current_thread_info()->cpu) - - /* I've no idea what the real meaning of this is */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/snapgear.h linux-2.6.17/include/asm-sh/snapgear.h ---- linux-2.6.17-vanilla/include/asm-sh/snapgear.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/snapgear.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,79 @@ -+/* -+ * include/asm-sh/snapgear/io.h -+ * -+ * Modified version of io_se.h for the snapgear-specific functions. -+ * -+ * May be copied or modified under the terms of the GNU General Public -+ * License. See linux/COPYING for more information. -+ * -+ * IO functions for a SnapGear -+ */ -+ -+#ifndef _ASM_SH_IO_SNAPGEAR_H -+#define _ASM_SH_IO_SNAPGEAR_H -+ -+#if defined(CONFIG_CPU_SH4) -+/* -+ * The external interrupt lines, these take up ints 0 - 15 inclusive -+ * depending on the priority for the interrupt. In fact the priority -+ * is the interrupt :-) -+ */ -+ -+#define IRL0_IRQ 2 -+#define IRL0_IPR_ADDR INTC_IPRD -+#define IRL0_IPR_POS 3 -+#define IRL0_PRIORITY 13 -+ -+#define IRL1_IRQ 5 -+#define IRL1_IPR_ADDR INTC_IPRD -+#define IRL1_IPR_POS 2 -+#define IRL1_PRIORITY 10 -+ -+#define IRL2_IRQ 8 -+#define IRL2_IPR_ADDR INTC_IPRD -+#define IRL2_IPR_POS 1 -+#define IRL2_PRIORITY 7 -+ -+#define IRL3_IRQ 11 -+#define IRL3_IPR_ADDR INTC_IPRD -+#define IRL3_IPR_POS 0 -+#define IRL3_PRIORITY 4 -+#endif -+ -+#define __IO_PREFIX snapgear -+#include <asm/io_generic.h> -+ -+#ifdef CONFIG_SH_SECUREEDGE5410 -+/* -+ * We need to remember what was written to the ioport as some bits -+ * are shared with other functions and you cannot read back what was -+ * written :-| -+ * -+ * Bit Read Write -+ * ----------------------------------------------- -+ * D0 DCD on ttySC1 power -+ * D1 Reset Switch heatbeat -+ * D2 ttySC0 CTS (7100) LAN -+ * D3 - WAN -+ * D4 ttySC0 DCD (7100) CONSOLE -+ * D5 - ONLINE -+ * D6 - VPN -+ * D7 - DTR on ttySC1 -+ * D8 - ttySC0 RTS (7100) -+ * D9 - ttySC0 DTR (7100) -+ * D10 - RTC SCLK -+ * D11 RTC DATA RTC DATA -+ * D12 - RTS RESET -+ */ -+ -+#define SECUREEDGE_IOPORT_ADDR ((volatile short *) 0xb0000000) -+extern unsigned short secureedge5410_ioport; -+ -+#define SECUREEDGE_WRITE_IOPORT(val, mask) (*SECUREEDGE_IOPORT_ADDR = \ -+ (secureedge5410_ioport = \ -+ ((secureedge5410_ioport & ~(mask)) | ((val) & (mask))))) -+#define SECUREEDGE_READ_IOPORT() \ -+ ((*SECUREEDGE_IOPORT_ADDR&0x0817) | (secureedge5410_ioport&~0x0817)) -+#endif -+ -+#endif /* _ASM_SH_IO_SNAPGEAR_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/system.h linux-2.6.17/include/asm-sh/system.h ---- linux-2.6.17-vanilla/include/asm-sh/system.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/system.h 2006-07-12 16:54:26.000000000 +0000 -@@ -7,6 +7,7 @@ - */ - - #include <linux/config.h> -+#include <asm/types.h> - - /* - * switch_to() should switch tasks to task nr n, first -@@ -67,13 +68,20 @@ - { - } - --#define nop() __asm__ __volatile__ ("nop") -- -- --#define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) -+#ifdef CONFIG_CPU_SH4A -+#define __icbi() \ -+{ \ -+ unsigned long __addr; \ -+ __addr = 0xa8000000; \ -+ __asm__ __volatile__( \ -+ "icbi %0\n\t" \ -+ : /* no output */ \ -+ : "m" (__m(__addr))); \ -+} -+#endif - - static __inline__ unsigned long tas(volatile int *m) --{ /* #define tas(ptr) (xchg((ptr),1)) */ -+{ - unsigned long retval; - - __asm__ __volatile__ ("tas.b @%1\n\t" -@@ -82,12 +90,33 @@ - return retval; - } - --extern void __xchg_called_with_bad_pointer(void); -- --#define mb() __asm__ __volatile__ ("": : :"memory") --#define rmb() mb() --#define wmb() __asm__ __volatile__ ("": : :"memory") -+/* -+ * A brief note on ctrl_barrier(), the control register write barrier. -+ * -+ * Legacy SH cores typically require a sequence of 8 nops after -+ * modification of a control register in order for the changes to take -+ * effect. On newer cores (like the sh4a and sh5) this is accomplished -+ * with icbi. -+ * -+ * Also note that on sh4a in the icbi case we can forego a synco for the -+ * write barrier, as it's not necessary for control registers. -+ * -+ * Historically we have only done this type of barrier for the MMUCR, but -+ * it's also necessary for the CCR, so we make it generic here instead. -+ */ -+#ifdef CONFIG_CPU_SH4A -+#define mb() __asm__ __volatile__ ("synco": : :"memory") -+#define rmb() mb() -+#define wmb() __asm__ __volatile__ ("synco": : :"memory") -+#define ctrl_barrier() __icbi() - #define read_barrier_depends() do { } while(0) -+#else -+#define mb() __asm__ __volatile__ ("": : :"memory") -+#define rmb() mb() -+#define wmb() __asm__ __volatile__ ("": : :"memory") -+#define ctrl_barrier() __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop") -+#define read_barrier_depends() do { } while(0) -+#endif - - #ifdef CONFIG_SMP - #define smp_mb() mb() -@@ -105,7 +134,8 @@ - #define set_wmb(var, value) do { var = value; wmb(); } while (0) - - /* Interrupt Control */ --static __inline__ void local_irq_enable(void) -+#ifdef CONFIG_CPU_HAS_SR_RB -+static inline void local_irq_enable(void) - { - unsigned long __dummy0, __dummy1; - -@@ -118,6 +148,20 @@ - : "1" (~0x000000f0) - : "memory"); - } -+#else -+static inline void local_irq_enable(void) -+{ -+ unsigned long __dummy0, __dummy1; -+ -+ __asm__ __volatile__ ( -+ "stc sr, %0\n\t" -+ "and %1, %0\n\t" -+ "ldc %0, sr\n\t" -+ : "=&r" (__dummy0), "=r" (__dummy1) -+ : "1" (~0x000000f0) -+ : "memory"); -+} -+#endif - - static __inline__ void local_irq_disable(void) - { -@@ -130,6 +174,31 @@ - : "memory"); - } - -+static __inline__ void set_bl_bit(void) -+{ -+ unsigned long __dummy0, __dummy1; -+ -+ __asm__ __volatile__ ("stc sr, %0\n\t" -+ "or %2, %0\n\t" -+ "and %3, %0\n\t" -+ "ldc %0, sr" -+ : "=&r" (__dummy0), "=r" (__dummy1) -+ : "r" (0x10000000), "r" (0xffffff0f) -+ : "memory"); -+} -+ -+static __inline__ void clear_bl_bit(void) -+{ -+ unsigned long __dummy0, __dummy1; -+ -+ __asm__ __volatile__ ("stc sr, %0\n\t" -+ "and %2, %0\n\t" -+ "ldc %0, sr" -+ : "=&r" (__dummy0), "=r" (__dummy1) -+ : "1" (~0x10000000) -+ : "memory"); -+} -+ - #define local_save_flags(x) \ - __asm__("stc sr, %0; and #0xf0, %0" : "=&z" (x) :/**/: "memory" ) - -@@ -174,17 +243,17 @@ - } - } - #else --#define local_irq_restore(x) do { \ -+#define local_irq_restore(x) do { \ - if ((x & 0x000000f0) != 0x000000f0) \ -- local_irq_enable(); \ -+ local_irq_enable(); \ - } while (0) - #endif - --#define really_restore_flags(x) do { \ -+#define really_restore_flags(x) do { \ - if ((x & 0x000000f0) != 0x000000f0) \ -- local_irq_enable(); \ -+ local_irq_enable(); \ - else \ -- local_irq_disable(); \ -+ local_irq_disable(); \ - } while (0) - - /* -@@ -212,8 +281,8 @@ - #define back_to_P1() \ - do { \ - unsigned long __dummy; \ -+ ctrl_barrier(); \ - __asm__ __volatile__( \ -- "nop;nop;nop;nop;nop;nop;nop\n\t" \ - "mov.l 1f, %0\n\t" \ - "jmp @%0\n\t" \ - " nop\n\t" \ -@@ -226,7 +295,7 @@ - /* For spinlocks etc */ - #define local_irq_save(x) x = local_irq_save() - --static __inline__ unsigned long xchg_u32(volatile int * m, unsigned long val) -+static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val) - { - unsigned long flags, retval; - -@@ -237,7 +306,7 @@ - return retval; - } - --static __inline__ unsigned long xchg_u8(volatile unsigned char * m, unsigned long val) -+static inline unsigned long xchg_u8(volatile u8 *m, unsigned long val) - { - unsigned long flags, retval; - -@@ -248,20 +317,70 @@ - return retval; - } - --static __inline__ unsigned long __xchg(unsigned long x, volatile void * ptr, int size) -+extern void __xchg_called_with_bad_pointer(void); -+ -+#define __xchg(ptr, x, size) \ -+({ \ -+ unsigned long __xchg__res; \ -+ volatile void *__xchg_ptr = (ptr); \ -+ switch (size) { \ -+ case 4: \ -+ __xchg__res = xchg_u32(__xchg_ptr, x); \ -+ break; \ -+ case 1: \ -+ __xchg__res = xchg_u8(__xchg_ptr, x); \ -+ break; \ -+ default: \ -+ __xchg_called_with_bad_pointer(); \ -+ __xchg__res = x; \ -+ break; \ -+ } \ -+ \ -+ __xchg__res; \ -+}) -+ -+#define xchg(ptr,x) \ -+ ((__typeof__(*(ptr)))__xchg((ptr),(unsigned long)(x), sizeof(*(ptr)))) -+ -+static inline unsigned long __cmpxchg_u32(volatile int * m, unsigned long old, -+ unsigned long new) -+{ -+ __u32 retval; -+ unsigned long flags; -+ -+ local_irq_save(flags); -+ retval = *m; -+ if (retval == old) -+ *m = new; -+ local_irq_restore(flags); /* implies memory barrier */ -+ return retval; -+} -+ -+/* This function doesn't exist, so you'll get a linker error -+ * if something tries to do an invalid cmpxchg(). */ -+extern void __cmpxchg_called_with_bad_pointer(void); -+ -+#define __HAVE_ARCH_CMPXCHG 1 -+ -+static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old, -+ unsigned long new, int size) - { - switch (size) { - case 4: -- return xchg_u32(ptr, x); -- break; -- case 1: -- return xchg_u8(ptr, x); -- break; -+ return __cmpxchg_u32(ptr, old, new); - } -- __xchg_called_with_bad_pointer(); -- return x; -+ __cmpxchg_called_with_bad_pointer(); -+ return old; - } - -+#define cmpxchg(ptr,o,n) \ -+ ({ \ -+ __typeof__(*(ptr)) _o_ = (o); \ -+ __typeof__(*(ptr)) _n_ = (n); \ -+ (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ -+ (unsigned long)_n_, sizeof(*(ptr))); \ -+ }) -+ - /* XXX - * disable hlt during certain critical i/o operations - */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/systemh7751.h linux-2.6.17/include/asm-sh/systemh7751.h ---- linux-2.6.17-vanilla/include/asm-sh/systemh7751.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/systemh7751.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,71 @@ -+#ifndef __ASM_SH_SYSTEMH_7751SYSTEMH_H -+#define __ASM_SH_SYSTEMH_7751SYSTEMH_H -+ -+/* -+ * linux/include/asm-sh/systemh/7751systemh.h -+ * -+ * Copyright (C) 2000 Kazumoto Kojima -+ * -+ * Hitachi SystemH support -+ -+ * Modified for 7751 SystemH by -+ * Jonathan Short, 2002. -+ */ -+ -+/* Box specific addresses. */ -+ -+#define PA_ROM 0x00000000 /* EPROM */ -+#define PA_ROM_SIZE 0x00400000 /* EPROM size 4M byte */ -+#define PA_FROM 0x01000000 /* EPROM */ -+#define PA_FROM_SIZE 0x00400000 /* EPROM size 4M byte */ -+#define PA_EXT1 0x04000000 -+#define PA_EXT1_SIZE 0x04000000 -+#define PA_EXT2 0x08000000 -+#define PA_EXT2_SIZE 0x04000000 -+#define PA_SDRAM 0x0c000000 -+#define PA_SDRAM_SIZE 0x04000000 -+ -+#define PA_EXT4 0x12000000 -+#define PA_EXT4_SIZE 0x02000000 -+#define PA_EXT5 0x14000000 -+#define PA_EXT5_SIZE 0x04000000 -+#define PA_PCIC 0x18000000 /* MR-SHPC-01 PCMCIA */ -+ -+#define PA_DIPSW0 0xb9000000 /* Dip switch 5,6 */ -+#define PA_DIPSW1 0xb9000002 /* Dip switch 7,8 */ -+#define PA_LED 0xba000000 /* LED */ -+#define PA_BCR 0xbb000000 /* FPGA on the MS7751SE01 */ -+ -+#define PA_MRSHPC 0xb83fffe0 /* MR-SHPC-01 PCMCIA controler */ -+#define PA_MRSHPC_MW1 0xb8400000 /* MR-SHPC-01 memory window base */ -+#define PA_MRSHPC_MW2 0xb8500000 /* MR-SHPC-01 attribute window base */ -+#define PA_MRSHPC_IO 0xb8600000 /* MR-SHPC-01 I/O window base */ -+#define MRSHPC_MODE (PA_MRSHPC + 4) -+#define MRSHPC_OPTION (PA_MRSHPC + 6) -+#define MRSHPC_CSR (PA_MRSHPC + 8) -+#define MRSHPC_ISR (PA_MRSHPC + 10) -+#define MRSHPC_ICR (PA_MRSHPC + 12) -+#define MRSHPC_CPWCR (PA_MRSHPC + 14) -+#define MRSHPC_MW0CR1 (PA_MRSHPC + 16) -+#define MRSHPC_MW1CR1 (PA_MRSHPC + 18) -+#define MRSHPC_IOWCR1 (PA_MRSHPC + 20) -+#define MRSHPC_MW0CR2 (PA_MRSHPC + 22) -+#define MRSHPC_MW1CR2 (PA_MRSHPC + 24) -+#define MRSHPC_IOWCR2 (PA_MRSHPC + 26) -+#define MRSHPC_CDCR (PA_MRSHPC + 28) -+#define MRSHPC_PCIC_INFO (PA_MRSHPC + 30) -+ -+#define BCR_ILCRA (PA_BCR + 0) -+#define BCR_ILCRB (PA_BCR + 2) -+#define BCR_ILCRC (PA_BCR + 4) -+#define BCR_ILCRD (PA_BCR + 6) -+#define BCR_ILCRE (PA_BCR + 8) -+#define BCR_ILCRF (PA_BCR + 10) -+#define BCR_ILCRG (PA_BCR + 12) -+ -+#define IRQ_79C973 13 -+ -+#define __IO_PREFIX sh7751systemh -+#include <asm/io_generic.h> -+ -+#endif /* __ASM_SH_SYSTEMH_7751SYSTEMH_H */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/thread_info.h linux-2.6.17/include/asm-sh/thread_info.h ---- linux-2.6.17-vanilla/include/asm-sh/thread_info.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/thread_info.h 2006-07-12 16:54:26.000000000 +0000 -@@ -20,7 +20,8 @@ - struct exec_domain *exec_domain; /* execution domain */ - unsigned long flags; /* low level flags */ - __u32 cpu; -- int preempt_count; /* 0 => preemptable, <0 => BUG */ -+ int preempt_count; /* 0 => preemptable, <0 => BUG */ -+ mm_segment_t addr_limit; /* thread address space */ - struct restart_block restart_block; - __u8 supervisor_stack[0]; - }; -@@ -40,6 +41,7 @@ - .flags = 0, \ - .cpu = 0, \ - .preempt_count = 1, \ -+ .addr_limit = KERNEL_DS, \ - .restart_block = { \ - .fn = do_no_restart_syscall, \ - }, \ -@@ -48,16 +50,29 @@ - #define init_thread_info (init_thread_union.thread_info) - #define init_stack (init_thread_union.stack) - -+#define THREAD_SIZE (2*PAGE_SIZE) -+ - /* how to get the thread information struct from C */ - static inline struct thread_info *current_thread_info(void) - { - struct thread_info *ti; -+#ifdef CONFIG_CPU_HAS_SR_RB - __asm__("stc r7_bank, %0" : "=r" (ti)); -+#else -+ unsigned long __dummy; -+ -+ __asm__ __volatile__ ( -+ "mov r15, %0\n\t" -+ "and %1, %0\n\t" -+ : "=&r" (ti), "=r" (__dummy) -+ : "1" (~(THREAD_SIZE - 1)) -+ : "memory"); -+#endif -+ - return ti; - } - - /* thread information allocation */ --#define THREAD_SIZE (2*PAGE_SIZE) - #define alloc_thread_info(ti) ((struct thread_info *) __get_free_pages(GFP_KERNEL,1)) - #define free_thread_info(ti) free_pages((unsigned long) (ti), 1) - -@@ -65,7 +80,7 @@ - - /* how to get the thread information struct from ASM */ - #define GET_THREAD_INFO(reg) \ -- stc r7_bank, reg -+ stc r7_bank, reg - - #endif - -@@ -82,7 +97,6 @@ - #define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ - #define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */ - #define TIF_MEMDIE 18 --#define TIF_USERSPACE 31 /* true if FS sets userspace */ - - #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) - #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) -@@ -90,7 +104,6 @@ - #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) - #define _TIF_USEDFPU (1<<TIF_USEDFPU) - #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) --#define _TIF_USERSPACE (1<<TIF_USERSPACE) - - #define _TIF_WORK_MASK 0x000000FE /* work to do on interrupt/exception return */ - #define _TIF_ALLWORK_MASK 0x000000FF /* work to do on any return to u-space */ -diff -ruN linux-2.6.17-vanilla/include/asm-sh/timer.h linux-2.6.17/include/asm-sh/timer.h ---- linux-2.6.17-vanilla/include/asm-sh/timer.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/timer.h 2006-07-12 16:54:26.000000000 +0000 -@@ -6,6 +6,8 @@ - - struct sys_timer_ops { - int (*init)(void); -+ int (*start)(void); -+ int (*stop)(void); - unsigned long (*get_offset)(void); - unsigned long (*get_frequency)(void); - }; -diff -ruN linux-2.6.17-vanilla/include/asm-sh/timex.h linux-2.6.17/include/asm-sh/timex.h ---- linux-2.6.17-vanilla/include/asm-sh/timex.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/timex.h 2006-07-12 16:54:26.000000000 +0000 -@@ -6,7 +6,7 @@ - #ifndef __ASM_SH_TIMEX_H - #define __ASM_SH_TIMEX_H - --#define CLOCK_TICK_RATE (CONFIG_SH_PCLK_FREQ / 4) /* Underlying HZ */ -+#define CLOCK_TICK_RATE (HZ * 100000UL) - - typedef unsigned long long cycles_t; - -diff -ruN linux-2.6.17-vanilla/include/asm-sh/titan.h linux-2.6.17/include/asm-sh/titan.h ---- linux-2.6.17-vanilla/include/asm-sh/titan.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/titan.h 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1,43 @@ -+/* -+ * Platform defintions for Titan -+ */ -+ -+#ifndef _ASM_SH_TITAN_TITAN_H -+#define _ASM_SH_TITAN_TITAN_H -+ -+#define __IO_PREFIX titan -+#include <asm/io_generic.h> -+ -+/* IRQ assignments */ -+#define TITAN_IRQ_WAN 2 /* eth0 (WAN) */ -+#define TITAN_IRQ_LAN 5 /* eth1 (LAN) */ -+#define TITAN_IRQ_MPCIA 8 /* mPCI A */ -+#define TITAN_IRQ_MPCIB 11 /* mPCI B */ -+#define TITAN_IRQ_USB 11 /* USB */ -+ -+/* -+ * The external interrupt lines, these take up ints 0 - 15 inclusive -+ * depending on the priority for the interrupt. In fact the priority -+ * is the interrupt :-) -+ */ -+#define IRL0_IRQ 0 -+#define IRL0_IPR_ADDR INTC_IPRD -+#define IRL0_IPR_POS 3 -+#define IRL0_PRIORITY 8 -+ -+#define IRL1_IRQ 1 -+#define IRL1_IPR_ADDR INTC_IPRD -+#define IRL1_IPR_POS 2 -+#define IRL1_PRIORITY 8 -+ -+#define IRL2_IRQ 2 -+#define IRL2_IPR_ADDR INTC_IPRD -+#define IRL2_IPR_POS 1 -+#define IRL2_PRIORITY 8 -+ -+#define IRL3_IRQ 3 -+#define IRL3_IPR_ADDR INTC_IPRD -+#define IRL3_IPR_POS 0 -+#define IRL3_PRIORITY 8 -+ -+#endif -diff -ruN linux-2.6.17-vanilla/include/asm-sh/uaccess.h linux-2.6.17/include/asm-sh/uaccess.h ---- linux-2.6.17-vanilla/include/asm-sh/uaccess.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/uaccess.h 2006-07-12 16:54:26.000000000 +0000 -@@ -1,5 +1,4 @@ --/* $Id: uaccess.h,v 1.11 2003/10/13 07:21:20 lethal Exp $ -- * -+/* - * User space memory access functions - * - * Copyright (C) 1999, 2002 Niibe Yutaka -@@ -16,21 +15,9 @@ - #include <linux/errno.h> - #include <linux/sched.h> - --/* -- * NOTE: Macro/functions in this file depends on threads_info.h implementation. -- * Assumes: -- * TI_FLAGS == 8 -- * TIF_USERSPACE == 31 -- * USER_ADDR_LIMIT == 0x80000000 -- */ -- - #define VERIFY_READ 0 - #define VERIFY_WRITE 1 - --typedef struct { -- unsigned int is_user_space; --} mm_segment_t; -- - /* - * The fs value determines whether argument validity checking should be - * performed or not. If get_fs() == USER_DS, checking is performed, with -@@ -40,12 +27,14 @@ - */ - - #define MAKE_MM_SEG(s) ((mm_segment_t) { (s) }) --#define segment_eq(a,b) ((a).is_user_space == (b).is_user_space) - --#define USER_ADDR_LIMIT 0x80000000 -+#define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFFUL) -+#define USER_DS MAKE_MM_SEG(PAGE_OFFSET) - --#define KERNEL_DS MAKE_MM_SEG(0) --#define USER_DS MAKE_MM_SEG(1) -+#define segment_eq(a,b) ((a).seg == (b).seg) -+ -+#define __addr_ok(addr) \ -+ ((unsigned long)(addr) < (current_thread_info()->addr_limit.seg)) - - #define get_ds() (KERNEL_DS) - -@@ -76,31 +65,8 @@ - return ((addr >= memory_start) && ((addr + size) < memory_end)); - } - #else /* CONFIG_MMU */ --static inline mm_segment_t get_fs(void) --{ -- return MAKE_MM_SEG(test_thread_flag(TIF_USERSPACE)); --} -- --static inline void set_fs(mm_segment_t s) --{ -- unsigned long ti, flag; -- __asm__ __volatile__( -- "stc r7_bank, %0\n\t" -- "mov.l @(8,%0), %1\n\t" -- "shal %1\n\t" -- "cmp/pl %2\n\t" -- "rotcr %1\n\t" -- "mov.l %1, @(8,%0)" -- : "=&r" (ti), "=&r" (flag) -- : "r" (s.is_user_space) -- : "t"); --/**** -- if (s.is_user_space) -- set_thread_flag(TIF_USERSPACE); -- else -- clear_thread_flag(TIF_USERSPACE); --****/ --} -+#define get_fs() (current_thread_info()->addr_limit) -+#define set_fs(x) (current_thread_info()->addr_limit = (x)) - - /* - * __access_ok: Check if address with size is OK or not. -@@ -108,7 +74,7 @@ - * We do three checks: - * (1) is it user space? - * (2) addr + size --> carry? -- * (3) addr + size >= 0x80000000 (USER_ADDR_LIMIT) -+ * (3) addr + size >= 0x80000000 (PAGE_OFFSET) - * - * (1) (2) (3) | RESULT - * 0 0 0 | ok -@@ -541,7 +507,7 @@ - "3:\n\t" - "mov.l 4f, %1\n\t" - "jmp @%1\n\t" -- " mov %5, %0\n" -+ " mov #0, %0\n" - ".balign 4\n" - "4: .long 2b\n" - ".previous\n" -@@ -550,26 +516,20 @@ - " .long 1b,3b\n" - ".previous" - : "=z" (res), "=&r" (__dummy) -- : "0" (0), "r" (__s), "r" (__n), "i" (-EFAULT) -+ : "0" (0), "r" (__s), "r" (__n) - : "t"); - return res; - } - - static __inline__ long strnlen_user(const char __user *s, long n) - { -- if (!access_ok(VERIFY_READ, s, n)) -+ if (!__addr_ok(s)) - return 0; - else - return __strnlen_user(s, n); - } - --static __inline__ long strlen_user(const char __user *s) --{ -- if (!access_ok(VERIFY_READ, s, 0)) -- return 0; -- else -- return __strnlen_user(s, ~0UL >> 1); --} -+#define strlen_user(str) strnlen_user(str, ~0UL >> 1) - - /* - * The exception table consists of pairs of addresses: the first is the -diff -ruN linux-2.6.17-vanilla/include/asm-sh/unistd.h linux-2.6.17/include/asm-sh/unistd.h ---- linux-2.6.17-vanilla/include/asm-sh/unistd.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/unistd.h 2006-07-12 16:54:26.000000000 +0000 -@@ -300,9 +300,31 @@ - #define __NR_inotify_init 290 - #define __NR_inotify_add_watch 291 - #define __NR_inotify_rm_watch 292 -+#define __NR_migrate_pages 293 -+#define __NR_openat 294 -+#define __NR_mkdirat 295 -+#define __NR_mknodat 296 -+#define __NR_fchownat 297 -+#define __NR_futimesat 298 -+#define __NR_fstatat64 299 -+#define __NR_unlinkat 300 -+#define __NR_renameat 301 -+#define __NR_linkat 302 -+#define __NR_symlinkat 303 -+#define __NR_readlinkat 304 -+#define __NR_fchmodat 305 -+#define __NR_faccessat 305 -+#define __NR_pselect6 307 -+#define __NR_ppoll 308 -+#define __NR_unshare 309 -+#define __NR_set_robust_list 310 -+#define __NR_get_robust_list 311 -+#define __NR_splice 312 -+#define __NR_sync_file_range 313 -+#define __NR_tee 314 -+#define __NR_vmsplice 315 - -- --#define NR_syscalls 293 -+#define NR_syscalls 316 - - /* user-visible error numbers are in the range -1 - -124: see <asm-sh/errno.h> */ - -diff -ruN linux-2.6.17-vanilla/include/linux/CVS/Entries linux-2.6.17/include/linux/CVS/Entries ---- linux-2.6.17-vanilla/include/linux/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/linux/CVS/Entries 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,3 @@ -+/superhyway.h/1.2/Thu Mar 17 07:43:07 2005/-ko/ -+/i2c-id.h/1.11/Wed Jul 5 14:51:55 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/linux/CVS/Repository linux-2.6.17/include/linux/CVS/Repository ---- linux-2.6.17-vanilla/include/linux/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/linux/CVS/Repository 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/linux -diff -ruN linux-2.6.17-vanilla/include/linux/CVS/Root linux-2.6.17/include/linux/CVS/Root ---- linux-2.6.17-vanilla/include/linux/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/linux/CVS/Root 2006-07-12 16:54:26.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/linux/i2c-id.h linux-2.6.17/include/linux/i2c-id.h ---- linux-2.6.17-vanilla/include/linux/i2c-id.h 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/include/linux/i2c-id.h 2006-07-12 16:54:27.000000000 +0000 -@@ -245,6 +245,7 @@ - #define I2C_HW_SMBUS_OV518 0x04000f /* OV518(+) USB 1.1 webcam ICs */ - #define I2C_HW_SMBUS_OV519 0x040010 /* OV519 USB 1.1 webcam IC */ - #define I2C_HW_SMBUS_OVFX2 0x040011 /* Cypress/OmniVision FX2 webcam */ -+#define I2C_HW_SMBUS_VOYAGER 0x040012 - - /* --- ISA pseudo-adapter */ - #define I2C_HW_ISA 0x050000 -diff -ruN linux-2.6.17-vanilla/include/video/CVS/Entries linux-2.6.17/include/video/CVS/Entries ---- linux-2.6.17-vanilla/include/video/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/video/CVS/Entries 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,2 @@ -+/voyager.h/1.1/Wed Apr 21 00:09:20 2004/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/include/video/CVS/Repository linux-2.6.17/include/video/CVS/Repository ---- linux-2.6.17-vanilla/include/video/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/video/CVS/Repository 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+linux/include/video -diff -ruN linux-2.6.17-vanilla/include/video/CVS/Root linux-2.6.17/include/video/CVS/Root ---- linux-2.6.17-vanilla/include/video/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/video/CVS/Root 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/include/video/voyager.h linux-2.6.17/include/video/voyager.h ---- linux-2.6.17-vanilla/include/video/voyager.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/include/video/voyager.h 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,39 @@ -+#define VOY_REG_TOP 0xb3e00000 //voyager register -+#define VOY_VRAM_TOP0 0xb0400000 //PANEL PLANE -+#define VOY_VRAM_TOP1 0xb04a0000 //VIDEO PLANE 0 -+#define VOY_VRAM_TOP2 0xb0540000 //VIDEO PLANE 1 -+#define VOY_VRAM_TOP3 0xb05e0000 //VIDEO ALPHA PLANE -+#define VOY_VRAM_TOP4 0xb0680000 //ALPHA PLANE -+#define VOY_VRAM_TOP5 0xb0720000 //PANEL CURSOR PLANE -+#define VOY_VRAM_TOP6 0xb0730000 //CRT PLANE -+#define VOY_VRAM_TOP7 0xb07d0000 //CRT CURSOR PLANE -+ -+#define XRES 640 -+#define YRES 480 -+#define BPP 16 -+ -+#define CSR_XRES 64 -+#define CSR_YRES 64 -+#define CSR_BPP 2 -+ -+#define MAX_PIXEL_MEM_SIZE ((XRES * YRES * BPP) / 8) -+#define LINE_LENGTH ((XRES * BPP) / 8) -+#define MAX_FRAMEBUFFER_MEM_SIZE (MAX_PIXEL_MEM_SIZE) -+#define MAX_HWC_MEM_SIZE ((CSR_XRES * CSR_YRES * CSR_BPP) / 8) -+#define ALLOCATED_FB_MEM_SIZE \ -+ (PAGE_ALIGN(MAX_FRAMEBUFFER_MEM_SIZE + PAGE_SIZE)) -+ -+#define VOYAGER_IOCTL_DEBUG_ADD 0x00 -+#define VOYAGER_IOCTL_DEBUG_GET 0x01 -+#define VOYAGER_IOCTL_DEBUG_PUT 0x02 -+#define VOYAGER_IOCTL_ENABLE 0x10 -+#define VOYAGER_IOCTL_ENABLE_CK 0x11 -+#define VOYAGER_IOCTL_ENABLE_CP 0x12 -+#define VOYAGER_IOCTL_ENABLE_AL 0x13 -+#define VOYAGER_IOCTL_SCALE 0x20 -+#define VOYAGER_IOCTL_CHKEY 0x30 -+#define VOYAGER_IOCTL_COLOR_1 0x40 -+#define VOYAGER_IOCTL_COLOR_2 0x41 -+#define VOYAGER_IOCTL_TYPE 0x50 -+#define VOYAGER_IOCTL_SELECT 0x51 -+#define VOYAGER_IOCTL_ALPHA 0x60 -diff -ruN linux-2.6.17-vanilla/lib/CVS/Entries linux-2.6.17/lib/CVS/Entries ---- linux-2.6.17-vanilla/lib/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/lib/CVS/Entries 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,3 @@ -+/Kconfig.debug/1.4/Wed Jul 5 14:51:56 2006/-ko/ -+/bitmap.c/1.5/Wed Jul 5 14:51:56 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/lib/CVS/Repository linux-2.6.17/lib/CVS/Repository ---- linux-2.6.17-vanilla/lib/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/lib/CVS/Repository 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+linux/lib -diff -ruN linux-2.6.17-vanilla/lib/CVS/Root linux-2.6.17/lib/CVS/Root ---- linux-2.6.17-vanilla/lib/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/lib/CVS/Root 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/lib/Kconfig.debug linux-2.6.17/lib/Kconfig.debug ---- linux-2.6.17-vanilla/lib/Kconfig.debug 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/lib/Kconfig.debug 2006-07-12 16:54:27.000000000 +0000 -@@ -178,7 +178,7 @@ - - config FRAME_POINTER - bool "Compile the kernel with frame pointers" -- depends on DEBUG_KERNEL && (X86 || CRIS || M68K || M68KNOMMU || FRV || UML) -+ depends on DEBUG_KERNEL && (X86 || CRIS || M68K || M68KNOMMU || FRV || UML || SUPERH) - default y if DEBUG_INFO && UML - help - If you say Y here the resulting kernel image will be slightly larger -diff -ruN linux-2.6.17-vanilla/lib/bitmap.c linux-2.6.17/lib/bitmap.c ---- linux-2.6.17-vanilla/lib/bitmap.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/lib/bitmap.c 2006-07-12 16:54:27.000000000 +0000 -@@ -525,7 +525,7 @@ - ord = 0; - while (i < pos) { - i = find_next_bit(buf, bits, i + 1); -- ord++; -+ ord++; - } - BUG_ON(i != pos); - -@@ -748,6 +748,11 @@ - * a power (@order) of two, aligned to that power of two, which - * makes the search algorithm much faster. - * -+ * Find a region of free (zero) bits in a @bitmap of @bits bits and -+ * allocate them (set them to one). Only consider regions of length -+ * a power (@order) of two, aligned to that power of two, which -+ * makes the search algorithm much faster. -+ * - * Return the bit offset in bitmap of the allocated region, - * or -errno on failure. - */ -diff -ruN linux-2.6.17-vanilla/mm/CVS/Entries linux-2.6.17/mm/CVS/Entries ---- linux-2.6.17-vanilla/mm/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/mm/CVS/Entries 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,2 @@ -+/memory.c/1.66/Wed Jul 5 14:51:57 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/mm/CVS/Repository linux-2.6.17/mm/CVS/Repository ---- linux-2.6.17-vanilla/mm/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/mm/CVS/Repository 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+linux/mm -diff -ruN linux-2.6.17-vanilla/mm/CVS/Root linux-2.6.17/mm/CVS/Root ---- linux-2.6.17-vanilla/mm/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/mm/CVS/Root 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/mm/memory.c linux-2.6.17/mm/memory.c ---- linux-2.6.17-vanilla/mm/memory.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/mm/memory.c 2006-07-12 16:54:27.000000000 +0000 -@@ -1455,7 +1455,9 @@ - int reuse = can_share_swap_page(old_page); - unlock_page(old_page); - if (reuse) { -+#ifdef CONFIG_ARM - flush_cache_page(vma, address, pte_pfn(orig_pte)); -+#endif - entry = pte_mkyoung(orig_pte); - entry = maybe_mkwrite(pte_mkdirty(entry), vma); - ptep_set_access_flags(vma, address, page_table, entry, 1); -diff -ruN linux-2.6.17-vanilla/net/CVS/Entries linux-2.6.17/net/CVS/Entries ---- linux-2.6.17-vanilla/net/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/net/CVS/Entries 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+D/ipv4//// -diff -ruN linux-2.6.17-vanilla/net/CVS/Repository linux-2.6.17/net/CVS/Repository ---- linux-2.6.17-vanilla/net/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/net/CVS/Repository 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+linux/net -diff -ruN linux-2.6.17-vanilla/net/CVS/Root linux-2.6.17/net/CVS/Root ---- linux-2.6.17-vanilla/net/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/net/CVS/Root 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/net/ipv4/CVS/Entries linux-2.6.17/net/ipv4/CVS/Entries ---- linux-2.6.17-vanilla/net/ipv4/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/net/ipv4/CVS/Entries 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,2 @@ -+/ipconfig.c/1.12/Wed Jul 5 14:51:59 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/net/ipv4/CVS/Repository linux-2.6.17/net/ipv4/CVS/Repository ---- linux-2.6.17-vanilla/net/ipv4/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/net/ipv4/CVS/Repository 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+linux/net/ipv4 -diff -ruN linux-2.6.17-vanilla/net/ipv4/CVS/Root linux-2.6.17/net/ipv4/CVS/Root ---- linux-2.6.17-vanilla/net/ipv4/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/net/ipv4/CVS/Root 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/net/ipv4/ipconfig.c linux-2.6.17/net/ipv4/ipconfig.c ---- linux-2.6.17-vanilla/net/ipv4/ipconfig.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/net/ipv4/ipconfig.c 2006-07-12 16:54:27.000000000 +0000 -@@ -113,7 +113,7 @@ - */ - int ic_set_manually __initdata = 0; /* IPconfig parameters set manually */ - --static int ic_enable __initdata = 0; /* IP config enabled? */ -+static int ic_enable __initdata = 1; /* IP config enabled? */ - - /* Protocol choice */ - int ic_proto_enabled __initdata = 0 -diff -ruN linux-2.6.17-vanilla/scripts/CVS/Entries linux-2.6.17/scripts/CVS/Entries ---- linux-2.6.17-vanilla/scripts/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/scripts/CVS/Entries 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,3 @@ -+/treelink.sh/1.3/Sun Jan 4 18:30:15 2004// -+/treeunlink.sh/1.3/Sun Jan 4 18:30:15 2004// -+D -diff -ruN linux-2.6.17-vanilla/scripts/CVS/Repository linux-2.6.17/scripts/CVS/Repository ---- linux-2.6.17-vanilla/scripts/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/scripts/CVS/Repository 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+linux/scripts -diff -ruN linux-2.6.17-vanilla/scripts/CVS/Root linux-2.6.17/scripts/CVS/Root ---- linux-2.6.17-vanilla/scripts/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/scripts/CVS/Root 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/scripts/treelink.sh linux-2.6.17/scripts/treelink.sh ---- linux-2.6.17-vanilla/scripts/treelink.sh 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/scripts/treelink.sh 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,49 @@ -+#!/bin/sh -+# -+# treelink.sh - Tree Linking Script -+# -+# Copyright (C) 2001, 2004 Paul Mundt <lethal@linux-sh.org> -+# -+# Modified by M. R. Brown <mrbrown@0xd6.org> -+# -+# A simple shell script for linking a drop in tree into a stock -+# kernel tree. Usable for drop in trees such as the linux-mips -+# and linuxconsole trees. -+# -+# Released under the terms of the GNU GPL v2 -+# -+[ "$#" -ne "2" ] && echo "Usage: $0 <drop in tree> <kernel tree>" && exit 1 -+ -+ODIR=${PWD} -+cd $1 || exit 1 -+LDIR=${PWD} -+echo -n "Building file list ... " -+LIST=`find * \( -type d -name CVS -prune \) -o \ -+ \( -type d -name {arch} -prune \) -o \ -+ \( -type d -name .arch-ids -prune \) -o \ -+ \( -type d -name SCCS -prune \) -o \ -+ \( -type d -name BitKeeper -prune \) -o -type f -print` -+echo -e "done." -+cd ${ODIR} -+ -+cd $2 || exit 1 -+ -+# Make this a seperate step so that the user can cancel the operation -+echo -n "Saving originals ..... " -+for file in $LIST; do -+ if [ -e $file -a ! -h $file ]; then -+ DIR=`dirname $file` -+ ofile=`basename $file` -+ [ ! -d ${DIR}/.orig ] && mkdir -p ${DIR}/.orig -+ cp $file ${DIR}/.orig/$ofile -+ fi -+done -+echo -e "done." -+ -+echo -n "Linking files ........ " -+for file in $LIST; do -+ DIR=`dirname $file` -+ [ ! -d $DIR ] && mkdir -p $DIR -+ ln -sf $LDIR/$file $file -+done -+echo -e "done." -diff -ruN linux-2.6.17-vanilla/scripts/treeunlink.sh linux-2.6.17/scripts/treeunlink.sh ---- linux-2.6.17-vanilla/scripts/treeunlink.sh 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/scripts/treeunlink.sh 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,37 @@ -+#!/bin/sh -+# -+# treeunlink.sh - Tree Unlinking Script -+# -+# Copyright (c) 2001 M. R. Brown <mrbrown@0xd6.org> -+# -+# Modified by Paul Mundt <lethal@linux-sh.org> -+# -+# This script attempts to restore a previously tree-linked tree. -+# It's the anti-thesis of (and based on) treelink.sh by Paul Mundt. -+# -+# Released under the terms of the GNU GPL v2 -+ -+[ "$#" -ne "1" ] && echo "Usage: $0 <kernel tree>" && exit 1 -+ -+cd $1 || exit 1 -+echo -n "Building file list ... " -+LIST=`find * \( -type d -name CVS -prune \) -o \ -+ \( -type d -name {arch} -prune \) -o \ -+ \( -type d -name .arch-ids -prune \) -o \ -+ \( -type d -name SCCS -prune \) -o \ -+ \( -type d -name BitKeeper -prune \) -o -type l -print` -+echo -e "done." -+ -+[ -z "$LIST" ] && echo "No linked files to unlink." && exit 1 -+ -+echo -n "Restoring originals .. " -+for file in $LIST; do -+ DIR=`dirname $file` -+ ofile=`basename $file` -+ rm -f $file -+ if [ -d ${DIR}/.orig -a -e ${DIR}/.orig/$ofile ]; then -+ mv ${DIR}/.orig/$ofile $file -+ [ -z "`ls ${DIR}/.orig`" ] && rmdir ${DIR}/.orig -+ fi -+done -+echo -e "done." -diff -ruN linux-2.6.17-vanilla/sound/CVS/Entries linux-2.6.17/sound/CVS/Entries ---- linux-2.6.17-vanilla/sound/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/CVS/Entries 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,4 @@ -+/Kconfig/1.1/Sun Jun 4 12:13:04 2006// -+/Makefile/1.1/Sun Jun 4 12:13:04 2006// -+D/oss//// -+D/sh//// -diff -ruN linux-2.6.17-vanilla/sound/CVS/Repository linux-2.6.17/sound/CVS/Repository ---- linux-2.6.17-vanilla/sound/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/CVS/Repository 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+linux/sound -diff -ruN linux-2.6.17-vanilla/sound/CVS/Root linux-2.6.17/sound/CVS/Root ---- linux-2.6.17-vanilla/sound/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/CVS/Root 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/sound/Kconfig linux-2.6.17/sound/Kconfig ---- linux-2.6.17-vanilla/sound/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/sound/Kconfig 2006-07-12 16:54:27.000000000 +0000 -@@ -62,6 +62,8 @@ - - source "sound/mips/Kconfig" - -+source "sound/sh/Kconfig" -+ - # the following will depenend on the order of config. - # here assuming USB is defined before ALSA - source "sound/usb/Kconfig" -diff -ruN linux-2.6.17-vanilla/sound/Makefile linux-2.6.17/sound/Makefile ---- linux-2.6.17-vanilla/sound/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/sound/Makefile 2006-07-12 16:54:27.000000000 +0000 -@@ -4,7 +4,7 @@ - obj-$(CONFIG_SOUND) += soundcore.o - obj-$(CONFIG_SOUND_PRIME) += oss/ - obj-$(CONFIG_DMASOUND) += oss/ --obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/ -+obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/ sh/ - - ifeq ($(CONFIG_SND),y) - obj-y += last.o -diff -ruN linux-2.6.17-vanilla/sound/oss/CVS/Entries linux-2.6.17/sound/oss/CVS/Entries ---- linux-2.6.17-vanilla/sound/oss/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/oss/CVS/Entries 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,7 @@ -+/Makefile/1.7/Mon Aug 29 21:01:20 2005/-ko/ -+/voyagergx_8051.c/1.2/Sat Jun 26 15:29:38 2004/-ko/ -+/voyagergx_sound.c/1.4/Fri Dec 23 08:25:06 2005/-ko/ -+/voyagergx_sound.h/1.1/Wed Apr 21 00:09:21 2004/-ko/ -+/Kconfig/1.11/Wed Jul 5 14:52:00 2006/-ko/ -+/sh_dac_audio.c/1.7/Wed Jul 5 14:52:00 2006/-ko/ -+D -diff -ruN linux-2.6.17-vanilla/sound/oss/CVS/Repository linux-2.6.17/sound/oss/CVS/Repository ---- linux-2.6.17-vanilla/sound/oss/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/oss/CVS/Repository 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+linux/sound/oss -diff -ruN linux-2.6.17-vanilla/sound/oss/CVS/Root linux-2.6.17/sound/oss/CVS/Root ---- linux-2.6.17-vanilla/sound/oss/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/oss/CVS/Root 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/sound/oss/Kconfig linux-2.6.17/sound/oss/Kconfig ---- linux-2.6.17-vanilla/sound/oss/Kconfig 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/sound/oss/Kconfig 2006-07-12 16:54:27.000000000 +0000 -@@ -833,6 +833,12 @@ - tristate "XpressAudio Sound Blaster emulation" - depends on SOUND_SB - -+config SOUND_VOYAGERGX -+ tristate "VoyagerGX/SH4 AC97 support" -+ depends on SOUND_PRIME!=n && SOUND && SH_RTS7751R2D -+ help -+ Say Y or M if you have a VoyagerGX sound audio. -+ - config SOUND_SH_DAC_AUDIO - tristate "SuperH DAC audio support" - depends on SOUND_PRIME && CPU_SH3 -diff -ruN linux-2.6.17-vanilla/sound/oss/Makefile linux-2.6.17/sound/oss/Makefile ---- linux-2.6.17-vanilla/sound/oss/Makefile 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/sound/oss/Makefile 2006-07-12 16:54:27.000000000 +0000 -@@ -82,6 +82,7 @@ - - obj-$(CONFIG_SOUND_AD1980) += ac97_plugin_ad1980.o ac97_codec.o - obj-$(CONFIG_SOUND_WM97XX) += ac97_plugin_wm97xx.o -+obj-$(CONFIG_SOUND_VOYAGERGX) += voyagergx_sound.o voyagergx_8051.o ac97_codec.o - - ifeq ($(CONFIG_MIDI_EMU10K1),y) - obj-$(CONFIG_SOUND_EMU10K1) += sound.o -diff -ruN linux-2.6.17-vanilla/sound/oss/sh_dac_audio.c linux-2.6.17/sound/oss/sh_dac_audio.c ---- linux-2.6.17-vanilla/sound/oss/sh_dac_audio.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/sound/oss/sh_dac_audio.c 2006-07-12 16:54:27.000000000 +0000 -@@ -1,3 +1,14 @@ -+/* -+ * sound/oss/sh_dac_audio.c -+ * -+ * SH DAC based sound :( -+ * -+ * Copyright (C) 2004,2005 Andriy Skulysh -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ - #include <linux/config.h> - #include <linux/module.h> - #include <linux/init.h> -@@ -7,18 +18,17 @@ - #include <linux/fs.h> - #include <linux/sound.h> - #include <linux/soundcard.h> -+#include <linux/interrupt.h> - #include <asm/io.h> - #include <asm/uaccess.h> - #include <asm/irq.h> - #include <asm/delay.h> --#include <linux/interrupt.h> -- -+#include <asm/clock.h> - #include <asm/cpu/dac.h> -- --#ifdef MACH_HP600 -+#include <asm/cpu/timer.h> -+#include <asm/machvec.h> - #include <asm/hp6xx/hp6xx.h> --#include <asm/hd64461/hd64461.h> --#endif -+#include <asm/hd64461.h> - - #define MODNAME "sh_dac_audio" - -@@ -27,11 +37,6 @@ - #define TMU1_TCR_INIT 0x0020 /* Clock/4, rising edge; interrupt on */ - #define TMU1_TSTR_INIT 0x02 /* Bit to turn on TMU1 */ - --#define TMU_TSTR 0xfffffe92 --#define TMU1_TCOR 0xfffffea0 --#define TMU1_TCNT 0xfffffea4 --#define TMU1_TCR 0xfffffea8 -- - #define BUFFER_SIZE 48000 - - static int rate; -@@ -72,34 +77,37 @@ - - static void dac_audio_start(void) - { --#ifdef MACH_HP600 -- u16 v; -- v = inw(HD64461_GPADR); -- v &= ~HD64461_GPADR_SPEAKER; -- outw(v, HD64461_GPADR); --#endif -+ if (mach_is_hp6xx()) { -+ u16 v = inw(HD64461_GPADR); -+ v &= ~HD64461_GPADR_SPEAKER; -+ outw(v, HD64461_GPADR); -+ } -+ - sh_dac_enable(CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); - ctrl_outw(TMU1_TCR_INIT, TMU1_TCR); - } - static void dac_audio_stop(void) - { --#ifdef MACH_HP600 -- u16 v; --#endif - dac_audio_stop_timer(); --#ifdef MACH_HP600 -- v = inw(HD64461_GPADR); -- v |= HD64461_GPADR_SPEAKER; -- outw(v, HD64461_GPADR); --#endif -+ -+ if (mach_is_hp6xx()) { -+ u16 v = inw(HD64461_GPADR); -+ v |= HD64461_GPADR_SPEAKER; -+ outw(v, HD64461_GPADR); -+ } -+ -+ sh_dac_output(0, CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); - sh_dac_disable(CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL); - } - - static void dac_audio_set_rate(void) - { - unsigned long interval; -+ struct clk *clk; - -- interval = (current_cpu_data.module_clock / 4) / rate; -+ clk = clk_get("module_clk"); -+ interval = (clk_get_rate(clk) / 4) / rate; -+ clk_put(clk); - ctrl_outl(interval, TMU1_TCOR); - ctrl_outl(interval, TMU1_TCNT); - } -diff -ruN linux-2.6.17-vanilla/sound/oss/voyagergx_8051.c linux-2.6.17/sound/oss/voyagergx_8051.c ---- linux-2.6.17-vanilla/sound/oss/voyagergx_8051.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/oss/voyagergx_8051.c 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,204 @@ -+#include <linux/module.h> -+#include <linux/delay.h> -+#include <asm/rts7751r2d/voyagergx_reg.h> -+#include "voyagergx_sound.h" -+ -+#define DELAY_8051 300000 -+ -+ -+static unsigned char code_8051[] = { -+ 0x02,0x01,0x00,0x02,0x07,0x73,0x90,0x08,0xae,0xe0,0xfa,0xa3,0xe0,0x8a,0x82,0xf5, -+ 0x83,0xe0,0x60,0x13,0x90,0x08,0xa2,0xe4,0xf0,0xa3,0x74,0x30,0xf0,0x78,0x19,0x76, -+ 0x01,0x78,0x1e,0x76,0x01,0x80,0x04,0x78,0x19,0x76,0x00,0x90,0x3f,0xf2,0x74,0x01, -+ 0xf0,0xa3,0xe4,0xf0,0x22,0xff,0xff,0xff,0xff,0xff,0xff,0x02,0x06,0x83,0xff,0xff, -+ 0xff,0xff,0xff,0x02,0x04,0xe3,0x90,0x3f,0xf2,0xe4,0xf0,0xa3,0xf0,0x90,0x3f,0xf0, -+ 0xe0,0x70,0x02,0xa3,0xe0,0x70,0x06,0x12,0x08,0x8d,0x02,0x00,0xd4,0x90,0x3f,0xf0, -+ 0xc3,0xe0,0x94,0x01,0x70,0x04,0xa3,0xe0,0x94,0x00,0x70,0x06,0x12,0x00,0xd9,0x02, -+ 0x00,0xd4,0x90,0x3f,0xf0,0xc3,0xe0,0x94,0x02,0x70,0x04,0xa3,0xe0,0x94,0x00,0x70, -+ 0x05,0x12,0x07,0xf3,0x80,0x4e,0x90,0x3f,0xf0,0xc3,0xe0,0x94,0x03,0x70,0x04,0xa3, -+ 0xe0,0x94,0x00,0x70,0x05,0x12,0x08,0x1a,0x80,0x3a,0x90,0x3f,0xf0,0xc3,0xe0,0x94, -+ 0x04,0x70,0x04,0xa3,0xe0,0x94,0x00,0x70,0x05,0x12,0x08,0x41,0x80,0x26,0x90,0x3f, -+ 0xf0,0xc3,0xe0,0x94,0x05,0x70,0x04,0xa3,0xe0,0x94,0x00,0x70,0x05,0x12,0x08,0x7c, -+ 0x80,0x12,0x90,0x3f,0xf0,0xc3,0xe0,0x94,0x07,0x70,0x04,0xa3,0xe0,0x94,0x00,0x70, -+ 0x03,0x12,0x00,0x06,0x78,0x1b,0x76,0x00,0x22,0x90,0x3f,0xf4,0x7a,0x04,0x78,0x08, -+ 0xe0,0xf6,0xa3,0x08,0xda,0xfa,0x90,0x91,0x04,0x7a,0x04,0x78,0x08,0xe6,0xf0,0xa3, -+ 0x08,0xda,0xfa,0x12,0x06,0xd6,0x90,0x3f,0xf2,0x74,0x01,0xf0,0xa3,0xe4,0xf0,0x22, -+ 0x75,0x81,0x2b,0x75,0x0c,0xc0,0x75,0x0d,0x08,0x75,0x0e,0xff,0x75,0x0f,0x2f,0xc2, -+ 0xd3,0xc2,0xd4,0x12,0x03,0x4a,0x12,0x03,0xb6,0x12,0x03,0x2c,0x12,0x03,0x0e,0x12, -+ 0x02,0xac,0x12,0x07,0xcb,0x12,0x01,0x2a,0x01,0x00,0x90,0x08,0xc1,0x85,0x82,0x0a, -+ 0x85,0x83,0x0b,0x74,0x98,0xf5,0x82,0xf5,0x08,0x74,0x02,0xf5,0x83,0xf5,0x09,0x7a, -+ 0x14,0xe4,0x93,0xa3,0x85,0x82,0x08,0x85,0x83,0x09,0x85,0x0a,0x82,0x85,0x0b,0x83, -+ 0xf0,0xa3,0x85,0x83,0x0b,0x85,0x82,0x0a,0x85,0x09,0x83,0x85,0x08,0x82,0xda,0xe1, -+ 0x90,0x08,0xd5,0xe4,0xf0,0xa3,0xf0,0x90,0x08,0xd7,0xe4,0xf0,0xa3,0xf0,0x90,0x08, -+ 0xd9,0xe4,0xf0,0xa3,0xf0,0x90,0x08,0xdb,0xe4,0xf0,0xa3,0xf0,0x78,0x18,0x76,0x00, -+ 0x78,0x1f,0x76,0x00,0x90,0x91,0x80,0x74,0x03,0xf0,0x90,0x08,0xc1,0x7a,0x04,0x78, -+ 0x08,0xe0,0xf6,0xa3,0x08,0xda,0xfa,0x90,0x91,0x00,0x7a,0x04,0x78,0x08,0xe6,0xf0, -+ 0xa3,0x08,0xda,0xfa,0x90,0x08,0xc5,0x7a,0x04,0x78,0x08,0xe0,0xf6,0xa3,0x08,0xda, -+ 0xfa,0x90,0x91,0x04,0x7a,0x04,0x78,0x08,0xe6,0xf0,0xa3,0x08,0xda,0xfa,0x90,0x08, -+ 0xc9,0x7a,0x04,0x78,0x08,0xe0,0xf6,0xa3,0x08,0xda,0xfa,0x90,0x91,0x08,0x7a,0x04, -+ 0x78,0x08,0xe6,0xf0,0xa3,0x08,0xda,0xfa,0x90,0x08,0xcd,0x7a,0x04,0x78,0x08,0xe0, -+ 0xf6,0xa3,0x08,0xda,0xfa,0x90,0x91,0x0c,0x7a,0x04,0x78,0x08,0xe6,0xf0,0xa3,0x08, -+ 0xda,0xfa,0x90,0x08,0xd1,0x7a,0x04,0x78,0x08,0xe0,0xf6,0xa3,0x08,0xda,0xfa,0x90, -+ 0x91,0x10,0x7a,0x04,0x78,0x08,0xe6,0xf0,0xa3,0x08,0xda,0xfa,0x90,0x91,0x40,0xe4, -+ 0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x91,0x44,0xe4,0xf0,0xa3,0xf0,0xa3,0xf0, -+ 0xa3,0xf0,0x90,0x91,0x48,0xe4,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x43,0xa0,0x01, -+ 0x90,0x08,0xdd,0xe4,0xf0,0xa3,0xf0,0x12,0x06,0x2f,0x90,0x08,0xdd,0x74,0xc8,0xf0, -+ 0xa3,0xe4,0xf0,0x12,0x05,0xd0,0x90,0x91,0x80,0x74,0x01,0xf0,0x90,0x08,0xdd,0x74, -+ 0xff,0xf0,0xa3,0xe4,0xf0,0x12,0x06,0x2f,0x90,0x08,0xdd,0x74,0x64,0xf0,0xa3,0xe4, -+ 0xf0,0x12,0x05,0xd0,0x12,0x07,0xa1,0x90,0x08,0xdd,0x74,0xff,0xf0,0xa3,0xe4,0xf0, -+ 0x12,0x06,0x2f,0x12,0x07,0xa1,0x12,0x07,0x28,0x12,0x07,0x28,0x78,0x1b,0xe6,0x60, -+ 0x03,0x12,0x00,0x46,0x78,0x1e,0xe6,0x60,0x07,0x78,0x1e,0x76,0x00,0x12,0x08,0x9b, -+ 0x80,0xea,0x90,0x91,0x80,0xe4,0xf0,0x22,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x14,0x70,0x04, -+ 0x74,0x00,0x60,0x1e,0x90,0x08,0x68,0xa8,0x83,0xa9,0x82,0x90,0x08,0xa2,0xaa,0x83, -+ 0xab,0x82,0x90,0x08,0xb6,0xac,0x83,0xad,0x82,0xc3,0xed,0x9b,0x70,0x28,0xec,0x9a, -+ 0x70,0x24,0x74,0x0a,0x70,0x04,0x74,0x00,0x60,0x1b,0x90,0x08,0xc0,0xac,0x83,0xad, -+ 0x82,0x90,0x08,0xb6,0xc3,0xed,0x95,0x82,0x70,0x05,0xec,0x95,0x83,0x60,0x06,0xe4, -+ 0xf0,0xa3,0x02,0x02,0xe4,0x22,0x88,0x83,0x89,0x82,0xe4,0x93,0xa3,0xa8,0x83,0xa9, -+ 0x82,0x8a,0x83,0x8b,0x82,0xf0,0xa3,0xaa,0x83,0xab,0x82,0x02,0x02,0xc9,0x74,0x00, -+ 0x60,0x0d,0x90,0x00,0x00,0x79,0x00,0xfa,0xe4,0x93,0xf7,0xa3,0x09,0xda,0xf9,0x74, -+ 0x13,0x60,0x08,0x78,0x18,0xfa,0xe4,0xf6,0x08,0xda,0xfc,0x22,0x74,0x00,0x60,0x0d, -+ 0x90,0x00,0x00,0x79,0x00,0xfa,0xe4,0x93,0xf7,0xa3,0x09,0xda,0xf9,0x74,0x00,0x60, -+ 0x08,0x78,0x00,0xfa,0xe4,0xf6,0x08,0xda,0xfc,0x22,0x74,0x00,0x60,0x35,0xfb,0x90, -+ 0x00,0x00,0x74,0x00,0x75,0xf0,0x08,0x84,0x24,0x20,0xf8,0x7a,0x08,0xe5,0xf0,0x60, -+ 0x07,0xe6,0x03,0x1a,0xd5,0xf0,0xfb,0xf6,0xeb,0x60,0x0d,0x1b,0xe4,0x93,0xa3,0xa2, -+ 0xe0,0xe6,0x13,0xf6,0xda,0xf2,0x80,0x05,0xe6,0x03,0xda,0xfd,0xf6,0x08,0x7a,0x08, -+ 0xeb,0x70,0xe5,0x74,0x00,0x60,0x2e,0xfb,0x74,0x00,0x75,0xf0,0x08,0x84,0x24,0x20, -+ 0xf8,0x7a,0x08,0xe5,0xf0,0x60,0x07,0xe6,0x03,0x1a,0xd5,0xf0,0xfb,0xf6,0xeb,0x60, -+ 0x09,0x1b,0xc3,0xe6,0x13,0xf6,0xda,0xf6,0x80,0x05,0xe6,0x03,0xda,0xfd,0xf6,0x08, -+ 0x7a,0x08,0xeb,0x70,0xe9,0x22,0x74,0x00,0x60,0x0d,0x90,0x00,0x00,0x79,0x00,0xfa, -+ 0xe4,0x93,0xf7,0xa3,0x09,0xda,0xf9,0x74,0x00,0x60,0x08,0x78,0x00,0xfa,0xe4,0xf6, -+ 0x08,0xda,0xfc,0x22,0x90,0x08,0xdd,0xe4,0xf0,0xa3,0xf0,0x90,0x08,0xdd,0xc3,0xe0, -+ 0x94,0x40,0xa3,0xe0,0x94,0x00,0x30,0xd2,0x04,0xb2,0xe7,0xd2,0xe0,0x20,0xe7,0x03, -+ 0x02,0x04,0xdf,0x90,0x08,0xdd,0xe0,0xf5,0x08,0xa3,0xe0,0xf5,0x09,0x7a,0x0c,0xe5, -+ 0x08,0xc3,0x33,0xf5,0x08,0xe5,0x09,0x33,0xf5,0x09,0xda,0xf3,0xe5,0x09,0x33,0xe4, -+ 0x50,0x01,0x14,0xf5,0x0a,0xf5,0x0b,0xe5,0x08,0x44,0x00,0xf5,0x08,0xe5,0x09,0x44, -+ 0x00,0xf5,0x09,0xe5,0x0a,0x44,0x08,0xf5,0x0a,0xe5,0x0b,0x44,0x00,0xf5,0x0b,0x90, -+ 0x08,0xe1,0xe5,0x08,0xf0,0xa3,0xe5,0x09,0xf0,0x90,0x08,0xe1,0xe0,0xf5,0x08,0xa3, -+ 0xe0,0xf5,0x09,0x33,0xe4,0x50,0x01,0x14,0xf5,0x0a,0xf5,0x0b,0x90,0x91,0x04,0x7a, -+ 0x04,0x78,0x08,0xe6,0xf0,0xa3,0x08,0xda,0xfa,0x90,0x08,0xdf,0xe4,0xf0,0xa3,0xf0, -+ 0x90,0x08,0xdf,0xc3,0xe0,0x94,0x80,0xa3,0xe0,0x94,0x38,0x30,0xd2,0x04,0xb2,0xe7, -+ 0xd2,0xe0,0x30,0xe7,0x5b,0x90,0x91,0x40,0xe0,0x54,0x00,0xf5,0x08,0xa3,0xe0,0x54, -+ 0xa0,0xf5,0x09,0xa3,0xe0,0x54,0x00,0xf5,0x0a,0xa3,0xe0,0x54,0x00,0xf5,0x0b,0x78, -+ 0x08,0xc3,0xe6,0x94,0x00,0x70,0x10,0x08,0xe6,0x94,0xa0,0x70,0x0a,0x08,0xe6,0x94, -+ 0x00,0x70,0x04,0x08,0xe6,0x94,0x00,0x70,0x19,0x90,0x91,0x48,0x7a,0x04,0x78,0x08, -+ 0xe0,0xf6,0xa3,0x08,0xda,0xfa,0x90,0x08,0xe1,0xe5,0x08,0xf0,0xa3,0xe5,0x09,0xf0, -+ 0x80,0x0e,0x90,0x08,0xdf,0xe0,0x24,0x01,0xf0,0xa3,0xe0,0x34,0x00,0xf0,0x80,0x90, -+ 0x90,0x08,0xdd,0xe0,0x24,0x01,0xf0,0xa3,0xe0,0x34,0x00,0xf0,0x02,0x03,0xdb,0x12, -+ 0x06,0xd6,0x22,0xc0,0xe0,0xc0,0x82,0xc0,0x83,0xc0,0xd0,0xc0,0x08,0xc0,0x09,0xc0, -+ 0x0a,0xc0,0x0b,0xc2,0xd3,0xd2,0xd4,0xc2,0xaf,0x53,0xa8,0xfe,0x53,0xe8,0xf9,0x78, -+ 0x19,0xe6,0x70,0x03,0x02,0x05,0xac,0x90,0x08,0xbe,0xc3,0xe0,0x94,0x01,0x70,0x04, -+ 0xa3,0xe0,0x94,0x00,0x60,0x03,0x02,0x05,0xac,0x78,0x1f,0xe6,0x70,0x37,0x90,0x08, -+ 0xa4,0xe0,0xfa,0xa3,0xe0,0x8a,0x82,0xf5,0x83,0xe0,0xf5,0x08,0xa3,0xe0,0xf5,0x09, -+ 0x33,0xe4,0x50,0x01,0x14,0xf5,0x0a,0xf5,0x0b,0x90,0x91,0x10,0x7a,0x04,0x78,0x08, -+ 0xe6,0xf0,0xa3,0x08,0xda,0xfa,0x90,0x91,0x0c,0x7a,0x04,0x78,0x08,0xe6,0xf0,0xa3, -+ 0x08,0xda,0xfa,0x80,0x54,0x90,0x08,0xa4,0xe0,0xfa,0xa3,0xe0,0x8a,0x82,0xf5,0x83, -+ 0xe0,0xf5,0x08,0xa3,0xe0,0xf5,0x09,0x33,0xe4,0x50,0x01,0x14,0xf5,0x0a,0xf5,0x0b, -+ 0x90,0x91,0x0c,0x7a,0x04,0x78,0x08,0xe6,0xf0,0xa3,0x08,0xda,0xfa,0x90,0x08,0xa4, -+ 0xe0,0x24,0x02,0xfa,0xa3,0xe0,0x34,0x00,0xf5,0x83,0x8a,0x82,0xe0,0xf5,0x08,0xa3, -+ 0xe0,0xf5,0x09,0x33,0xe4,0x50,0x01,0x14,0xf5,0x0a,0xf5,0x0b,0x90,0x91,0x10,0x7a, -+ 0x04,0x78,0x08,0xe6,0xf0,0xa3,0x08,0xda,0xfa,0x12,0x08,0x9b,0x90,0x91,0x81,0xe0, -+ 0x90,0x00,0x39,0xf0,0x43,0xe8,0x06,0x43,0xf8,0x04,0x43,0xa8,0x01,0xd2,0xaf,0xd0, -+ 0x0b,0xd0,0x0a,0xd0,0x09,0xd0,0x08,0xd0,0xd0,0xd0,0x83,0xd0,0x82,0xd0,0xe0,0x32, -+ 0x90,0x08,0xdf,0xe4,0xf0,0xa3,0xf0,0x90,0x08,0xdf,0xc3,0xe0,0x94,0xe8,0xa3,0xe0, -+ 0x94,0x03,0x30,0xd2,0x04,0xb2,0xe7,0xd2,0xe0,0x30,0xe7,0x42,0x90,0x08,0xe1,0xe4, -+ 0xf0,0xa3,0xf0,0x90,0x08,0xdd,0xe0,0xf5,0x08,0xa3,0xe0,0xf5,0x09,0x90,0x08,0xe1, -+ 0xc3,0xe0,0x95,0x08,0xa3,0xe0,0x95,0x09,0x30,0xd2,0x04,0xb2,0xe7,0xd2,0xe0,0x30, -+ 0xe7,0x0e,0x90,0x08,0xe1,0xe0,0x24,0x01,0xf0,0xa3,0xe0,0x34,0x00,0xf0,0x80,0xd3, -+ 0x90,0x08,0xdf,0xe0,0x24,0x01,0xf0,0xa3,0xe0,0x34,0x00,0xf0,0x80,0xa9,0x22,0x90, -+ 0x08,0xe1,0xe4,0xf0,0xa3,0x74,0x30,0xf0,0x90,0x08,0xdf,0xe4,0xf0,0xa3,0xf0,0x90, -+ 0x08,0xdf,0xc3,0xe0,0x94,0x00,0xa3,0xe0,0x94,0x06,0x30,0xd2,0x04,0xb2,0xe7,0xd2, -+ 0xe0,0x30,0xe7,0x2e,0x90,0x08,0xdd,0xe0,0x90,0x08,0xe1,0xc0,0xe0,0xe0,0xfa,0xa3, -+ 0xe0,0x8a,0x82,0xf5,0x83,0xd0,0xe0,0xf0,0x90,0x08,0xe1,0xe0,0x24,0x01,0xf0,0xa3, -+ 0xe0,0x34,0x00,0xf0,0x90,0x08,0xdf,0xe0,0x24,0x01,0xf0,0xa3,0xe0,0x34,0x00,0xf0, -+ 0x80,0xbd,0x22,0xc0,0xe0,0xc0,0x82,0xc0,0x83,0xc0,0xd0,0xc0,0x08,0xc0,0x09,0xc0, -+ 0x0a,0xc0,0x0b,0xc2,0xd3,0xd2,0xd4,0xc2,0xaf,0x53,0xa8,0xfe,0x53,0xe8,0xf9,0x78, -+ 0x1b,0x76,0x01,0x90,0x90,0x0c,0x7a,0x04,0x78,0x08,0xe0,0xf6,0xa3,0x08,0xda,0xfa, -+ 0x90,0x00,0x35,0x7a,0x04,0x78,0x08,0xe6,0xf0,0xa3,0x08,0xda,0xfa,0x43,0xe8,0x06, -+ 0x43,0xa8,0x01,0xd2,0xaf,0xd0,0x0b,0xd0,0x0a,0xd0,0x09,0xd0,0x08,0xd0,0xd0,0xd0, -+ 0x83,0xd0,0x82,0xd0,0xe0,0x32,0x90,0x00,0x3e,0xe4,0xf0,0xa3,0xf0,0x90,0x00,0x3e, -+ 0xc3,0xe0,0x94,0x80,0xa3,0xe0,0x94,0x38,0x30,0xd2,0x04,0xb2,0xe7,0xd2,0xe0,0x30, -+ 0xe7,0x35,0x90,0x91,0x40,0xe0,0x54,0x00,0xf5,0x08,0xa3,0xe0,0x54,0x60,0xf5,0x09, -+ 0xa3,0xe0,0x54,0x00,0xf5,0x0a,0xa3,0xe0,0x54,0x00,0xf5,0x0b,0x78,0x08,0x7a,0x04, -+ 0xe6,0x70,0x03,0x08,0xda,0xfa,0x70,0x01,0x22,0x90,0x00,0x3e,0xe0,0x24,0x01,0xf0, -+ 0xa3,0xe0,0x34,0x00,0xf0,0x80,0xb6,0x22,0x90,0x3f,0xf0,0x74,0x0f,0xf0,0xa3,0xe4, -+ 0xf0,0x90,0x3f,0xf4,0xe4,0xf0,0xa3,0x74,0x60,0xf0,0xa3,0x74,0x0a,0xf0,0xa3,0xe4, -+ 0xf0,0x90,0x3f,0xf8,0xe4,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x12,0x00,0x46,0x90, -+ 0x3f,0xf8,0xe0,0x54,0xf0,0xf5,0x08,0x7a,0x03,0x78,0x08,0xa3,0x08,0xe0,0x54,0x00, -+ 0xf6,0xda,0xf8,0x78,0x08,0x7a,0x04,0xe6,0x70,0x03,0x08,0xda,0xfa,0x60,0x01,0x22, -+ 0x80,0xb6,0x22,0xc0,0xe0,0xc0,0x82,0xc0,0x83,0xc0,0xd0,0xc2,0xd3,0xd2,0xd4,0xc2, -+ 0xaf,0x53,0xa8,0xfe,0x53,0xe8,0xf9,0x90,0x08,0xbe,0x74,0x01,0xf0,0xa3,0xe4,0xf0, -+ 0x43,0xe8,0x06,0x43,0xa8,0x01,0xd2,0xaf,0xd0,0xd0,0xd0,0x83,0xd0,0x82,0xd0,0xe0, -+ 0x32,0x90,0x91,0x40,0xe0,0x54,0x00,0xf5,0x08,0xa3,0xe0,0x54,0x80,0xf5,0x09,0xa3, -+ 0xe0,0x54,0x00,0xf5,0x0a,0xa3,0xe0,0x54,0x00,0xf5,0x0b,0x78,0x08,0x7a,0x04,0xe6, -+ 0x70,0x03,0x08,0xda,0xfa,0x60,0x01,0x22,0x80,0xd7,0x22,0x90,0x08,0xbe,0xe4,0xf0, -+ 0xa3,0xf0,0x90,0x08,0xb8,0xe4,0xf0,0xa3,0xf0,0x90,0x08,0xb6,0xe4,0xf0,0xa3,0xf0, -+ 0x78,0x1e,0x76,0x00,0x75,0xa8,0x81,0x75,0xb8,0x01,0x75,0xe8,0x06,0x75,0xf8,0x04, -+ 0xd2,0xaf,0x22,0x90,0x91,0x44,0x7a,0x04,0x78,0x08,0xe0,0xf6,0xa3,0x08,0xda,0xfa, -+ 0x90,0x3f,0xf4,0x7a,0x04,0x78,0x08,0xe6,0xf0,0xa3,0x08,0xda,0xfa,0x12,0x06,0xd6, -+ 0x90,0x3f,0xf2,0x74,0x01,0xf0,0xa3,0xe4,0xf0,0x22,0x90,0x3f,0xf4,0x7a,0x04,0x78, -+ 0x08,0xe0,0xf6,0xa3,0x08,0xda,0xfa,0x90,0x91,0x08,0x7a,0x04,0x78,0x08,0xe6,0xf0, -+ 0xa3,0x08,0xda,0xfa,0x12,0x06,0xd6,0x90,0x3f,0xf2,0x74,0x01,0xf0,0xa3,0xe4,0xf0, -+ 0x22,0x90,0x91,0x48,0x7a,0x04,0x78,0x08,0xe0,0xf6,0xa3,0x08,0xda,0xfa,0x90,0x3f, -+ 0xf4,0x7a,0x04,0x78,0x08,0xe6,0xf0,0xa3,0x08,0xda,0xfa,0x12,0x06,0xd6,0x90,0x3f, -+ 0xf2,0x74,0x01,0xf0,0xa3,0xe4,0xf0,0x22,0x00,0x30,0x00,0x36,0x41,0x91,0x45,0x91, -+ 0xf4,0x3f,0xf6,0x3f,0xf4,0x3f,0xf5,0x3f,0xf6,0x3f,0xf7,0x3f,0x90,0x3f,0xf4,0x78, -+ 0x1f,0xe0,0xf6,0x90,0x3f,0xf2,0x74,0x01,0xf0,0xa3,0xe4,0xf0,0x22,0x78,0x1e,0x76, -+ 0x01,0x90,0x3f,0xf2,0x74,0x01,0xf0,0xa3,0xe4,0xf0,0x22,0x53,0xa0,0xfe,0x43,0xa0, -+ 0x01,0x22,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -+}; -+ -+ -+void init_8051(void) -+{ -+ int i,j; -+ -+ *(volatile unsigned long *)(VOYAGER_8051_RESET) = 0x0000; -+ *(volatile unsigned long *)(VOYAGER_8051_SELECT) = 0x0011; -+ //8051 program write -+ for(i=0;i<sizeof(code_8051);i++) { -+ *(volatile unsigned char *)(VOYAGER_8051_BASE+i) = code_8051[i]; -+ } -+ *(volatile unsigned long *)(VOYAGER_8051_RESET) = 0x0001; -+ for(i=0;i<DELAY_8051;i++) { -+ for(j=0;j<200;j++); -+ } -+} -+ -+ -+int command_8051(int com,int *data,int *data2) -+{ -+ int ret,i,j; -+ -+ j = 0; -+ do { -+ *(volatile unsigned short *)(VOYAGER_8051_COMMAND) = com; -+ *(volatile unsigned short *)(VOYAGER_8051_STATUS) = 0; -+ *(volatile unsigned long *)(VOYAGER_8051_DATA) = *data; -+ *(volatile unsigned long *)(VOYAGER_8051_DATA+4) = *data2; -+ *(volatile unsigned long *)(VOYAGER_8051_CPU_INT) = 0xff; -+ for(i=0;i<DELAY_8051;i++) { -+ ret = *(volatile unsigned short *)(VOYAGER_8051_STATUS); -+ if(ret != 0) { -+ break; -+ } -+ } -+ j++; -+ if(j > 100) { -+ *data = 0; -+ *data2 = 0; -+ printk("8051 command process error\n"); -+ return(-1); -+ } -+ } while(ret == 0); -+ *data = *(volatile unsigned long *)(VOYAGER_8051_DATA); -+ *data2 = *(volatile unsigned long *)(VOYAGER_8051_DATA+4); -+ -+ return(ret); -+} -+ -+EXPORT_SYMBOL(init_8051); -+EXPORT_SYMBOL(command_8051); -+ -diff -ruN linux-2.6.17-vanilla/sound/oss/voyagergx_sound.c linux-2.6.17/sound/oss/voyagergx_sound.c ---- linux-2.6.17-vanilla/sound/oss/voyagergx_sound.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/oss/voyagergx_sound.c 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,1122 @@ -+/* -+ * linux/drivers/sound/voyagergx_sound.c -- voyager sound driver -+ * -+ * Copyright (C) 2003 Renesas Technology Sales Co.,Ltd. -+ * Copyright (C) 2003 Atom Create Engineering Co.,Ltd. -+ * Anthor : Atom Create Engineering Co.,Ltd. -+ * Kenichi Sakuma -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file COPYING in the main directory of this archive for -+ * more details. -+ * -+ * 1.00 -+ * - initial version (ks) -+ * 1.01 -+ * - Kernel 2.6 correspondence -+ */ -+#include <linux/version.h> -+#include <linux/module.h> -+#include <linux/string.h> -+#include <linux/ioport.h> -+#include <linux/sched.h> -+#include <linux/delay.h> -+#include <linux/sound.h> -+#include <linux/slab.h> -+#include <linux/soundcard.h> -+#include <linux/init.h> -+#include <linux/poll.h> -+#include <linux/pci.h> -+#include <linux/bitops.h> -+#include <linux/proc_fs.h> -+#include <linux/spinlock.h> -+#include <linux/smp_lock.h> -+#include <linux/ac97_codec.h> -+#include <linux/interrupt.h> -+#include <asm/io.h> -+#include <asm/uaccess.h> -+#include <asm/hardirq.h> -+#include <asm/rts7751r2d/voyagergx_reg.h> -+#include <asm/irq.h> -+#include "voyagergx_sound.h" -+ -+static DEFINE_SPINLOCK(voyagergx_sound_lock); -+ -+/* --------------------------------------------------------------------- */ -+#undef OSS_DOCUMENTED_MIXER_SEMANTICS -+ -+#define VOYAGERGX_MODULE_NAME "Voyagergx audio" -+#define PFX VOYAGERGX_MODULE_NAME -+ -+#define err(format, arg...) printk(KERN_ERR PFX ": " format "\n" , ## arg) -+#define info(format, arg...) printk(KERN_INFO PFX ": " format "\n" , ## arg) -+//#define info(format, arg...) printk(": " format "\n" , ## arg) -+//#define warn(format, arg...) printk(KERN_WARNING PFX ": " format "\n" , ## arg) -+ -+// buffer size -+#define VOYAGER_SOUND_SIZE 0x100000 -+// data buffer 1 - vram upper -+#define VOYAGER_SOUND_BUF1 0xb0200000 -+// data buffer 2 - vram upper -+#define VOYAGER_SOUND_BUF2 VOYAGER_SOUND_BUF1+VOYAGER_SOUND_SIZE -+//WAIT TIME OUT -+//#define WAIT_TIMEOUT ((VOYAGER_SOUND_SIZE / 48000) * HZ + 10) -+#define WAIT_TIMEOUT 1100 -+ -+DECLARE_WAIT_QUEUE_HEAD(int_wq); -+ -+/* Boot options */ -+static int vra = 0; // 0 = no VRA, 1 = use VRA if codec supports it -+MODULE_PARM(vra, "i"); -+MODULE_PARM_DESC(vra, "if 1 use VRA if codec supports it"); -+ -+struct voyager_setting { -+ int ch; -+ int fmt; -+ int rate; -+} setting; -+ -+int init_8051(void); -+int command_8051(int com,int *data,int *data2); -+ -+// DMA used channel - set DMA used channel(fixed at 0) -+static int sh7751_dmasound_play_irq = 0; -+// buffer 1 used flag - transfersize is set when used -+static int buff_flg1 = 0; -+// buffer 2 used flag - transfersize is set when used -+static int buff_flg2 = 0; -+// buffer judgement flag - which buffer is used by DMA -+static int proc_flg = 0; -+// first judgement flag - data transfer is first time? -+static int first_flg = 0; -+// last judgement flag - data transfer is last? -+static int last_flg = 0; -+// interrupt flag - 0 cleard if interrupt occured -+static int wari_flg; -+// break flag - to cancel or done of sound play -+static int break_flg; -+// play cancel flag - performance problem or end of play -+static int abnml_flg; -+// number of write buffer - which buffer will be used -+static int next_write; -+// remained buffer size -+static int next_size; -+// DMA transfer size -+static int dma_req[2]; -+// DMA address table - address per channel -+static int dma_tbl[] = { -+ 0xffa00000, 0xffa00010, 0xffa00020, 0xffa00030, -+ 0xffa00040, 0xffa00050, 0xffa00060, 0xffa00070 -+}; -+ -+/* --------------------------------------------------------------------- */ -+// DMA start -+// enable selected dma channel -+void dma2_start(int irq) -+{ -+int base; -+ -+ base = dma_tbl[irq]; -+ *(volatile unsigned long *)(base + 0xc) |= 0x00000001; -+} -+ -+ -+// DMA stop -+// disable selected dma channel -+void dma2_stop(int irq) -+{ -+int base; -+ -+ base = dma_tbl[irq]; -+ *(volatile unsigned long *)(base + 0xc) &= 0xfffffffc; -+} -+ -+ -+// prepare DMA transfer -+// set transfer src address and transfer size -+void dma2_queue_buffer(int irq,int src, int cnt) -+{ -+int base; -+ -+ base = dma_tbl[irq]; -+ *(volatile unsigned long *)(base + 0x0) = src & 0x1fffffff; -+ // change transfer unit for mono or stereo -+ if(setting.ch == 1) { -+ // 4 byte for stereo -+ *(volatile unsigned long *)(base + 0x8) = cnt; -+ } -+ else { -+ // 2 byte for mono -+ *(volatile unsigned long *)(base + 0x8) = cnt * 2; -+ } -+} -+ -+ -+// DMA registration -+// register DMA interrupt -+int request_dma2(int irq,char *str,irqreturn_t (*callback)(int, void *, struct pt_regs *)) -+{ -+int ret; -+ -+ make_ipr_irq(DMTE0_IRQ+irq, DMA_IPR_ADDR, DMA_IPR_POS,DMA_PRIORITY); -+ ret = request_irq(DMTE0_IRQ+irq,callback,SA_INTERRUPT,str,0); -+ return(ret); -+} -+ -+ -+// preparation for DMA use -+// set transfer dst address and transfer unit, transfer condition, etc -+void dma2_set_device(int irq) -+{ -+int base; -+ -+ //DMA initialize -+ base = dma_tbl[irq]; -+ *(volatile unsigned long *)(base + 0x0) = 0; -+ *(volatile unsigned long *)(base + 0x4) = VOYAGER_8051_FIFO & 0x1fffffff; -+ *(volatile unsigned long *)(base + 0x8) = 0; -+ // change transfer unit for mono or stereo -+ if(setting.ch == 1) { -+ // 4 byte for stereo -+ *(volatile unsigned long *)(base + 0xc) = 0xb1034; -+ } -+ else { -+ // 2 byte for mono -+ *(volatile unsigned long *)(base + 0xc) = 0xb1024; -+ } -+ *(volatile unsigned long *)(base + 0x40) = 0x01; -+} -+ -+/* --------------------------------------------------------------------- */ -+ -+ -+// cancel sound play(done) -+// -+static void voy_break(void) -+{ -+int data,data2; -+ -+ // cancel for 8051 -+ data = 0x00; -+ command_8051(0x07,&data,&data2); -+ // stop DMA -+ dma2_stop(sh7751_dmasound_play_irq); -+ break_flg = 1; -+} -+/* --------------------------------------------------------------------- */ -+// ISR for DMA -+// called after DMA transfer is done -+// next request is issued here in the case of sequential transfer -+static irqreturn_t do_irq(int irq, void *dev_id, struct pt_regs *regs) -+{ -+ spin_lock_irq(&voyagergx_sound_lock); -+ -+ // stop DMA -+ dma2_stop(sh7751_dmasound_play_irq); -+ // clear interrupt flag -+ wari_flg = 0; -+ // play of buffer 1 is done? -+ if((proc_flg == 1)&&(buff_flg1 == 1)) { -+ // buffer 1 is free -+ buff_flg1 = 0; -+ // buffer 2 is being played -+ proc_flg = 2; -+ // next data is ready? -+ if(buff_flg2 == 1) { -+ // request DMA -+ dma2_queue_buffer(sh7751_dmasound_play_irq,VOYAGER_SOUND_BUF2,dma_req[1]); -+ dma2_start(sh7751_dmasound_play_irq); -+ } -+ else { -+ // set stop flag if no data -+ abnml_flg = 1; -+ } -+ } -+ // play of buffer 2 is done? -+ else if((proc_flg == 2)&&(buff_flg2 == 1)) { -+ // buffer 2 is free -+ buff_flg2 = 0; -+ // buffer 1 is being played -+ proc_flg = 1; -+ // next data is ready? -+ if(buff_flg1 == 1) { -+ // request DMA -+ dma2_queue_buffer(sh7751_dmasound_play_irq,VOYAGER_SOUND_BUF1,dma_req[0]); -+ dma2_start(sh7751_dmasound_play_irq); -+ } -+ else { -+ // set stop flag if no data -+ abnml_flg = 1; -+ } -+ } -+ // play remained data(last data or small one) -+ else { -+ //last transfer is done -+ last_flg = 0; -+ } -+ //wake up sleeping write routine -+ wake_up_interruptible(&int_wq); -+ spin_unlock_irq(&voyagergx_sound_lock); -+ -+ return IRQ_HANDLED; -+} -+ -+/* --------------------------------------------------------------------- */ -+// 32 bit memory read -+static inline u32 voyager_readl(u32 addr) -+{ -+ return *(volatile unsigned long *)(addr); -+} -+ -+// 32 bit memory write -+static inline void voyager_writel(u32 val,u32 addr) -+{ -+ *(volatile unsigned long *)(addr) = val; -+} -+ -+/* --------------------------------------------------------------------- */ -+ -+struct voyagergx_state { -+ /* soundcore stuff */ -+ int dev_audio; -+ -+ struct ac97_codec codec; -+ unsigned codec_base_caps; // AC'97 reg 00h, "Reset Register" -+ unsigned codec_ext_caps; // AC'97 reg 28h, "Extended Audio ID" -+ int no_vra; // do not use VRA -+ -+ spinlock_t lock; -+ struct semaphore open_sem; -+ mode_t open_mode; -+ -+} voyagergx_state; -+ -+ -+/* --------------------------------------------------------------------- */ -+// read codec -+static u16 rdcodec(struct ac97_codec *codec, u8 addr) -+{ -+ u32 cmd,ret; -+ u16 data; -+ -+ -+ // set register address for reading -+ cmd = (u32) (addr & AC97C_INDEX_MASK) << 12; -+ cmd |= AC97C_READ; // read command -+ command_8051(1,&cmd,&ret); -+ mdelay(1); -+ // read register -+ command_8051(4,&cmd,&ret); -+ mdelay(1); -+ // convert it as it was shifted -+ data = (cmd >> 4) & 0xffff; -+ return data; -+} -+ -+ -+// write codec -+static void wrcodec(struct ac97_codec *codec, u8 addr, u16 data) -+{ -+ u32 cmd,ret; -+ int i; -+ -+ // reset? -+ if(addr == 0) { -+ // try again if failed -+ for(i=0;i<10;i++) { -+ // set write data -+ cmd = (u32) data << AC97C_WD_BIT; // OR in the data word -+ command_8051(3,&cmd,&ret); -+ // set write address -+ cmd = (u32) (addr & AC97C_INDEX_MASK) << 12; -+ cmd &= ~AC97C_READ; // write command -+ command_8051(1,&cmd,&ret); -+ // check whether reset succeed -+ ret = rdcodec(codec,0); -+ if((ret & 0x8000) == 0) { -+ break; -+ } -+ } -+ } -+ // instead of reset -+ else { -+ // set write data -+ cmd = (u32) data << AC97C_WD_BIT; // OR in the data word -+ command_8051(3,&cmd,&ret); -+ // set write address -+ cmd = (u32) (addr & AC97C_INDEX_MASK) << 12; -+ cmd &= ~AC97C_READ; // write command -+ command_8051(1,&cmd,&ret); -+ mdelay(1); -+ // read variables of volume for preservation -+ rdcodec(codec,2); -+ rdcodec(codec,24); -+ rdcodec(codec,22); -+ rdcodec(codec,0x2c); -+ } -+} -+ -+/* --------------------------------------------------------------------- */ -+ -+static loff_t voyagergx_llseek(struct file *file, loff_t offset, int origin) -+{ -+ return -ESPIPE; -+} -+ -+ -+static int voyagergx_open_mixdev(struct inode *inode, struct file *file) -+{ -+ file->private_data = &voyagergx_state; -+ return 0; -+} -+ -+static int voyagergx_release_mixdev(struct inode *inode, struct file *file) -+{ -+ return 0; -+} -+ -+static int mixdev_ioctl(struct ac97_codec *codec, unsigned int cmd, -+ unsigned long arg) -+{ -+ return codec->mixer_ioctl(codec, cmd, arg); -+} -+ -+static int voyagergx_ioctl_mixdev(struct inode *inode, struct file *file, -+ unsigned int cmd, unsigned long arg) -+{ -+ struct voyagergx_state *s = (struct voyagergx_state *)file->private_data; -+ struct ac97_codec *codec = &s->codec; -+ -+ return mixdev_ioctl(codec, cmd, arg); -+} -+ -+static /*const */ struct file_operations voyagergx_mixer_fops = { -+ owner:THIS_MODULE, -+ llseek:voyagergx_llseek, -+ ioctl:voyagergx_ioctl_mixdev, -+ open:voyagergx_open_mixdev, -+ release:voyagergx_release_mixdev, -+}; -+ -+/* --------------------------------------------------------------------- */ -+// read routine -+// record(sampling) should be used originally -+// do nothing without record(sampling) now -+static ssize_t voyagergx_read(struct file *file, char *buffer, -+ size_t count, loff_t *ppos) -+{ -+ if (ppos != &file->f_pos) -+ return -ESPIPE; -+ if (!access_ok(VERIFY_WRITE, buffer, count)) -+ return -EFAULT; -+ return 0; -+} -+ -+// write routine -+// used for sound play -+// sound play is being done by 8051 and data itsself is transfered by DMA -+// the preparation for the above is done here -+static ssize_t voyagergx_write(struct file *file, const char *buffer, -+ size_t count, loff_t * ppos) -+{ -+int i,data,data2,data_size; -+int ret; -+ -+ -+ if (ppos != &file->f_pos) -+ return -ESPIPE; -+ if (!access_ok(VERIFY_READ, buffer, count)) -+ return -EFAULT; -+ // exit if break flag is set -+ if(break_flg) { -+ return count; -+ } -+ // wait until buffers are not free -+ if((buff_flg1 == 1)&&(buff_flg2 == 1)) { -+ wari_flg = 1; -+ i = 0; -+ while(wari_flg) { -+ // sound play already done? -+ if(abnml_flg) { -+ break; -+ } -+ // sleep until buffer is not full -+ ret = interruptible_sleep_on_timeout(&int_wq,WAIT_TIMEOUT); -+ if(ret == 0) { -+ break; -+ } -+ // check Ctrl-C -+ if (signal_pending(current)) { -+ voy_break(); -+ return -ERESTARTSYS; -+ } -+ i++; -+ if(i > 10000000) { -+ printk("DMA endcheck-1 error\n"); -+ voy_break(); -+ return -EFAULT; -+ } -+ } -+ } -+ data_size = count; -+ // multiple transfer -+ if(data_size >= next_size) { -+ // until play data is larger than buffer -+ while(data_size >= next_size) { -+ // buffer 1 is free -+ if((next_write == 1)&&(buff_flg1 == 0)) { -+ // copy data to VRAM -+ copy_from_user((long *)(VOYAGER_SOUND_BUF1+VOYAGER_SOUND_SIZE-next_size), -+ (long *)buffer,next_size); -+ // buffer1 used -+ buff_flg1 = 1; -+ next_write = 2; -+ // update pointer -+ buffer += next_size; -+ // decrease remained play data -+ data_size -= next_size; -+ // set remained buffer size -+ next_size = VOYAGER_SOUND_SIZE; -+ // kick DMA again when data is not enough -+ if(abnml_flg == 1) { -+ dma2_queue_buffer(sh7751_dmasound_play_irq, -+ VOYAGER_SOUND_BUF1,dma_req[0]); -+ dma2_start(sh7751_dmasound_play_irq); -+ abnml_flg = 0; -+ } -+ } -+ // buffer 2 is free -+ else if((next_write == 2)&&(buff_flg2 == 0)) { -+ // copy data to VRAM -+ copy_from_user((long *)(VOYAGER_SOUND_BUF2+VOYAGER_SOUND_SIZE-next_size), -+ (long *)buffer,next_size); -+ //buffer 2 used -+ buff_flg2 = 1; -+ next_write = 1; -+ // update pointer -+ buffer += next_size; -+ // decrease remained play data -+ data_size -= next_size; -+ // set remained buffer size -+ next_size = VOYAGER_SOUND_SIZE; -+ // kick DMA again when data is not enough -+ if(abnml_flg == 1) { -+ dma2_queue_buffer(sh7751_dmasound_play_irq, -+ VOYAGER_SOUND_BUF2,dma_req[1]); -+ dma2_start(sh7751_dmasound_play_irq); -+ abnml_flg = 0; -+ } -+ } -+ // first time? -+ if(first_flg == 0) { -+ //buffer 1 is full?(buffer 1 is used at first) -+ if(buff_flg1 == 1) { -+ // request DMA -+ dma2_queue_buffer(sh7751_dmasound_play_irq, -+ VOYAGER_SOUND_BUF1, -+ VOYAGER_SOUND_SIZE/4); -+ // start play on 8051 -+ data = 0x01; -+ command_8051(0x07,&data,&data2); -+ // start DMA transfer -+ dma2_start(sh7751_dmasound_play_irq); -+ // set first flag -+ first_flg = 1; -+ } -+ } -+ // wait until 2 buffer are full -+ if((buff_flg1 == 1)&&(buff_flg2 == 1)) { -+ wari_flg = 1; -+ i = 0; -+ while(wari_flg) { -+ // sound play already done? -+ if(abnml_flg) { -+ break; -+ } -+ // sleep until buffer is not full -+ ret = interruptible_sleep_on_timeout(&int_wq,WAIT_TIMEOUT); -+ if(ret == 0) { -+ break; -+ } -+ // check Ctrl-C -+ if (signal_pending(current)) { -+ voy_break(); -+ return -ERESTARTSYS; -+ } -+ i++; -+ if(i > 10000000) { -+ printk("DMA endcheck-2 error\n"); -+ voy_break(); -+ return -EFAULT; -+ } -+ } -+ } -+ } -+ } -+ // play data size is less than remained buffer size -+ if((data_size != 0)&&(data_size < next_size)) { -+ // buffer 1 is free -+ if((next_write == 1)&&(buff_flg1 == 0)) { -+ // copy data to VRAM -+ copy_from_user((long *)(VOYAGER_SOUND_BUF1+VOYAGER_SOUND_SIZE-next_size), -+ (void *)buffer,data_size); -+ // reset buffer remain size -+ next_size -= data_size; -+ // buffer is full? -+ if(next_size == 0) { -+ //buffer1 used -+ buff_flg1 = 1; -+ next_write = 2; -+ // reset buffer remain size -+ next_size = VOYAGER_SOUND_SIZE; -+ // kick DMA again when data is not enough -+ if(abnml_flg == 1) { -+ dma2_queue_buffer(sh7751_dmasound_play_irq, -+ VOYAGER_SOUND_BUF1,dma_req[0]); -+ dma2_start(sh7751_dmasound_play_irq); -+ abnml_flg = 0; -+ } -+ } -+ } -+ //buffer 2 is free -+ else if((next_write == 2)&&(buff_flg2 == 0)) { -+ // copy data to VRAM -+ copy_from_user((long *)(VOYAGER_SOUND_BUF2+VOYAGER_SOUND_SIZE-next_size), -+ (void *)buffer,data_size); -+ // reset buffer remained size -+ next_size -= data_size; -+ // buffer is full? -+ if(next_size == 0) { -+ //buffer2 used -+ buff_flg2 = 1; -+ next_write = 1; -+ // reset buffer remained size -+ next_size = VOYAGER_SOUND_SIZE; -+ // kick DMA again when data is not enough -+ if(abnml_flg == 1) { -+ dma2_queue_buffer(sh7751_dmasound_play_irq, -+ VOYAGER_SOUND_BUF2,dma_req[1]); -+ dma2_start(sh7751_dmasound_play_irq); -+ abnml_flg = 0; -+ } -+ } -+ } -+ } -+ // is it first time? -+ if(first_flg == 0) { -+ // buffer 1 is full(buffer1 is used first at first time) -+ if(buff_flg1 == 1) { -+ // DMA request -+ dma2_queue_buffer(sh7751_dmasound_play_irq, -+ VOYAGER_SOUND_BUF1, -+ VOYAGER_SOUND_SIZE/4); -+ // start play on 8051 -+ data = 0x01; -+ command_8051(0x07,&data,&data2); -+ dma2_start(sh7751_dmasound_play_irq); -+ // set first flag -+ first_flg = 1; -+ } -+ } -+ return(count); -+} -+ -+// polling - not used -+static unsigned int voyagergx_poll(struct file *file, -+ struct poll_table_struct *wait) -+{ -+ return 0; -+} -+ -+// mmap - not used -+static int voyagergx_mmap(struct file *file, struct vm_area_struct *vma) -+{ -+ return 0; -+} -+ -+// I/O control -+// operation for change data type and volume -+static int voyagergx_ioctl(struct inode *inode, struct file *file, -+ unsigned int cmd, unsigned long arg) -+{ -+ struct voyagergx_state *s = (struct voyagergx_state *)file->private_data; -+ int data,data2,rate; -+ -+ -+ switch (cmd) { -+//Sound Stop control -+ case -1: -+ voy_break(); -+ return 0; -+ case OSS_GETVERSION: -+ return put_user(SOUND_VERSION, (int *) arg); -+ -+ case SNDCTL_DSP_SYNC: -+ return 0; -+ -+ case SNDCTL_DSP_SETDUPLEX: -+ return 0; -+ -+ case SNDCTL_DSP_GETCAPS: -+ return put_user(DSP_CAP_DUPLEX | DSP_CAP_REALTIME | -+ DSP_CAP_TRIGGER | DSP_CAP_MMAP, (int *)arg); -+ -+ case SNDCTL_DSP_RESET: -+ return 0; -+ -+ case SNDCTL_DSP_SPEED: // set sampling rate -+ if((*(int *)arg <= 0xbb80)&&(*(int *)arg >= 0x1b80)) { -+ setting.rate = *(int *)arg; -+ } -+ if(setting.ch == 0) { -+ rate = setting.rate / 2; -+ } -+ else { -+ rate = setting.rate; -+ } -+ return setting.rate; -+ -+ case SNDCTL_DSP_STEREO: //set # of play channel(stereo or mono) -+ setting.ch = *(int *)arg; -+ // set # of channel for 8051 -+ data = setting.ch; -+ command_8051(0x05,&data,&data2); -+ dma2_set_device(sh7751_dmasound_play_irq); -+ return(setting.ch); -+ -+ case SNDCTL_DSP_CHANNELS: -+ return 0; -+ -+ case SNDCTL_DSP_GETFMTS: // set play data format(8bit or 16bit) -+ if(setting.fmt == 16) { -+ arg = (unsigned long)AFMT_S16_LE; -+ } -+ else { -+ arg = (unsigned long)AFMT_U8; -+ } -+ return 0; -+ -+ case SNDCTL_DSP_SETFMT: // set play data format(8bit or 16bit) -+ if(*(int *)arg == AFMT_S16_LE) { -+ setting.fmt = 16; -+ } -+ else { -+ setting.fmt = 8; -+ } -+ return 0; -+ -+ case SNDCTL_DSP_POST: -+ return 0; -+ -+ case SNDCTL_DSP_GETTRIGGER: -+ return 0; -+ -+ case SNDCTL_DSP_SETTRIGGER: -+ return 0; -+ -+ case SNDCTL_DSP_GETOSPACE: -+ return 0; -+ -+ case SNDCTL_DSP_GETISPACE: -+ return 0; -+ -+ case SNDCTL_DSP_NONBLOCK: -+ return 0; -+ -+ case SNDCTL_DSP_GETODELAY: -+ return 0; -+ -+ case SNDCTL_DSP_GETIPTR: -+ return 0; -+ -+ case SNDCTL_DSP_GETOPTR: -+ return 0; -+ -+ case SNDCTL_DSP_GETBLKSIZE: -+ return 0; -+ -+ case SNDCTL_DSP_SETFRAGMENT: -+ return 0; -+ -+ case SNDCTL_DSP_SUBDIVIDE: -+ return 0; -+ -+ case SOUND_PCM_READ_RATE: -+ return 0; -+ -+ case SOUND_PCM_READ_CHANNELS: -+ return 0; -+ -+ case SOUND_PCM_READ_BITS: -+ return 0; -+ -+ case SOUND_PCM_WRITE_FILTER: -+ case SNDCTL_DSP_SETSYNCRO: -+ case SOUND_PCM_READ_FILTER: -+ return -EINVAL; -+ } -+ -+ return mixdev_ioctl(&s->codec, cmd, arg); -+} -+ -+// open -+// flag initialization -+// stop 8051 to play(it will be started by first write) -+static int voyagergx_open(struct inode *inode, struct file *file) -+{ -+struct voyagergx_state *s = &voyagergx_state; -+int data,data2; -+ -+ file->private_data = s; -+ -+ s->open_mode |= file->f_mode & (FMODE_READ | FMODE_WRITE); -+ //head transferflag clear -+ first_flg = 0; -+ //last transfer flag clear -+ last_flg = 0; -+ //buffer flag clear -+ buff_flg1 = buff_flg2 = 0; -+ // buffer 1 is first -+ proc_flg = 1; -+ // reset buffer remained size -+ next_size = VOYAGER_SOUND_SIZE; -+ // initialize DMA transfer size -+ dma_req[0] = VOYAGER_SOUND_SIZE/4; -+ dma_req[1] = VOYAGER_SOUND_SIZE/4; -+ // clear break flag -+ break_flg = 0; -+ // clear cancel play flag -+ abnml_flg = 0; -+ // initialize # of write buffer -+ next_write = 1; -+ // start play on 8051 -+ data = 0x00; -+ command_8051(0x07,&data,&data2); -+ -+ return 0; -+} -+ -+// release(close) -+// play again if data remains in buffer -+// stop DMA -+// stop 8051 -+static int voyagergx_release(struct inode *inode, struct file *file) -+{ -+int data,data2,i; -+int ret; -+ -+ // stop if break flag is set -+ if(break_flg) { -+ return 0; -+ } -+ // wait until buffer is not full -+ if((buff_flg1 == 1)&&(buff_flg2 == 1)) { -+ wari_flg = 1; -+ i = 0; -+ while(wari_flg) { -+ // sound play already done? -+ if(abnml_flg) { -+ break; -+ } -+ // sleep until buffer is not full -+ ret = interruptible_sleep_on_timeout(&int_wq,WAIT_TIMEOUT); -+ if(ret == 0) { -+ break; -+ } -+ // check Ctrl-C -+ if (signal_pending(current)) { -+ voy_break(); -+ return -ERESTARTSYS; -+ } -+ i++; -+ if(i > 10000000) { -+ printk("DMA endcheck-3 error\n"); -+ voy_break(); -+ return -EFAULT; -+ } -+ } -+ } -+ // exit if size is less than 4 -+ if((VOYAGER_SOUND_SIZE - next_size) < 4) { -+ voy_break(); -+ return 0; -+ } -+ // buffer is not full? -+ if(next_size != 0) { -+ -+ // first time? -+ if(first_flg == 0) { -+ // no data -+ if(next_size == VOYAGER_SOUND_SIZE) { -+ // exit -+ voy_break(); -+ return 0; -+ } -+ // buffer 1 used? -+ if(proc_flg == 1) { -+ dma2_queue_buffer(sh7751_dmasound_play_irq, -+ VOYAGER_SOUND_BUF1, -+ (VOYAGER_SOUND_SIZE-next_size)/4); -+ // set last judgement flag -+ last_flg = 1; -+ } -+ // start play on 8051 -+ data = 0x01; -+ command_8051(0x07,&data,&data2); -+ dma2_start(sh7751_dmasound_play_irq); -+ } -+ // sound play in case that data is less than a buffer -+ else { -+ if(proc_flg == 2) { -+ dma_req[0] = (VOYAGER_SOUND_SIZE-next_size)/4; -+ buff_flg1 = 1; -+ // set last judgement flag -+ last_flg = 1; -+ // kick dma again if data is not enough -+ if(abnml_flg == 1) { -+ dma2_queue_buffer(sh7751_dmasound_play_irq, -+ VOYAGER_SOUND_BUF1,dma_req[0]); -+ dma2_start(sh7751_dmasound_play_irq); -+ abnml_flg = 0; -+ } -+ } -+ else { -+ // DMA request -+ dma_req[1] = (VOYAGER_SOUND_SIZE-next_size)/4; -+ buff_flg2 = 1; -+ // set last judgement flag -+ last_flg = 1; -+ // kick dma again if data is not enough -+ if(abnml_flg == 1) { -+ dma2_queue_buffer(sh7751_dmasound_play_irq, -+ VOYAGER_SOUND_BUF2,dma_req[1]); -+ dma2_start(sh7751_dmasound_play_irq); -+ abnml_flg = 0; -+ } -+ } -+ } -+ } -+ // wait for all sound play(transfer) -+ while(1) { -+ if(abnml_flg) { -+ break; -+ } -+ // exit if last judgement flag is 0 -+ if(last_flg == 0) { -+ break; -+ } -+ wari_flg = 1; -+ i = 0; -+ while(wari_flg) { -+ // sound play already done? -+ if(abnml_flg) { -+ break; -+ } -+ // exit if last judgement flag is 0 -+ if(last_flg == 0) { -+ break; -+ } -+ // sleep until buffer is not full -+ ret = interruptible_sleep_on_timeout(&int_wq,WAIT_TIMEOUT); -+ if(ret == 0) { -+ voy_break(); -+ return -EFAULT; -+ } -+ // check Ctrl-C -+ if (signal_pending(current)) { -+ voy_break(); -+ return -ERESTARTSYS; -+ } -+ i++; -+ if(i > 10000000) { -+ printk("DMA endcheck-last error\n"); -+ voy_break(); -+ return -EFAULT; -+ } -+ } -+ } -+ // end -+ voy_break(); -+ -+ return 0; -+} -+ -+static /*const */ struct file_operations voyagergx_audio_fops = { -+ owner: THIS_MODULE, -+ llseek: voyagergx_llseek, -+ read: voyagergx_read, -+ write: voyagergx_write, -+ poll: voyagergx_poll, -+ ioctl: voyagergx_ioctl, -+ mmap: voyagergx_mmap, -+ open: voyagergx_open, -+ release: voyagergx_release, -+}; -+ -+ -+/* --------------------------------------------------------------------- */ -+MODULE_AUTHOR("Atom Create Engineering Co.,Ltd."); -+MODULE_DESCRIPTION("DSP audio and mixer driver for Silicon Motion VoyagerGX audio device"); -+ -+/* --------------------------------------------------------------------- */ -+ -+// probe -+// driver initialization -+// codec initialization -+// check ac97 chip# -+static int __devinit voyagergx_probe(void) -+{ -+struct voyagergx_state *s = &voyagergx_state; -+int val; -+ -+ memset(s, 0, sizeof(struct voyagergx_state)); -+ -+ init_MUTEX(&s->open_sem); -+ s->codec.private_data = s; -+ s->codec.id = 0; -+ s->codec.codec_read = rdcodec; -+ s->codec.codec_write = wrcodec; -+ s->codec.codec_wait = NULL; -+ -+ /* register devices */ -+ -+ if ((s->dev_audio = register_sound_dsp(&voyagergx_audio_fops, -1)) < 0) -+ goto err_dev1; -+ if ((s->codec.dev_mixer = -+ register_sound_mixer(&voyagergx_mixer_fops, -1)) < 0) -+ goto err_dev2; -+ -+ -+ /* codec init */ -+ if (!ac97_probe_codec(&s->codec)) -+ goto err_dev3; -+ -+ s->codec_base_caps = rdcodec(&s->codec, AC97_RESET); -+ s->codec_ext_caps = rdcodec(&s->codec, AC97_EXTENDED_ID); -+ info("AC'97 Base/Extended ID = %04x/%04x", -+ s->codec_base_caps, s->codec_ext_caps); -+ -+ s->codec.supported_mixers |= SOUND_MASK_ALTPCM; -+ val = 0x4343; -+ mixdev_ioctl(&s->codec, SOUND_MIXER_WRITE_ALTPCM, -+ (unsigned long) &val); -+ -+ if (!(s->codec_ext_caps & AC97_EXTID_VRA)) { -+ // codec does not support VRA -+ s->no_vra = 1; -+ } else if (!vra) { -+ // Boot option says disable VRA -+ u16 ac97_extstat = rdcodec(&s->codec, AC97_EXTENDED_STATUS); -+ wrcodec(&s->codec, AC97_EXTENDED_STATUS, -+ ac97_extstat & ~AC97_EXTSTAT_VRA); -+ s->no_vra = 1; -+ } -+ if (s->no_vra) -+ info("no VRA, interpolating and decimating"); -+ -+ // set 48k for sampling rate -+ setting.rate = 48000; -+ wrcodec(&s->codec, 0x2a, 1); -+ wrcodec(&s->codec, 0x2c, setting.rate); -+ //volume set -+ wrcodec(&s->codec, 2, 0); -+ wrcodec(&s->codec, 24, 0); -+ wrcodec(&s->codec, 22, 0); -+ -+ return 0; -+ -+ err_dev3: -+ unregister_sound_mixer(s->codec.dev_mixer); -+ err_dev2: -+ unregister_sound_dsp(s->dev_audio); -+ err_dev1: -+ return -1; -+} -+ -+// remove procedure -+static void __devinit voyagergx_remove(void) -+{ -+ struct voyagergx_state *s = &voyagergx_state; -+ -+ if (!s) -+ return; -+ unregister_sound_dsp(s->dev_audio); -+ unregister_sound_mixer(s->codec.dev_mixer); -+} -+ -+// initilization -+static int __init init_voyagergx(void) -+{ -+unsigned long value; -+int err; -+ -+ info("sakuma@ace-jp.com, built " __TIME__ " on " __DATE__); -+ -+ // set GPIO for ac97 & 8051 -+ value = *(volatile unsigned long *)(GPIO_MUX_LOW); -+ value |= GPIO_MUX_LOW_AC97 | GPIO_MUX_LOW_8051; -+ *(volatile unsigned long *)(GPIO_MUX_LOW) = value; -+ -+ // stop DMA -+ dma2_stop(sh7751_dmasound_play_irq); -+ -+ //DMA interrupt request -+ err = request_dma2(sh7751_dmasound_play_irq, "voyager DMA",do_irq); -+ if (err) { -+ return 0; -+ } -+ -+ // enalbe ac97 interrupt -+ value = *(volatile unsigned long *)(VOYAGER_INT_MASK); -+ value |= VOYAGER_INT_MASK_AC; -+ *(volatile unsigned long *)(VOYAGER_INT_MASK) = value; -+ -+ // power on ac97 -+ value = *(volatile unsigned long *)(POWER_MODE0_GATE); -+ value |= POWER_MODE0_GATE_AC; -+ *(volatile unsigned long *)(POWER_MODE0_GATE) = value; -+ -+ // power on ac97 -+ value = *(volatile unsigned long *)(POWER_MODE1_GATE); -+ value |= POWER_MODE1_GATE_AC; -+ *(volatile unsigned long *)(POWER_MODE1_GATE) = value; -+ -+ // enable ac97 -+ value = *(volatile unsigned long *)(AC97_CONTROL_STATUS); -+ value |= 0x0000000F; -+ *(volatile unsigned long *)(AC97_CONTROL_STATUS) = value; -+ // wait for a while -+ mdelay(2); -+ // exit reset -+ value &= 0xFFFFFFF9; -+ *(volatile unsigned long *)(AC97_CONTROL_STATUS) = value; -+ -+ // tag initialization(enable stot1-4) -+ value = *(volatile unsigned long *)(AC97_TX_SLOT0); -+ value |= 0x0000F800; -+ *(volatile unsigned long *)(AC97_TX_SLOT0) = value; -+ -+ // mono 16bit 48k -+ setting.ch = 0; -+ setting.fmt = 16; -+ setting.rate = 48000; -+ -+ // DMA initialization -+ dma2_set_device(sh7751_dmasound_play_irq); -+ -+ // 8051 initialization -+ init_8051(); -+ -+ return voyagergx_probe(); -+} -+ -+// unload -+static void __exit cleanup_voyagergx(void) -+{ -+ info("unloading"); -+ voyagergx_remove(); -+} -+ -+module_init(init_voyagergx); -+module_exit(cleanup_voyagergx); -+MODULE_LICENSE("GPL"); -diff -ruN linux-2.6.17-vanilla/sound/oss/voyagergx_sound.h linux-2.6.17/sound/oss/voyagergx_sound.h ---- linux-2.6.17-vanilla/sound/oss/voyagergx_sound.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/oss/voyagergx_sound.h 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,4 @@ -+#define VOYAGER_8051_COMMAND (VOYAGER_BASE + 0x000c3ff0) -+#define VOYAGER_8051_STATUS (VOYAGER_BASE + 0x000c3ff2) -+#define VOYAGER_8051_DATA (VOYAGER_BASE + 0x000c3ff4) -+#define VOYAGER_8051_FIFO (VOYAGER_BASE + 0x000c3600) -diff -ruN linux-2.6.17-vanilla/sound/sh/CVS/Entries linux-2.6.17/sound/sh/CVS/Entries ---- linux-2.6.17-vanilla/sound/sh/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/sh/CVS/Entries 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,5 @@ -+/Kconfig/1.2/Mon Jun 5 15:29:08 2006// -+/Makefile/1.1/Sun Jun 4 12:13:05 2006// -+/aica.c/1.5/Wed Jul 12 16:52:06 2006// -+/aica.h/1.4/Wed Jul 12 16:52:06 2006// -+D -diff -ruN linux-2.6.17-vanilla/sound/sh/CVS/Repository linux-2.6.17/sound/sh/CVS/Repository ---- linux-2.6.17-vanilla/sound/sh/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/sh/CVS/Repository 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+linux/sound/sh -diff -ruN linux-2.6.17-vanilla/sound/sh/CVS/Root linux-2.6.17/sound/sh/CVS/Root ---- linux-2.6.17-vanilla/sound/sh/CVS/Root 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/sh/CVS/Root 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1 @@ -+:pserver:anonymous@linuxsh.cvs.sourceforge.net:/cvsroot/linuxsh -diff -ruN linux-2.6.17-vanilla/sound/sh/Kconfig linux-2.6.17/sound/sh/Kconfig ---- linux-2.6.17-vanilla/sound/sh/Kconfig 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/sh/Kconfig 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,15 @@ -+menu "SuperH devices" -+ depends on SND!=n && SUPERH -+ -+config SND_AICA -+ tristate "Yamaha AICA sound for SEGA Dreamcast" -+ depends on SND -+ depends on SH_DREAMCAST -+ select SND_PCM -+ help -+ Say Y here to include support for sound on your SEGA Dreamcast -+ -+ To compile this driver as a module, choose M here: the module -+ will be called snd-aica. -+ -+endmenu -diff -ruN linux-2.6.17-vanilla/sound/sh/Makefile linux-2.6.17/sound/sh/Makefile ---- linux-2.6.17-vanilla/sound/sh/Makefile 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/sh/Makefile 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,4 @@ -+ -+snd-aica-objs := aica.o -+obj-$(CONFIG_SND_AICA) += snd-aica.o -+ -diff -ruN linux-2.6.17-vanilla/sound/sh/aica.c linux-2.6.17/sound/sh/aica.c ---- linux-2.6.17-vanilla/sound/sh/aica.c 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/sh/aica.c 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,711 @@ -+/* -+* This code is licenced under -+* the General Public Licence -+* version 2 -+* -+* Copyright Adrian McMenamin 2005, 2006 -+* <adrian@mcmen.demon.co.uk> -+* See also http://newgolddream.dyndns.info/cgi-bin/cvsweb -+* -+* -+* This program is free software; you can redistribute it and/or modify -+* it under the terms of version 2 of the GNU General Public License as published by -+* the Free Software Foundation. -+* -+* This program is distributed in the hope that it will be useful, -+* but WITHOUT ANY WARRANTY; without even the implied warranty of -+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+* GNU General Public License for more details. -+* -+* You should have received a copy of the GNU General Public License -+* along with this program; if not, write to the Free Software -+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+* -+*/ -+ -+#include <linux/init.h> -+#include <linux/jiffies.h> -+#include <linux/slab.h> -+#include <linux/time.h> -+#include <linux/wait.h> -+#include <linux/moduleparam.h> -+#include <linux/platform_device.h> -+#include <linux/firmware.h> -+#include <linux/timer.h> -+#include <linux/delay.h> -+#include <linux/workqueue.h> -+#include <sound/driver.h> -+#include <sound/core.h> -+#include <sound/control.h> -+#include <sound/pcm.h> -+#include <sound/initval.h> -+#include <sound/info.h> -+#include <asm/io.h> -+#include <asm/dma.h> -+#include "aica.h" -+ -+MODULE_AUTHOR("Adrian McMenamin <adrian@mcmen.demon.co.uk>"); -+MODULE_DESCRIPTION("Dreamcast AICA sound (pcm) driver"); -+MODULE_LICENSE("GPL"); -+MODULE_SUPPORTED_DEVICE("{{Yamaha/SEGA, AICA}}"); -+ -+/* Command values */ -+#define AICA_CMD_KICK 0x80000000 -+#define AICA_CMD_NONE 0 -+#define AICA_CMD_START 1 -+#define AICA_CMD_STOP 2 -+#define AICA_CMD_VOL 3 -+ -+/* Sound modes */ -+#define SM_8BIT 1 -+#define SM_16BIT 0 -+#define SM_ADPCM 2 -+ -+/* Buffer and period size */ -+#define AICA_BUFFER_SIZE 0x8000 -+#define AICA_PERIOD_SIZE 0x800 -+#define AICA_PERIOD_NUMBER 16 -+ -+#define AICA_CHANNEL0_OFFSET 0x11000 -+#define AICA_CHANNEL1_OFFSET 0x21000 -+#define CHANNEL_OFFSET 0x10000 -+ -+#define AICA_DMA_CHANNEL 0 -+#define AICA_DMA_MODE 5 -+ -+#define SND_AICA_DRIVER "AICA" -+ -+struct aica_channel { -+ uint32_t cmd; /* Command ID */ -+ uint32_t pos; /* Sample position */ -+ uint32_t length; /* Sample length */ -+ uint32_t freq; /* Frequency */ -+ uint32_t vol; /* Volume 0-255 */ -+ uint32_t pan; /* Pan 0-255 */ -+ uint32_t sfmt; /* Sound format */ -+ uint32_t flags; /* Bit flags */ -+}; -+ -+struct snd_card_aica { -+ struct snd_card *card; -+ struct aica_channel *channel; -+ snd_pcm_substream_t *substream; -+ int clicks; -+ int current_period; -+ struct timer_list timer; -+ int master_volume; -+ int dma_started; -+}; -+ -+/* module parameters */ -+#define CARD_NAME "AICA" -+static int index = -1; -+static char *id; -+static int enable = 1; -+module_param(index, int, 0444); -+MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard."); -+module_param(id, charp, 0444); -+MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard."); -+module_param(enable, bool, 0644); -+MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard."); -+ -+/* Use workqueue */ -+static struct work_struct spu_dma_work; -+static struct workqueue_struct *aica_queue; -+ -+/* Simple platform device */ -+static struct platform_device *pd; -+static struct resource aica_memory_space[2] = { -+ { -+ .name = "AICA ARM CONTROL", -+ .start = ARM_RESET_REGISTER, -+ .flags = IORESOURCE_MEM, -+ .end = ARM_RESET_REGISTER + 3, -+ }, -+ { -+ .name = "AICA Sound RAM", -+ .start = AICA_MEMORY_BASE, -+ .flags = IORESOURCE_MEM, -+ .end = AICA_MEMORY_BASE + AICA_MEMORY_SIZE - 1, -+ }, -+}; -+ -+/* SPU specific functions */ -+/* spu_write_wait - wait for G2-SH FIFO to clear */ -+static inline void spu_write_wait(void) -+{ -+ int time_count; -+ time_count = 0; -+ while (1) { -+ if (!(readl(G2_FIFO) & 0x11)) -+ break; -+ /* To ensure hardware failure doesn't wedge kernel */ -+ time_count++; -+ if (time_count > 0x10000) -+ break; -+ } -+} -+ -+/* spu_memset - write to memory in SPU address space */ -+static void spu_memset(uint32_t toi, uint32_t what, int length) -+{ -+ int i; -+ snd_assert(length % 4 == 0, return); -+ spu_write_wait(); -+ for (i = 0; i < length; i++) { -+ writel(what, toi + AICA_MEMORY_BASE); -+ toi++; -+ if (i && !(i % 8)) -+ spu_write_wait(); -+ } -+} -+ -+/* spu_memload - write to SPU address space */ -+static void spu_memload(uint32_t toi, void __iomem * from, int length) -+{ -+ uint32_t __iomem *froml = from; -+ uint32_t __iomem *to = (uint32_t __iomem *) (AICA_MEMORY_BASE + toi); -+ int i, val; -+ if (length % 4) -+ length = (length / 4) + 1; -+ else -+ length = length / 4; -+ spu_write_wait(); -+ for (i = 0; i < length; i++) { -+ val = *froml; -+ writel(val, to); -+ froml++; -+ to++; -+ if (i && !(i % 8)) -+ spu_write_wait(); -+ } -+} -+ -+/* spu_disable - set spu registers to stop sound output */ -+static void spu_disable(void) -+{ -+ int i; -+ uint32_t regval; -+ spu_write_wait(); -+ regval = readl(ARM_RESET_REGISTER); -+ regval |= 1; -+ spu_write_wait(); -+ writel(regval, ARM_RESET_REGISTER); -+ for (i = 0; i < 64; i++) { -+ spu_write_wait(); -+ regval = readl(AICA_REGISTER_BASE + (i * 0x80)); -+ regval = (regval & ~0x4000) | 0x8000; -+ spu_write_wait(); -+ writel(regval, AICA_REGISTER_BASE + (i * 0x80)); -+ } -+} -+ -+/* spu_enable - set spu registers to enable sound output */ -+static void spu_enable(void) -+{ -+ uint32_t regval = readl(ARM_RESET_REGISTER); -+ regval &= ~1; -+ spu_write_wait(); -+ writel(regval, ARM_RESET_REGISTER); -+} -+ -+/* -+ * Halt the sound processor, clear the memory, -+ * load some default ARM7 code, and then restart ARM7 -+*/ -+static void spu_reset(void) -+{ -+ spu_disable(); -+ spu_memset(0, 0, 0x200000 / 4); -+ /* Put ARM7 in endless loop */ -+ ctrl_outl(0xea000002, AICA_MEMORY_BASE); -+ spu_enable(); -+} -+ -+/* aica_chn_start - write to spu to start playback */ -+static void aica_chn_start(void) -+{ -+ spu_write_wait(); -+ writel(AICA_CMD_KICK | AICA_CMD_START, (uint32_t *) AICA_CONTROL_POINT); -+} -+ -+/* aica_chn_halt - write to spu to halt playback */ -+static void aica_chn_halt(void) -+{ -+ spu_write_wait(); -+ writel(AICA_CMD_KICK | AICA_CMD_STOP, (uint32_t *) AICA_CONTROL_POINT); -+} -+ -+/* ALSA code below */ -+static struct snd_pcm_hardware snd_pcm_aica_playback_hw = { -+ .info = (SNDRV_PCM_INFO_NONINTERLEAVED), -+ .formats = -+ (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE | -+ SNDRV_PCM_FMTBIT_IMA_ADPCM), -+ .rates = SNDRV_PCM_RATE_8000_48000, -+ .rate_min = 8000, -+ .rate_max = 48000, -+ .channels_min = 1, -+ .channels_max = 2, -+ .buffer_bytes_max = AICA_BUFFER_SIZE, -+ .period_bytes_min = AICA_PERIOD_SIZE, -+ .period_bytes_max = AICA_PERIOD_SIZE, -+ .periods_min = AICA_PERIOD_NUMBER, -+ .periods_max = AICA_PERIOD_NUMBER, -+}; -+ -+static int aica_dma_transfer(int channels, int buffer_size, -+ struct snd_pcm_substream *substream) -+{ -+ int q, err, period_offset; -+ struct snd_card_aica *dreamcastcard; -+ struct snd_pcm_runtime *runtime; -+ err = 0; -+ dreamcastcard = substream->pcm->private_data; -+ period_offset = dreamcastcard->clicks; -+ period_offset %= (AICA_PERIOD_NUMBER / channels); -+ runtime = substream->runtime; -+ for (q = 0; q < channels; q++) { -+ err = dma_xfer(AICA_DMA_CHANNEL, -+ (unsigned long)(runtime->dma_area + -+ (AICA_BUFFER_SIZE * q) / -+ channels + -+ AICA_PERIOD_SIZE * -+ period_offset), -+ AICA_CHANNEL0_OFFSET + q * CHANNEL_OFFSET + -+ AICA_PERIOD_SIZE * period_offset, -+ buffer_size / channels, AICA_DMA_MODE); -+ if (unlikely(err < 0)) -+ break; -+ dma_wait_for_completion(AICA_DMA_CHANNEL); -+ } -+ return err; -+} -+ -+static void startup_aica(struct snd_card_aica *dreamcastcard) -+{ -+ spu_memload(AICA_CHANNEL0_CONTROL_OFFSET, -+ (uint8_t *) dreamcastcard->channel, -+ sizeof(struct aica_channel)); -+ aica_chn_start(); -+} -+ -+ -+static void execute_spu_dma(void *sstream) -+{ -+ int buffer_size; -+ struct snd_pcm_substream *substream; -+ struct snd_pcm_runtime *runtime; -+ struct snd_card_aica *dreamcastcard; -+ substream = sstream; -+ dreamcastcard = substream->pcm->private_data; -+ runtime = substream->runtime; -+ if (unlikely(dreamcastcard->dma_started == 0)) -+ { -+ buffer_size = frames_to_bytes(runtime, runtime->buffer_size); -+ if (runtime->channels > 1) -+ dreamcastcard->channel->flags |= 0x01; -+ aica_dma_transfer(runtime->channels, buffer_size, substream); -+ startup_aica(dreamcastcard); -+ dreamcastcard->clicks = -+ buffer_size / (AICA_PERIOD_SIZE * runtime->channels); -+ dreamcastcard->dma_started = 1; -+ } -+ else -+ { -+ aica_dma_transfer(runtime->channels, -+ AICA_PERIOD_SIZE * runtime->channels, substream); -+ snd_pcm_period_elapsed(dreamcastcard->substream); -+ dreamcastcard->clicks++; -+ dreamcastcard->clicks %= AICA_PERIOD_NUMBER; -+ mod_timer(&dreamcastcard->timer, jiffies+1); -+ } -+ -+} -+ -+static void aica_period_elapsed(unsigned long timer_var) -+{ -+ /*timer fuction - so cannot sleep */ -+ int play_period; -+ struct snd_pcm_runtime *runtime; -+ struct snd_pcm_substream *substream; -+ struct snd_card_aica *dreamcastcard; -+ substream = (struct snd_pcm_substream *)timer_var; -+ runtime = substream->runtime; -+ dreamcastcard = substream->pcm->private_data; -+ /* Have we played out an additional period? */ -+ play_period = -+ frames_to_bytes(runtime, -+ readl -+ (AICA_CONTROL_CHANNEL_SAMPLE_NUMBER)) / -+ AICA_PERIOD_SIZE; -+ if (play_period == dreamcastcard->current_period) { -+ /* reschedule the timer */ -+ mod_timer(&dreamcastcard->timer, jiffies+1); -+ return; -+ } -+ if (runtime->channels > 1) -+ dreamcastcard->current_period = play_period; -+ queue_work(aica_queue, &spu_dma_work); -+} -+ -+static int snd_aicapcm_pcm_open(struct snd_pcm_substream -+ *substream) -+{ -+ struct snd_pcm_runtime *runtime; -+ struct aica_channel *channel; -+ struct snd_card_aica *dreamcastcard; -+ if (!enable) -+ return -ENOENT; -+ dreamcastcard = substream->pcm->private_data; -+ channel = kmalloc(sizeof(struct aica_channel), GFP_KERNEL); -+ if (!channel) -+ return -ENOMEM; -+ /* set defaults for channel */ -+ channel->sfmt = SM_8BIT; -+ channel->cmd = AICA_CMD_START; -+ channel->vol = dreamcastcard->master_volume; -+ channel->pan = 0x80; -+ channel->pos = 0; -+ channel->flags = 0; /* default to mono */ -+ dreamcastcard->channel = channel; -+ runtime = substream->runtime; -+ runtime->hw = snd_pcm_aica_playback_hw; -+ spu_enable(); -+ dreamcastcard->clicks = 0; -+ dreamcastcard->current_period = 0; -+ dreamcastcard->dma_started = 0; -+ return 0; -+} -+ -+static int snd_aicapcm_pcm_close(struct snd_pcm_substream -+ *substream) -+{ -+ struct snd_card_aica *dreamcastcard = substream->pcm->private_data; -+ del_timer(&dreamcastcard->timer); -+ kfree(dreamcastcard->channel); -+ spu_disable(); -+ return 0; -+} -+ -+static int snd_aicapcm_pcm_hw_free(struct snd_pcm_substream -+ *substream) -+{ -+ /* Free the DMA buffer */ -+ return snd_pcm_lib_free_pages(substream); -+} -+ -+static int snd_aicapcm_pcm_hw_params(struct snd_pcm_substream -+ *substream, struct snd_pcm_hw_params -+ *hw_params) -+{ -+ /* Allocate a DMA buffer using ALSA built-ins */ -+ return -+ snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); -+} -+ -+static int snd_aicapcm_pcm_prepare(struct snd_pcm_substream -+ *substream) -+{ -+ struct snd_card_aica *dreamcastcard = substream->pcm->private_data; -+ if ((substream->runtime)->format == SNDRV_PCM_FORMAT_S16_LE) -+ dreamcastcard->channel->sfmt = SM_16BIT; -+ dreamcastcard->channel->freq = substream->runtime->rate; -+ dreamcastcard->substream = substream; -+ return 0; -+} -+ -+ -+ -+static void spu_begin_dma(struct snd_pcm_substream *substream) -+{ -+ /* Must be atomic */ -+ struct snd_card_aica *dreamcastcard; -+ struct snd_pcm_runtime *runtime; -+ runtime = substream->runtime; -+ dreamcastcard = substream->pcm->private_data; -+ /* Use queue to do the heavy lifting */ -+ INIT_WORK(&spu_dma_work, execute_spu_dma, substream); -+ queue_work(aica_queue, &spu_dma_work); -+ init_timer(&(dreamcastcard->timer)); -+ dreamcastcard->timer.data = (unsigned long)substream; -+ dreamcastcard->timer.function = aica_period_elapsed; -+ dreamcastcard->timer.expires = jiffies + 4; -+ add_timer(&(dreamcastcard->timer)); -+} -+ -+static int snd_aicapcm_pcm_trigger(struct snd_pcm_substream -+ *substream, int cmd) -+{ -+ struct snd_card_aica *dreamcastcard; -+ switch (cmd) { -+ case SNDRV_PCM_TRIGGER_START: -+ spu_begin_dma(substream); -+ break; -+ case SNDRV_PCM_TRIGGER_STOP: -+ dreamcastcard = substream->pcm->private_data; -+ if (dreamcastcard->timer.data) -+ del_timer(&dreamcastcard->timer); -+ aica_chn_halt(); -+ break; -+ default: -+ return -EINVAL; -+ } -+ return 0; -+} -+ -+static unsigned long snd_aicapcm_pcm_pointer(struct snd_pcm_substream -+ *substream) -+{ -+ return readl(AICA_CONTROL_CHANNEL_SAMPLE_NUMBER); -+} -+ -+static struct snd_pcm_ops snd_aicapcm_playback_ops = { -+ .open = snd_aicapcm_pcm_open, -+ .close = snd_aicapcm_pcm_close, -+ .ioctl = snd_pcm_lib_ioctl, -+ .hw_params = snd_aicapcm_pcm_hw_params, -+ .hw_free = snd_aicapcm_pcm_hw_free, -+ .prepare = snd_aicapcm_pcm_prepare, -+ .trigger = snd_aicapcm_pcm_trigger, -+ .pointer = snd_aicapcm_pcm_pointer, -+}; -+ -+/* TO DO: set up to handle more than one pcm instance */ -+static int __init snd_aicapcmchip(struct snd_card_aica -+ *dreamcastcard, int pcm_index) -+{ -+ struct snd_pcm *pcm; -+ int err; -+ /* AICA has no capture ability */ -+ err = -+ snd_pcm_new(dreamcastcard->card, "AICA PCM", pcm_index, 1, 0, &pcm); -+ if (unlikely(err < 0)) -+ return err; -+ pcm->private_data = dreamcastcard; -+ strcpy(pcm->name, "AICA PCM"); -+ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, -+ &snd_aicapcm_playback_ops); -+ /* Allocate the DMA buffers */ -+ err = -+ snd_pcm_lib_preallocate_pages_for_all(pcm, -+ SNDRV_DMA_TYPE_CONTINUOUS, -+ snd_dma_continuous_data -+ (GFP_KERNEL), -+ AICA_BUFFER_SIZE, -+ AICA_BUFFER_SIZE); -+ return err; -+} -+ -+/* Mixer controls */ -+static int aica_pcmswitch_info(struct snd_kcontrol *kcontrol, -+ struct snd_ctl_elem_info *uinfo) -+{ -+ uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; -+ uinfo->count = 1; -+ uinfo->value.integer.min = 0; -+ uinfo->value.integer.max = 1; -+ return 0; -+} -+ -+static int aica_pcmswitch_get(struct snd_kcontrol *kcontrol, -+ struct snd_ctl_elem_value *ucontrol) -+{ -+ ucontrol->value.integer.value[0] = 1; /* TO DO: Fix me */ -+ return 0; -+} -+ -+static int aica_pcmswitch_put(struct snd_kcontrol *kcontrol, -+ struct snd_ctl_elem_value *ucontrol) -+{ -+ if (ucontrol->value.integer.value[0] == 1) -+ return 0; /* TO DO: Fix me */ -+ else -+ aica_chn_halt(); -+ return 0; -+} -+ -+static int aica_pcmvolume_info(struct snd_kcontrol *kcontrol, -+ struct snd_ctl_elem_info *uinfo) -+{ -+ uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; -+ uinfo->count = 1; -+ uinfo->value.integer.min = 0; -+ uinfo->value.integer.max = 0xFF; -+ return 0; -+} -+ -+static int aica_pcmvolume_get(struct snd_kcontrol *kcontrol, -+ struct snd_ctl_elem_value *ucontrol) -+{ -+ struct snd_card_aica *dreamcastcard; -+ dreamcastcard = kcontrol->private_data; -+ if (unlikely(!dreamcastcard->channel)) -+ return -ETXTBSY; /* we've not yet been set up */ -+ ucontrol->value.integer.value[0] = dreamcastcard->channel->vol; -+ return 0; -+} -+ -+static int aica_pcmvolume_put(struct snd_kcontrol *kcontrol, -+ struct snd_ctl_elem_value *ucontrol) -+{ -+ struct snd_card_aica *dreamcastcard; -+ dreamcastcard = kcontrol->private_data; -+ if (unlikely(!dreamcastcard->channel)) -+ return -ETXTBSY; -+ if (unlikely(dreamcastcard->channel->vol == -+ ucontrol->value.integer.value[0])) -+ return 0; -+ dreamcastcard->channel->vol = ucontrol->value.integer.value[0]; -+ dreamcastcard->master_volume = ucontrol->value.integer.value[0]; -+ spu_memload(AICA_CHANNEL0_CONTROL_OFFSET, -+ (uint8_t *) dreamcastcard->channel, -+ sizeof(struct aica_channel)); -+ -+ return 1; -+} -+ -+static struct snd_kcontrol_new snd_aica_pcmswitch_control __devinitdata = { -+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, -+ .name = "PCM Playback Switch", -+ .index = 0, -+ .info = aica_pcmswitch_info, -+ .get = aica_pcmswitch_get, -+ .put = aica_pcmswitch_put -+}; -+ -+static struct snd_kcontrol_new snd_aica_pcmvolume_control __devinitdata = { -+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, -+ .name = "PCM Playback Volume", -+ .index = 0, -+ .info = aica_pcmvolume_info, -+ .get = aica_pcmvolume_get, -+ .put = aica_pcmvolume_put -+}; -+ -+static int load_aica_firmware(void) -+{ -+ int err; -+ const struct firmware *fw_entry; -+ err = 0; -+ spu_reset(); -+ err = request_firmware(&fw_entry, "aica_firmware.bin", &pd->dev); -+ if (unlikely(err)) -+ return err; -+ /* write firware into memory */ -+ spu_disable(); -+ spu_memload(0, fw_entry->data, fw_entry->size); -+ spu_enable(); -+ release_firmware(fw_entry); -+ return err; -+} -+ -+static int __devinit add_aicamixer_controls(struct snd_card_aica -+ *dreamcastcard) -+{ -+ int err; -+ err = snd_ctl_add -+ (dreamcastcard->card, -+ snd_ctl_new1(&snd_aica_pcmvolume_control, dreamcastcard)); -+ if (unlikely(err < 0)) -+ return err; -+ err = snd_ctl_add -+ (dreamcastcard->card, -+ snd_ctl_new1(&snd_aica_pcmswitch_control, dreamcastcard)); -+ if (unlikely(err < 0)) -+ return err; -+ return 0; -+} -+ -+static int snd_aica_remove(struct platform_device *devptr) -+{ -+ snd_card_free(platform_get_drvdata(devptr)); -+ platform_set_drvdata(devptr, NULL); -+ return 0; -+} -+ -+static int __init snd_aica_probe(struct platform_device *devptr) -+{ -+ int err; -+ struct snd_card_aica *dreamcastcard; -+ -+ dreamcastcard = kmalloc(sizeof(struct snd_card_aica), GFP_KERNEL); -+ if (unlikely(!dreamcastcard)) -+ return -ENOMEM; -+ dreamcastcard->card = -+ snd_card_new(index, SND_AICA_DRIVER, THIS_MODULE, 0); -+ if (unlikely(!dreamcastcard->card)) { -+ kfree(dreamcastcard); -+ return -ENODEV; -+ } -+ strcpy(dreamcastcard->card->driver, "snd_aica"); -+ strcpy(dreamcastcard->card->shortname, SND_AICA_DRIVER); -+ strcpy(dreamcastcard->card->longname, -+ "Yamaha AICA Super Intelligent Sound Processor for SEGA Dreamcast"); -+ /* Load the PCM 'chip' */ -+ err = snd_aicapcmchip(dreamcastcard, 0); -+ if (unlikely(err < 0)) -+ goto freedreamcast; -+ snd_card_set_dev(dreamcastcard->card, &devptr->dev); -+ dreamcastcard->channel = NULL; -+ /* Add basic controls */ -+ err = add_aicamixer_controls(dreamcastcard); -+ if (unlikely(err < 0)) -+ goto freedreamcast; -+ /* Register the card with ALSA subsystem */ -+ err = snd_card_register(dreamcastcard->card); -+ if (unlikely(err < 0)) -+ goto freedreamcast; -+ platform_set_drvdata(devptr, dreamcastcard->card); -+ aica_queue = create_workqueue("aica"); -+ if (unlikely(!aica_queue)) -+ goto freedreamcast; -+ snd_printk -+ ("ALSA Driver for Yamaha AICA Super Intelligent Sound Processor\n"); -+ return 0; -+ freedreamcast: -+ snd_card_free(dreamcastcard->card); -+ kfree(dreamcastcard); -+ return err; -+} -+ -+static struct platform_driver snd_aica_driver = { -+ .probe = snd_aica_probe, -+ .remove = snd_aica_remove, -+ .driver = { -+ .name = SND_AICA_DRIVER -+ }, -+}; -+ -+static int __init aica_init(void) { -+ int err; -+ err = platform_driver_register(&snd_aica_driver); -+ if (unlikely(err < 0)) return err; -+ pd = platform_device_register_simple(SND_AICA_DRIVER, -1, -+ aica_memory_space, 2); -+ if (unlikely(IS_ERR(pd))) { -+ platform_driver_unregister(&snd_aica_driver); -+ return PTR_ERR(pd); -+ } -+ err = load_aica_firmware(); -+ if (unlikely(err < 0)) { -+ platform_driver_unregister(&snd_aica_driver); -+ platform_device_unregister(pd); -+ return err; -+ } -+ return 0; -+} -+ -+static void __exit aica_exit(void) -+{ -+ /* Flush and destroy the aica kernel thread */ -+ destroy_workqueue(aica_queue); -+ platform_device_unregister(pd); -+ platform_driver_unregister(&snd_aica_driver); -+ /* Kill any sound still playing and reset ARM7 to safe state */ -+ spu_reset(); -+} -+ -+module_init(aica_init); -+module_exit(aica_exit); -+ -diff -ruN linux-2.6.17-vanilla/sound/sh/aica.h linux-2.6.17/sound/sh/aica.h ---- linux-2.6.17-vanilla/sound/sh/aica.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.17/sound/sh/aica.h 2006-07-12 16:54:27.000000000 +0000 -@@ -0,0 +1,44 @@ -+/* -+* This code is licenced under -+* the General Public Licence -+* version 2 -+* -+* Copyright Adrian McMenamin 2006 -+* <adrian@mcmen.demon.co.uk> -+* See also http://newgolddream.dyndns.info/cgi-bin/cvsweb -+* -+* -+* This program is free software; you can redistribute it and/or modify -+* it under the terms of version 2 of the GNU General Public License as published by -+* the Free Software Foundation. -+* -+* This program is distributed in the hope that it will be useful, -+* but WITHOUT ANY WARRANTY; without even the implied warranty of -+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+* GNU General Public License for more details. -+* -+* You should have received a copy of the GNU General Public License -+* along with this program; if not, write to the Free Software -+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+* -+*/ -+ -+#ifndef _ASM_DREAMCAST_AICA -+#define _ASM_DREAMCAST_AICA -+ -+#ifdef MACH_DREAMCAST -+/* SPU memory and register constants etc */ -+#define G2_FIFO 0xa05f688c -+#define AICA_MEMORY_BASE 0xA0800000 -+#define ARM_RESET_REGISTER 0xA0702C00 -+#define AICA_REGISTER_BASE 0xA0700000 -+ -+/* AICA channels stuff */ -+#define AICA_CONTROL_POINT 0xA0810000 -+#define AICA_CONTROL_CHANNEL_SAMPLE_NUMBER 0xA0810008 -+#define AICA_MEMORY_SIZE 0x200000 -+#define AICA_CHANNEL0_CONTROL_OFFSET 0x10004 -+#endif -+ -+#endif -+ ---- linux-2.6.17-vanilla/scripts/mod/sumversion.c 2006-06-18 04:49:35.000000000 +0300 -+++ linux-2.6.17/scripts/mod/sumversion.c 2009-12-21 14:43:12.396274319 +0200 -@@ -36,6 +36,8 @@ - #define MD4_BLOCK_WORDS 16 - #define MD4_HASH_WORDS 4 - -+#define PATH_MAX 4096 /* # chars in a path name including nul */ -+ - struct md4_ctx { - uint32_t hash[MD4_HASH_WORDS]; - uint32_t block[MD4_BLOCK_WORDS]; diff --git a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/alsa_hp6xx_2.6.17.patch b/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/alsa_hp6xx_2.6.17.patch deleted file mode 100644 index bca97bc..0000000 --- a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/alsa_hp6xx_2.6.17.patch +++ /dev/null @@ -1,636 +0,0 @@ -diff -up linux-2.6.17/sound/sh/Kconfig linux-2.6.17.alsa/sound/sh/Kconfig ---- linux-2.6.17/sound/sh/Kconfig 2009-04-05 12:58:14.000000000 -0300 -+++ linux-2.6.17.alsa/sound/sh/Kconfig 2009-04-05 11:41:34.000000000 -0300 -@@ -12,4 +12,13 @@ config SND_AICA - To compile this driver as a module, choose M here: the module - will be called snd-aica. - -+config SND_SH_DAC_AUDIO -+ tristate "SuperH DAC audio support" -+ depends on SND -+ depends on CPU_SH3 -+ select SND_PCM -+ help -+ Alsa Sound driver for the HP Jornada 680/690 and -+ HP Palmtop 620lx/660lx. -+ - endmenu -diff -up linux-2.6.17/sound/sh/Makefile linux-2.6.17.alsa/sound/sh/Makefile ---- linux-2.6.17/sound/sh/Makefile 2009-04-05 12:58:14.000000000 -0300 -+++ linux-2.6.17.alsa/sound/sh/Makefile 2009-04-05 11:41:34.000000000 -0300 -@@ -1,4 +1,4 @@ - - snd-aica-objs := aica.o - obj-$(CONFIG_SND_AICA) += snd-aica.o -- -+obj-$(CONFIG_SND_SH_DAC_AUDIO) += snd_sh_dac_audio.o -diff -up linux-2.6.17/sound/sh/snd_sh_dac_audio.c linux-2.6.17.alsa/sound/sh/snd_sh_dac_audio.c ---- linux-2.6.17/sound/sh/snd_sh_dac_audio.c 2009-04-05 13:00:51.000000000 -0300 -+++ linux-2.6.17.alsa/sound/sh/snd_sh_dac_audio.c 2009-04-05 12:24:23.000000000 -0300 -@@ -0,0 +1,606 @@ -+/* -+ * snd_sh_dac_audio.c - SuperH DAC audio driver for ALSA -+ * -+ * Copyright (c) 2007 by Rafael Ignacio Zurita <rizurita@yahoo.com> -+ * -+ * -+ * Based completely on sh_dac_audio.c (Copyright (C) 2004,2005 by Andriy -+ * Skulysh) and "Writing an ALSA driver" (Copyright (c) 2002-2005 by Takashi -+ * Iwai <tiwai@suse.de>). -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ * -+ */ -+ -+#include <linux/interrupt.h> -+#include <linux/platform_device.h> -+#include <sound/driver.h> -+#include <sound/core.h> -+#include <sound/pcm.h> -+#include <sound/initval.h> -+#include <asm/io.h> -+#include <asm/clock.h> -+#include <asm/cpu-sh3/dac.h> -+#include <asm/hp6xx/hp6xx.h> -+#include <asm/irq.h> -+#include <asm/hd64461.h> -+ -+MODULE_AUTHOR("Rafael Ignacio Zurita <rizurita@yahoo.com>"); -+MODULE_DESCRIPTION("SuperH DAC audio driver"); -+MODULE_LICENSE("GPL"); -+MODULE_SUPPORTED_DEVICE("{{SuperH DAC audio support}}"); -+ -+/* Module Parameters */ -+static int index = SNDRV_DEFAULT_IDX1; -+static char *id = SNDRV_DEFAULT_STR1; -+module_param(index, int, 0444); -+MODULE_PARM_DESC(index, "Index value for SuperH DAC audio."); -+module_param(id, charp, 0444); -+MODULE_PARM_DESC(id, "ID string for SuperH DAC audio."); -+ -+/* Simple platform device */ -+static struct platform_device *pd; -+ -+#define SND_SH_DAC_DRIVER "SH_DAC" -+#define BUFFER_SIZE 64000 -+#define SH_DAC_AUDIO_CHANNEL 1 -+ -+#define HD64461_TMU_TIMR_TMU0 0x01 -+#define HD64461_TMU_TIDR (CONFIG_HD64461_IOBASE + 0x600e) -+#define HD64461_TMU_TIRR_TMU0 0x01 -+#define HD64461_TMU_TIRR (CONFIG_HD64461_IOBASE + 0x600c) -+#define HD64461_TMU_TCVR0 (CONFIG_HD64461_IOBASE + 0x6002) -+#define PKDR_SPEAKER 0x20 -+#define PKDR 0xa4000132 -+#define HD64461_GPADR_SPEAKER 0x01 -+#define HD64461_TMU_TCR0 (CONFIG_HD64461_IOBASE + 0x600a) -+#define HD64461_TMU_TCR_STRT 0x01 /* Start Counting */ -+ -+ -+/* main struct */ -+struct snd_sh_dac { -+ struct snd_card *card; -+ struct snd_pcm_substream *substream; -+ int irq; -+ -+ int rate; -+ int empty; -+ char *data_buffer, *buffer_begin, *buffer_end; -+ int processed; /* bytes proccesed, to compare with period_size */ -+ int buffer_size; -+}; -+ -+ -+/* -+ * Hardware functions (timer, DAC, speaker) -+ * Note: The driver uses a hd64461 timer -+ */ -+ -+static void dac_audio_start_timer(void) -+{ -+ u16 tmu_tcr; -+ -+ /*printk("dac_audio_start_timer\n"); */ -+ /* Start HD64461 timer 0 countdown */ -+ tmu_tcr = inb(HD64461_TMU_TCR0); -+ tmu_tcr |= HD64461_TMU_TCR_STRT; -+ outb(tmu_tcr, HD64461_TMU_TCR0); -+} -+ -+static void dac_audio_stop_timer(void) -+{ -+ u16 tmu_tcr; -+ -+ /*printk("dac_audio_stop_timer\n"); */ -+ /* Stop HD64461 timer 0 countdown */ -+ tmu_tcr = inb(HD64461_TMU_TCR0); -+ tmu_tcr &= ~HD64461_TMU_TCR_STRT; -+ outb(tmu_tcr, HD64461_TMU_TCR0); -+} -+ -+static void dac_audio_reset(struct snd_sh_dac *chip) -+{ -+ /*printk("dac_audio_reset\n"); */ -+ dac_audio_stop_timer(); -+ -+ chip->buffer_begin = chip->buffer_end = chip->data_buffer; -+ chip->processed = 0; -+ chip->empty = 1; -+} -+ -+static void dac_audio_sync(struct snd_sh_dac *chip) -+{ -+ /*printk("dac_audio_sync\n"); */ -+ while (!chip->empty) -+ schedule(); -+} -+ -+static void dac_audio_start(void) -+{ -+ u16 v; -+ u8 v8; -+ -+ /*printk("dac_audio_start\n"); */ -+ if (mach_is_hp6xx()) { -+ /* HP Jornada 680/690 speaker on */ -+ v = inw(HD64461_GPADR); -+ v &= ~HD64461_GPADR_SPEAKER; -+ outw(v, HD64461_GPADR); -+ -+ /* HP Palmtop 620lx/660lx speaker on */ -+ v8 = inb(PKDR); -+ v8 &= ~PKDR_SPEAKER; -+ outb(v8, PKDR); -+ } -+ -+ sh_dac_enable(SH_DAC_AUDIO_CHANNEL); -+} -+ -+static void dac_audio_stop(void) -+{ -+ u16 v; -+ u8 v8; -+ -+ /*printk("dac_audio_stop\n"); */ -+ dac_audio_stop_timer(); -+ -+ if (mach_is_hp6xx()) { -+ /* HP Jornada 680/690 speaker off */ -+ v = inw(HD64461_GPADR); -+ v |= HD64461_GPADR_SPEAKER; -+ outw(v, HD64461_GPADR); -+ -+ /* HP Palmtop 620lx/660lx speaker off */ -+ v8 = inb(PKDR); -+ v8 |= PKDR_SPEAKER; -+ outb(v8, PKDR); -+ } -+ -+ sh_dac_output(0, SH_DAC_AUDIO_CHANNEL); -+ sh_dac_disable(SH_DAC_AUDIO_CHANNEL); -+} -+ -+static void dac_audio_set_rate(int rate) -+{ -+ unsigned long interval; -+ struct clk *clk; -+ -+ /*printk("dac_audio_set_rate\n"); */ -+ /* -+ * Constant is autoloaded once zero is reached -+ * We need 8K interrupts per second -+ */ -+ /* clk = clk_get(NULL, "module_clk"); */ -+ clk = clk_get("module_clk"); -+ interval = (clk_get_rate(clk) / 16) / rate; -+ ctrl_outl(interval, HD64461_TMU_TCVR0); -+} -+ -+/* end of the hardware functions */ -+ -+ -+/* PCM INTERFACE */ -+ -+static struct snd_pcm_hardware snd_sh_dac_pcm_hw = { -+ .info = (SNDRV_PCM_INFO_MMAP | -+ SNDRV_PCM_INFO_MMAP_VALID | -+ SNDRV_PCM_INFO_INTERLEAVED | -+ SNDRV_PCM_INFO_HALF_DUPLEX), -+ .formats = SNDRV_PCM_FMTBIT_U8, -+ .rates = SNDRV_PCM_RATE_8000, -+ .rate_min = 8000, -+ .rate_max = 8000, -+ .channels_min = 1, -+ .channels_max = 1, -+ .buffer_bytes_max = (48*1024), -+ .period_bytes_min = 1, -+ .period_bytes_max = (48*1024), -+ .periods_min = 1, -+ .periods_max = 1024, -+}; -+ -+static int snd_sh_dac_pcm_open(struct snd_pcm_substream *substream) -+{ -+ struct snd_sh_dac *chip = snd_pcm_substream_chip(substream); -+ struct snd_pcm_runtime *runtime = substream->runtime; -+ -+ /*printk("snd_sh_dac_pcm_open\n"); */ -+ runtime->hw = snd_sh_dac_pcm_hw; -+ -+ chip->substream = substream; -+ chip->buffer_begin = chip->buffer_end = chip->data_buffer; -+ chip->processed = 0; -+ chip->empty = 1; -+ -+ dac_audio_start(); -+ -+ return 0; -+} -+ -+static int snd_sh_dac_pcm_close(struct snd_pcm_substream *substream) -+{ -+ struct snd_sh_dac *chip = snd_pcm_substream_chip(substream); -+ -+ /*printk("snd_sh_dac_pcm_close\n"); */ -+ dac_audio_sync(chip); -+ dac_audio_stop(); -+ -+ return 0; -+} -+ -+static int snd_sh_dac_pcm_hw_params(struct snd_pcm_substream *substream, -+ struct snd_pcm_hw_params *hw_params) -+{ -+ /*printk("snd_sh_dac_pcm_hw_params\n"); */ -+ return -+ snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); -+} -+ -+static int snd_sh_dac_pcm_hw_free(struct snd_pcm_substream *substream) -+{ -+ /*printk("snd_sh_dac_pcm_hw_free\n"); */ -+ /* Free the buffer */ -+ return snd_pcm_lib_free_pages(substream); -+} -+ -+static int snd_sh_dac_pcm_prepare(struct snd_pcm_substream *substream) -+{ -+ struct snd_sh_dac *chip = snd_pcm_substream_chip(substream); -+ struct snd_pcm_runtime *runtime = chip->substream->runtime; -+ /*printk("snd_sh_dac_pcm_prepare\n"); */ -+ chip->buffer_size = runtime->buffer_size; -+ memset(chip->data_buffer, 0, BUFFER_SIZE); -+ return 0; -+} -+ -+static int snd_sh_dac_pcm_trigger(struct snd_pcm_substream *substream, int cmd) -+{ -+ struct snd_sh_dac *chip = snd_pcm_substream_chip(substream); -+ /*printk("snd_sh_dac_pcm_trigger\n"); */ -+ switch (cmd) { -+ case SNDRV_PCM_TRIGGER_START: -+ dac_audio_start_timer(); -+ break; -+ case SNDRV_PCM_TRIGGER_STOP: -+ chip->buffer_begin = chip->buffer_end = chip->data_buffer; -+ chip->processed = 0; -+ chip->empty = 1; -+ dac_audio_stop_timer(); -+ break; -+ default: -+ return -EINVAL; -+ } -+ return 0; -+} -+ -+static int snd_sh_dac_pcm_copy(struct snd_pcm_substream *substream, int channel, -+ snd_pcm_uframes_t pos, void __user *src, snd_pcm_uframes_t count) -+{ -+ /* channel is not used (interleaved data) */ -+ struct snd_sh_dac *chip = snd_pcm_substream_chip(substream); -+ struct snd_pcm_runtime *runtime = substream->runtime; -+ ssize_t b_count = frames_to_bytes(runtime , count); -+ ssize_t b_pos = frames_to_bytes(runtime , pos); -+ -+ /*printk("snd_sh_dac_pcm_copy\n"); */ -+ if (count < 0) -+ return -EINVAL; -+ -+ if (!count) { -+ dac_audio_sync(chip); -+ return 0; -+ } -+ -+ memcpy_toio(chip->data_buffer + b_pos, src, b_count); -+ chip->buffer_end = chip->data_buffer + b_pos + b_count; -+ -+ if (chip->empty) { -+ chip->empty = 0; -+ dac_audio_start_timer(); -+ } -+ -+ return 0; -+} -+ -+static int snd_sh_dac_pcm_silence(struct snd_pcm_substream *substream, -+ int channel, snd_pcm_uframes_t pos, -+ snd_pcm_uframes_t count) -+{ -+ /* channel is not used (interleaved data) */ -+ struct snd_sh_dac *chip = snd_pcm_substream_chip(substream); -+ struct snd_pcm_runtime *runtime = substream->runtime; -+ ssize_t b_count = frames_to_bytes(runtime , count); -+ ssize_t b_pos = frames_to_bytes(runtime , pos); -+ -+ /*printk("snd_sh_dac_pcm_silence\n"); */ -+ if (count < 0) -+ return -EINVAL; -+ -+ if (!count) { -+ dac_audio_sync(chip); -+ return 0; -+ } -+ -+ memset_io(chip->data_buffer + b_pos, 0, b_count); -+ chip->buffer_end = chip->data_buffer + b_pos + b_count; -+ -+ if (chip->empty) { -+ chip->empty = 0; -+ dac_audio_start_timer(); -+ } -+ return 0; -+} -+ -+static snd_pcm_uframes_t snd_sh_dac_pcm_pointer(struct snd_pcm_substream *substream) -+{ -+ struct snd_sh_dac *chip = snd_pcm_substream_chip(substream); -+ int pointer = chip->buffer_begin - chip->data_buffer; -+ -+ /*printk("snd_pcm_uframes_t \n"); */ -+ return pointer; -+} -+ -+/* pcm ops */ -+static struct snd_pcm_ops snd_sh_dac_pcm_ops = { -+ .open = snd_sh_dac_pcm_open, -+ .close = snd_sh_dac_pcm_close, -+ .ioctl = snd_pcm_lib_ioctl, -+ .hw_params = snd_sh_dac_pcm_hw_params, -+ .hw_free = snd_sh_dac_pcm_hw_free, -+ .prepare = snd_sh_dac_pcm_prepare, -+ .trigger = snd_sh_dac_pcm_trigger, -+ .pointer = snd_sh_dac_pcm_pointer, -+ .copy = snd_sh_dac_pcm_copy, -+ .silence = snd_sh_dac_pcm_silence, -+ .mmap = snd_pcm_lib_mmap_iomem, -+}; -+ -+static int __devinit snd_sh_dac_pcm(struct snd_sh_dac *chip, int device) -+{ -+ int err; -+ struct snd_pcm *pcm; -+ /*printk("snd_sh_dac_pcm\n"); */ -+ /* device should be always 0 for us */ -+ err = snd_pcm_new(chip->card, "SH_DAC PCM", device, 1, 0, &pcm); -+ if (err < 0) -+ return err; -+ pcm->private_data = chip; -+ strcpy(pcm->name, "SH_DAC PCM"); -+ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_sh_dac_pcm_ops); -+ -+ /* buffer size=48K */ -+ snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, -+ snd_dma_continuous_data(GFP_KERNEL), -+ 48 * 1024, -+ 48 * 1024); -+ return 0; -+} -+/* END OF PCM INTERFACE */ -+ -+ -+/* driver .remove -- destructor */ -+static int snd_sh_dac_remove(struct platform_device *devptr) -+{ -+ /*printk("snd_sh_dac_remove\n"); */ -+ snd_card_free(platform_get_drvdata(devptr)); -+ platform_set_drvdata(devptr, NULL); -+ return 0; -+} -+ -+/* free -- it has been defined by create */ -+static int snd_sh_dac_free(struct snd_sh_dac *chip) -+{ -+ /*printk("snd_sh_dac_free\n"); */ -+ /* release the irq */ -+ free_irq(chip->irq, (void *)chip); -+ -+ /* release the data */ -+ kfree(chip->data_buffer); -+ kfree(chip); -+ -+ return 0; -+} -+ -+static int snd_sh_dac_dev_free(struct snd_device *device) -+{ -+ struct snd_sh_dac *chip = device->device_data; -+ /*printk("snd_sh_dac_dev_free\n"); */ -+ return snd_sh_dac_free(chip); -+} -+ -+static irqreturn_t snd_sh_dac_interrupt(int irq, void *pdev, struct pt_regs *regs) -+{ -+ u16 timer_status; -+ struct snd_sh_dac *chip = (struct snd_sh_dac *) pdev; -+ struct snd_pcm_runtime *runtime = chip->substream->runtime; -+ ssize_t b_ps = frames_to_bytes(runtime, runtime->period_size); -+ -+/* printk("snd_sh_dac_interrupt\n"); */ -+ /* HD64461_TMU0 mask interrupt */ -+ timer_status = inw(HD64461_TMU_TIRR); -+ timer_status &= ~HD64461_TMU_TIRR_TMU0; -+ outw(timer_status, HD64461_TMU_TIRR); -+ -+ if (!chip->empty) { -+ sh_dac_output(*chip->buffer_begin, SH_DAC_AUDIO_CHANNEL); -+ chip->buffer_begin++; -+ chip->processed++; -+ -+ if (chip->processed >= b_ps) { -+ chip->processed -= b_ps; -+ snd_pcm_period_elapsed(chip->substream); -+ } -+ -+ if (chip->buffer_begin == (chip->data_buffer + -+ chip->buffer_size - 1)) -+ chip->buffer_begin = chip->data_buffer; -+ -+ if (chip->buffer_begin == chip->buffer_end) { -+ chip->empty = 1; -+ dac_audio_stop_timer(); -+ } -+ -+ } -+ return IRQ_HANDLED; -+} -+ -+/* create -- chip-specific constructor for the cards components */ -+static int __devinit snd_sh_dac_create(struct snd_card *card, -+ struct platform_device *devptr, -+ struct snd_sh_dac **rchip) -+{ -+ struct snd_sh_dac *chip; -+ int err; -+ u16 timer_status; -+ u16 hd64461_stbcr; -+ -+ static struct snd_device_ops ops = { -+ .dev_free = snd_sh_dac_dev_free, -+ }; -+ -+ /*printk("snd_sh_dac_create\n"); */ -+ *rchip = NULL; -+ -+ chip = kzalloc(sizeof(*chip), GFP_KERNEL); -+ if (chip == NULL) -+ return -ENOMEM; -+ -+ /* initialize the stuff */ -+ chip->card = card; -+ chip->irq = -1; -+ -+ /* Hardware Initialization */ -+ /* get standby status of all devices */ -+ hd64461_stbcr = inw(HD64461_STBCR); -+ /* remove standby mode for timer 0 */ -+ hd64461_stbcr &= ~HD64461_STBCR_STM0ST; -+ outw(hd64461_stbcr, HD64461_STBCR); -+ -+ dac_audio_reset(chip); -+ chip->rate = 8000; -+ dac_audio_set_rate(chip->rate); -+ -+ /* set bit interrupt service request */ -+ timer_status = inw(HD64461_TMU_TIRR); -+ timer_status &= ~HD64461_TMU_TIRR_TMU0; -+ outw(timer_status, HD64461_TMU_TIRR); -+ -+ /* set interrupt service request mask bit */ -+ timer_status = inw(HD64461_TMU_TIDR); -+ timer_status &= ~HD64461_TMU_TIMR_TMU0; -+ outw(timer_status, HD64461_TMU_TIDR); -+ -+ chip->data_buffer = kmalloc(BUFFER_SIZE, GFP_KERNEL); -+ if (chip->data_buffer == NULL) -+ return -ENOMEM; -+ -+ /* if (request_irq(HD64461_IRQ_TMU0, snd_sh_dac_interrupt, IRQF_DISABLED, */ -+ if (request_irq(HD64461_IRQ_TMU0, snd_sh_dac_interrupt, SA_INTERRUPT, -+ "snd_sh_dac", (void *)chip)) { -+ snd_sh_dac_free(chip); -+ printk(KERN_ERR "cannot grab irq\n"); -+ return -EBUSY; -+ } -+ chip->irq = HD64461_IRQ_TMU0; -+ -+ if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { -+ snd_sh_dac_free(chip); -+ return err; -+ } -+ *rchip = chip; -+ -+ return 0; -+} -+ -+/* driver .probe -- constructor */ -+static int __devinit snd_sh_dac_probe(struct platform_device *devptr) -+{ -+ struct snd_sh_dac *chip; -+ struct snd_card *card; -+ int err; -+ -+ card = snd_card_new(index, id, THIS_MODULE, 0); -+ if (card == NULL) -+ return -ENOMEM; -+ -+ err = snd_sh_dac_create(card, devptr, &chip); -+ if (err < 0) -+ goto probe_error; -+ -+ err = snd_sh_dac_pcm(chip, 0); -+ if (err < 0) -+ goto probe_error; -+ -+ strcpy(card->driver, "snd_sh_dac"); -+ strcpy(card->shortname, "SuperH DAC audio driver"); -+ /* sprintk(card->longname, "%s at HD64461 irq %i", card->shortname, */ -+ printk("%s %s at HD64461 irq %i", card->longname, card->shortname, -+ chip->irq); -+ -+ err = snd_card_register(card); -+ if (err < 0) -+ goto probe_error; -+ -+ snd_printk("ALSA driver for SuperH DAC audio"); -+ -+ platform_set_drvdata(devptr, card); -+ return 0; -+ -+probe_error: -+ snd_card_free(card); -+ return err; -+} -+ -+/* -+ * "driver" definition -+ */ -+static struct platform_driver driver = { -+ .probe = snd_sh_dac_probe, -+ .remove = snd_sh_dac_remove, -+ .driver = { -+ .name = SND_SH_DAC_DRIVER, -+ }, -+}; -+ -+/* clean up the module */ -+static void __exit sh_dac_exit(void) -+{ -+ /*printk("sh_dac_exit\n"); */ -+ platform_device_unregister(pd); -+ platform_driver_unregister(&driver); -+ -+ free_irq(HD64461_IRQ_TMU0, 0); -+} -+ -+ -+static int __init sh_dac_init(void) -+{ -+ int err; -+ /*printk("sh_dac_init\n"); */ -+ err = platform_driver_register(&driver); -+ if (unlikely(err < 0)) -+ return err; -+ -+ pd = platform_device_register_simple(SND_SH_DAC_DRIVER, -1, NULL, 0); -+ if (unlikely(IS_ERR(pd))) { -+ platform_driver_unregister(&driver); -+ return PTR_ERR(pd); -+ } -+ -+ return 0; -+} -+ -+module_init(sh_dac_init); -+module_exit(sh_dac_exit); diff --git a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/defconfig_jlime b/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/defconfig_jlime deleted file mode 100644 index 0db41d8..0000000 --- a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/defconfig_jlime +++ /dev/null @@ -1,1187 +0,0 @@ -# -# Automatically generated make config: don't edit -# Linux kernel version: 2.6.17 -# Sat Oct 21 22:36:16 2006 -# -CONFIG_SUPERH=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -CONFIG_GENERIC_FIND_NEXT_BIT=y -CONFIG_GENERIC_HWEIGHT=y -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_GENERIC_CALIBRATE_DELAY=y - -# -# Code maturity level options -# -CONFIG_EXPERIMENTAL=y -CONFIG_BROKEN_ON_SMP=y -CONFIG_INIT_ENV_ARG_LIMIT=32 - -# -# General setup -# -CONFIG_LOCALVERSION="" -CONFIG_LOCALVERSION_AUTO=y -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_BSD_PROCESS_ACCT=y -# CONFIG_BSD_PROCESS_ACCT_V3 is not set -CONFIG_SYSCTL=y -# CONFIG_AUDIT is not set -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_RELAY=y -CONFIG_INITRAMFS_SOURCE="" -CONFIG_UID16=y -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -CONFIG_EMBEDDED=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_EXTRA_PASS is not set -CONFIG_HOTPLUG=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_SHMEM=y -CONFIG_SLAB=y -# CONFIG_TINY_SHMEM is not set -CONFIG_BASE_SMALL=0 -# CONFIG_SLOB is not set - -# -# Loadable module support -# -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -CONFIG_KMOD=y - -# -# Block layer -# -# CONFIG_LBD is not set -# CONFIG_BLK_DEV_IO_TRACE is not set -# CONFIG_LSF is not set - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -CONFIG_DEFAULT_AS=y -# CONFIG_DEFAULT_DEADLINE is not set -# CONFIG_DEFAULT_CFQ is not set -# CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="anticipatory" - -# -# System type -# -# CONFIG_SH_SOLUTION_ENGINE is not set -# CONFIG_SH_7751_SOLUTION_ENGINE is not set -# CONFIG_SH_7300_SOLUTION_ENGINE is not set -# CONFIG_SH_73180_SOLUTION_ENGINE is not set -# CONFIG_SH_7751_SYSTEMH is not set -# CONFIG_SH_STB1_HARP is not set -# CONFIG_SH_STB1_OVERDRIVE is not set -CONFIG_SH_HP6XX=y -# CONFIG_SH_CQREEK is not set -# CONFIG_SH_DMIDA is not set -# CONFIG_SH_EC3104 is not set -# CONFIG_SH_SATURN is not set -# CONFIG_SH_DREAMCAST is not set -# CONFIG_SH_CAT68701 is not set -# CONFIG_SH_BIGSUR is not set -# CONFIG_SH_SH2000 is not set -# CONFIG_SH_ADX is not set -# CONFIG_SH_MPC1211 is not set -# CONFIG_SH_SH03 is not set -# CONFIG_SH_SECUREEDGE5410 is not set -# CONFIG_SH_HS7751RVOIP is not set -# CONFIG_SH_RTS7751R2D is not set -# CONFIG_SH_R7780RP is not set -# CONFIG_SH_EDOSK7705 is not set -# CONFIG_SH_SH4202_MICRODEV is not set -# CONFIG_SH_LANDISK is not set -# CONFIG_SH_TITAN is not set -# CONFIG_SH_UNKNOWN is not set - -# -# Processor selection -# -CONFIG_CPU_SH3=y - -# -# SH-2 Processor Support -# -# CONFIG_CPU_SUBTYPE_SH7604 is not set - -# -# SH-3 Processor Support -# -# CONFIG_CPU_SUBTYPE_SH7300 is not set -# CONFIG_CPU_SUBTYPE_SH7705 is not set -# CONFIG_CPU_SUBTYPE_SH7707 is not set -# CONFIG_CPU_SUBTYPE_SH7708 is not set -CONFIG_CPU_SUBTYPE_SH7709=y - -# -# SH-4 Processor Support -# -# CONFIG_CPU_SUBTYPE_SH7750 is not set -# CONFIG_CPU_SUBTYPE_SH7091 is not set -# CONFIG_CPU_SUBTYPE_SH7750R is not set -# CONFIG_CPU_SUBTYPE_SH7750S is not set -# CONFIG_CPU_SUBTYPE_SH7751 is not set -# CONFIG_CPU_SUBTYPE_SH7751R is not set -# CONFIG_CPU_SUBTYPE_SH7760 is not set -# CONFIG_CPU_SUBTYPE_SH4_202 is not set - -# -# ST40 Processor Support -# -# CONFIG_CPU_SUBTYPE_ST40STB1 is not set -# CONFIG_CPU_SUBTYPE_ST40GX1 is not set - -# -# SH-4A Processor Support -# -# CONFIG_CPU_SUBTYPE_SH73180 is not set -# CONFIG_CPU_SUBTYPE_SH7770 is not set -# CONFIG_CPU_SUBTYPE_SH7780 is not set - -# -# Memory management options -# -CONFIG_MMU=y -CONFIG_SELECT_MEMORY_MODEL=y -CONFIG_FLATMEM_MANUAL=y -# CONFIG_DISCONTIGMEM_MANUAL is not set -# CONFIG_SPARSEMEM_MANUAL is not set -CONFIG_FLATMEM=y -CONFIG_FLAT_NODE_MEM_MAP=y -# CONFIG_SPARSEMEM_STATIC is not set -CONFIG_SPLIT_PTLOCK_CPUS=4 - -# -# Cache configuration -# -# CONFIG_SH_DIRECT_MAPPED is not set -# CONFIG_SH_WRITETHROUGH is not set -# CONFIG_SH_OCRAM is not set -CONFIG_MEMORY_START=0x0d000000 -CONFIG_MEMORY_SIZE=0x00400000 - -# -# Processor features -# -CONFIG_CPU_LITTLE_ENDIAN=y -CONFIG_SH_RTC=y -CONFIG_SH_FPU_EMU=y -# CONFIG_SH_DSP is not set -CONFIG_SH_ADC=y -CONFIG_CPU_HAS_INTEVT=y -CONFIG_CPU_HAS_PINT_IRQ=y -CONFIG_CPU_HAS_SR_RB=y - -# -# Timer support -# -CONFIG_SH_TMU=y -CONFIG_SH_PCLK_FREQ=22110000 - -# -# CPU Frequency scaling -# -# CONFIG_CPU_FREQ is not set - -# -# DMA support -# -CONFIG_SH_DMA=y -CONFIG_NR_ONCHIP_DMA_CHANNELS=4 -# CONFIG_NR_DMA_CHANNELS_BOOL is not set - -# -# Companion Chips -# -CONFIG_HD6446X_SERIES=y -CONFIG_HD64461=y -# CONFIG_HD64465 is not set -CONFIG_HD64461_IRQ=36 -CONFIG_HD64461_IOBASE=0xb0000000 -CONFIG_HD64461_ENABLER=y - -# -# Kernel features -# -# CONFIG_KEXEC is not set -# CONFIG_PREEMPT is not set -# CONFIG_SMP is not set - -# -# Boot options -# -CONFIG_ZERO_PAGE_OFFSET=0x00001000 -CONFIG_BOOT_LINK_OFFSET=0x00800000 -# CONFIG_UBC_WAKEUP is not set -# CONFIG_CMDLINE_BOOL is not set - -# -# Bus options -# -CONFIG_ISA=y -# CONFIG_PCI is not set - -# -# PCCARD (PCMCIA/CardBus) support -# -CONFIG_PCCARD=y -# CONFIG_PCMCIA_DEBUG is not set -CONFIG_PCMCIA=y -CONFIG_PCMCIA_LOAD_CIS=y -# CONFIG_PCMCIA_IOCTL is not set - -# -# PC-card bridges -# -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -CONFIG_HD64461_PCMCIA=y -CONFIG_HD64461_PCMCIA_SOCKETS=1 -CONFIG_PCMCIA_PROBE=y - -# -# PCI Hotplug Support -# - -# -# Executable file formats -# -CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_FLAT is not set -# CONFIG_BINFMT_MISC is not set - -# -# Power management options (EXPERIMENTAL) -# -CONFIG_PM=y -CONFIG_PM_LEGACY=y -# CONFIG_PM_DEBUG is not set -CONFIG_APM=y - -# -# Networking -# -CONFIG_NET=y - -# -# Networking options -# -CONFIG_NETDEBUG=y -CONFIG_PACKET=y -CONFIG_PACKET_MMAP=y -CONFIG_UNIX=y -CONFIG_XFRM=y -# CONFIG_XFRM_USER is not set -CONFIG_NET_KEY=y -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_FIB_HASH=y -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set -# CONFIG_INET_XFRM_TUNNEL is not set -# CONFIG_INET_TUNNEL is not set -CONFIG_INET_DIAG=y -CONFIG_INET_TCP_DIAG=y -# CONFIG_TCP_CONG_ADVANCED is not set -CONFIG_TCP_CONG_BIC=y -# CONFIG_IPV6 is not set -# CONFIG_INET6_XFRM_TUNNEL is not set -# CONFIG_INET6_TUNNEL is not set -# CONFIG_NETFILTER is not set - -# -# DCCP Configuration (EXPERIMENTAL) -# -# CONFIG_IP_DCCP is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# -# CONFIG_IP_SCTP is not set - -# -# TIPC Configuration (EXPERIMENTAL) -# -# CONFIG_TIPC is not set -# CONFIG_ATM is not set -# CONFIG_BRIDGE is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set -# CONFIG_LLC2 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_NET_DIVERT is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -# CONFIG_HAMRADIO is not set -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -CONFIG_IRNET=m -# CONFIG_IRCOMM is not set -# CONFIG_IRDA_ULTRA is not set - -# -# IrDA options -# -# CONFIG_IRDA_CACHE_LAST_LSAP is not set -# CONFIG_IRDA_FAST_RR is not set -# CONFIG_IRDA_DEBUG is not set - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -# CONFIG_IRTTY_SIR is not set - -# -# Dongle support -# - -# -# Old SIR device drivers -# -# CONFIG_IRPORT_SIR is not set - -# -# Old Serial dongle support -# - -# -# FIR device drivers -# -CONFIG_BT=m -# CONFIG_BT_L2CAP is not set -# CONFIG_BT_SCO is not set - -# -# Bluetooth device drivers -# -CONFIG_BT_HCIUART=m -# CONFIG_BT_HCIUART_H4 is not set -# CONFIG_BT_HCIUART_BCSP is not set -CONFIG_BT_HCIDTL1=m -CONFIG_BT_HCIBT3C=m -CONFIG_BT_HCIBLUECARD=m -CONFIG_BT_HCIBTUART=m -# CONFIG_BT_HCIVHCI is not set -CONFIG_IEEE80211=y -# CONFIG_IEEE80211_DEBUG is not set -CONFIG_IEEE80211_CRYPT_WEP=m -CONFIG_IEEE80211_CRYPT_CCMP=m -CONFIG_IEEE80211_CRYPT_TKIP=m -CONFIG_IEEE80211_SOFTMAC=m -# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set -CONFIG_WIRELESS_EXT=y - -# -# Device Drivers -# - -# -# Generic Driver Options -# -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=y - -# -# Connector - unified userspace <-> kernelspace linker -# -# CONFIG_CONNECTOR is not set - -# -# Memory Technology Devices (MTD) -# -# CONFIG_MTD is not set - -# -# Parallel port support -# -# CONFIG_PARPORT is not set - -# -# Plug and Play support -# -CONFIG_PNP=y -# CONFIG_PNP_DEBUG is not set - -# -# Protocols -# -# CONFIG_ISAPNP is not set - -# -# Block devices -# -# CONFIG_BLK_DEV_COW_COMMON is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_CRYPTOLOOP is not set -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_RAM is not set -# CONFIG_BLK_DEV_INITRD is not set -# CONFIG_CDROM_PKTCDVD is not set -# CONFIG_ATA_OVER_ETH is not set - -# -# ATA/ATAPI/MFM/RLL support -# -CONFIG_IDE=y -CONFIG_IDE_MAX_HWIFS=4 -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -CONFIG_BLK_DEV_IDECS=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_IDE_TASK_IOCTL is not set - -# -# IDE chipset support/bugfixes -# -CONFIG_IDE_GENERIC=y -# CONFIG_BLK_DEV_IDEPNP is not set -CONFIG_IDE_SH=y -# CONFIG_IDE_ARM is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_BLK_DEV_IDEDMA is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_BLK_DEV_HD is not set - -# -# SCSI device support -# -# CONFIG_RAID_ATTRS is not set -# CONFIG_SCSI is not set - -# -# Old CD-ROM drivers (not SCSI, not IDE) -# -# CONFIG_CD_NO_IDESCSI is not set - -# -# Multi-device support (RAID and LVM) -# -# CONFIG_MD is not set - -# -# Fusion MPT device support -# -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# - -# -# I2O device support -# - -# -# Network device support -# -CONFIG_NETDEVICES=y -CONFIG_DUMMY=y -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set - -# -# PHY device support -# -# CONFIG_PHYLIB is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -CONFIG_MII=y -# CONFIG_STNIC is not set -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_SMC91X is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_HP100 is not set -# CONFIG_NET_ISA is not set -# CONFIG_NE2000 is not set -# CONFIG_NET_PCI is not set - -# -# Ethernet (1000 Mbit) -# - -# -# Ethernet (10000 Mbit) -# - -# -# Token Ring devices -# -# CONFIG_TR is not set - -# -# Wireless LAN (non-hamradio) -# -CONFIG_NET_RADIO=y -CONFIG_NET_WIRELESS_RTNETLINK=y - -# -# Obsolete Wireless cards support (pre-802.11) -# -# CONFIG_STRIP is not set -CONFIG_ARLAN=m -CONFIG_WAVELAN=m -CONFIG_PCMCIA_WAVELAN=m -CONFIG_PCMCIA_NETWAVE=m - -# -# Wireless 802.11 Frequency Hopping cards support -# -CONFIG_PCMCIA_RAYCS=m - -# -# Wireless 802.11b ISA/PCI cards support -# -CONFIG_HERMES=m -CONFIG_ATMEL=m - -# -# Wireless 802.11b Pcmcia/Cardbus cards support -# -CONFIG_PCMCIA_HERMES=m -CONFIG_PCMCIA_SPECTRUM=m -CONFIG_AIRO_CS=m -CONFIG_PCMCIA_ATMEL=m -CONFIG_PCMCIA_WL3501=m -CONFIG_HOSTAP=m -CONFIG_HOSTAP_FIRMWARE=y -CONFIG_HOSTAP_FIRMWARE_NVRAM=y -CONFIG_HOSTAP_CS=m -CONFIG_NET_WIRELESS=y - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -CONFIG_PCMCIA_3C589=m -CONFIG_PCMCIA_3C574=m -CONFIG_PCMCIA_FMVJ18X=m -CONFIG_PCMCIA_PCNET=m -CONFIG_PCMCIA_NMCLAN=m -CONFIG_PCMCIA_SMC91C92=m -CONFIG_PCMCIA_XIRC2PS=m -CONFIG_PCMCIA_AXNET=m - -# -# Wan interfaces -# -# CONFIG_WAN is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_MPPE=m -CONFIG_PPPOE=m -CONFIG_SLIP=m -# CONFIG_SLIP_COMPRESSED is not set -CONFIG_SLIP_SMART=y -# CONFIG_SLIP_MODE_SLIP6 is not set -# CONFIG_SHAPER is not set -# CONFIG_NETCONSOLE is not set -# CONFIG_NETPOLL is not set -# CONFIG_NET_POLL_CONTROLLER is not set - -# -# ISDN subsystem -# -# CONFIG_ISDN is not set - -# -# Telephony Support -# -# CONFIG_PHONE is not set - -# -# Input device support -# -CONFIG_INPUT=y - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 -# CONFIG_INPUT_JOYDEV is not set -CONFIG_INPUT_TSDEV=y -CONFIG_INPUT_TSDEV_SCREEN_X=640 -CONFIG_INPUT_TSDEV_SCREEN_Y=240 -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y -# CONFIG_KEYBOARD_ATKBD is not set -# CONFIG_KEYBOARD_SUNKBD is not set -# CONFIG_KEYBOARD_LKKBD is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_NEWTON is not set -# CONFIG_KEYBOARD_HP620 is not set -CONFIG_KEYBOARD_HP680=y -# CONFIG_INPUT_MOUSE is not set -# CONFIG_INPUT_JOYSTICK is not set -CONFIG_INPUT_TOUCHSCREEN=y -# CONFIG_TOUCHSCREEN_GUNZE is not set -# CONFIG_TOUCHSCREEN_ELO is not set -# CONFIG_TOUCHSCREEN_MTOUCH is not set -# CONFIG_TOUCHSCREEN_MK712 is not set -CONFIG_TOUCHSCREEN_HP600=y -# CONFIG_INPUT_MISC is not set - -# -# Hardware I/O ports -# -# CONFIG_SERIO is not set -# CONFIG_GAMEPORT is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_HW_CONSOLE=y -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_8250 is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_SH_SCI=y -CONFIG_SERIAL_SH_SCI_CONSOLE=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -CONFIG_LEGACY_PTYS=y -CONFIG_LEGACY_PTY_COUNT=5 - -# -# IPMI -# -# CONFIG_IPMI_HANDLER is not set - -# -# Watchdog Cards -# -# CONFIG_WATCHDOG is not set -# CONFIG_RTC is not set -# CONFIG_GEN_RTC is not set -# CONFIG_DTLK is not set -# CONFIG_R3964 is not set - -# -# Ftape, the floppy tape device driver -# - -# -# PCMCIA character devices -# -# CONFIG_SYNCLINK_CS is not set -# CONFIG_CARDMAN_4000 is not set -# CONFIG_CARDMAN_4040 is not set -# CONFIG_RAW_DRIVER is not set - -# -# TPM devices -# -# CONFIG_TCG_TPM is not set -# CONFIG_TELCLOCK is not set - -# -# I2C support -# -# CONFIG_I2C is not set - -# -# SPI support -# -# CONFIG_SPI is not set -# CONFIG_SPI_MASTER is not set - -# -# Dallas's 1-wire bus -# -# CONFIG_W1 is not set - -# -# Hardware Monitoring support -# -CONFIG_HWMON=y -# CONFIG_HWMON_VID is not set -# CONFIG_SENSORS_F71805F is not set -# CONFIG_HWMON_DEBUG_CHIP is not set - -# -# Misc devices -# - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set -CONFIG_VIDEO_V4L2=y - -# -# Digital Video Broadcasting Devices -# -# CONFIG_DVB is not set - -# -# Graphics support -# -CONFIG_FB=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -# CONFIG_FB_MACMODES is not set -CONFIG_FB_FIRMWARE_EDID=y -# CONFIG_FB_MODE_HELPERS is not set -# CONFIG_FB_TILEBLITTING is not set -# CONFIG_FB_EPSON1355 is not set -# CONFIG_FB_S1D13XXX is not set -CONFIG_FB_HIT=y -# CONFIG_FB_VIRTUAL is not set - -# -# Console display driver support -# -# CONFIG_MDA_CONSOLE is not set -CONFIG_DUMMY_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set -CONFIG_FONTS=y -# CONFIG_FONT_8x8 is not set -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_7x14 is not set -CONFIG_FONT_PEARL_8x8=y -# CONFIG_FONT_ACORN_8x8 is not set -# CONFIG_FONT_MINI_4x6 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_10x18 is not set - -# -# Logo configuration -# -# CONFIG_LOGO is not set -CONFIG_BACKLIGHT_LCD_SUPPORT=y -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_DEVICE=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_LCD_DEVICE=y -CONFIG_BACKLIGHT_HP680=y - -# -# Sound -# -CONFIG_SOUND=y - -# -# Advanced Linux Sound Architecture -# -CONFIG_SND=y -CONFIG_SND_TIMER=y -CONFIG_SND_PCM=y -# CONFIG_SND_SEQUENCER is not set -CONFIG_SND_OSSEMUL=y -CONFIG_SND_MIXER_OSS=y -CONFIG_SND_PCM_OSS=y -CONFIG_SND_PCM_OSS_PLUGINS=y -# CONFIG_SND_DYNAMIC_MINORS is not set -CONFIG_SND_SUPPORT_OLD_API=y -CONFIG_SND_VERBOSE_PROCFS=y -# CONFIG_SND_VERBOSE_PRINTK is not set -# CONFIG_SND_DEBUG is not set - -# -# Generic devices -# -# CONFIG_SND_DUMMY is not set -# CONFIG_SND_MTPAV is not set -# CONFIG_SND_SERIAL_U16550 is not set -# CONFIG_SND_MPU401 is not set - -# -# SuperH devices -# -CONFIG_SND_SH_DAC_AUDIO=y - -# -# PCMCIA devices -# -# CONFIG_SND_VXPOCKET is not set -# CONFIG_SND_PDAUDIOCF is not set - -# -# Open Sound System -# -# CONFIG_SOUND_PRIME is not set - -# -# USB support -# -# CONFIG_USB_ARCH_HAS_HCD is not set -# CONFIG_USB_ARCH_HAS_OHCI is not set -# CONFIG_USB_ARCH_HAS_EHCI is not set - -# -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -# - -# -# USB Gadget Support -# -# CONFIG_USB_GADGET is not set - -# -# MMC/SD Card support -# -# CONFIG_MMC is not set - -# -# LED devices -# -# CONFIG_NEW_LEDS is not set - -# -# LED drivers -# - -# -# LED Triggers -# - -# -# InfiniBand support -# - -# -# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) -# - -# -# Real Time Clock -# -CONFIG_RTC_LIB=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_HCTOSYS_DEVICE="rtc0" - -# -# RTC interfaces -# -CONFIG_RTC_INTF_SYSFS=y -CONFIG_RTC_INTF_PROC=y -CONFIG_RTC_INTF_DEV=y - -# -# RTC drivers -# -# CONFIG_RTC_DRV_M48T86 is not set -CONFIG_RTC_DRV_SH=y -# CONFIG_RTC_DRV_TEST is not set - -# -# File systems -# -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -# CONFIG_EXT2_FS_XIP is not set -CONFIG_EXT3_FS=y -CONFIG_EXT3_FS_XATTR=y -# CONFIG_EXT3_FS_POSIX_ACL is not set -# CONFIG_EXT3_FS_SECURITY is not set -CONFIG_JBD=y -# CONFIG_JBD_DEBUG is not set -CONFIG_FS_MBCACHE=y -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_FS_POSIX_ACL is not set -# CONFIG_XFS_FS is not set -# CONFIG_OCFS2_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_ROMFS_FS is not set -CONFIG_INOTIFY=y -# CONFIG_QUOTA is not set -CONFIG_DNOTIFY=y -CONFIG_AUTOFS_FS=y -# CONFIG_AUTOFS4_FS is not set -# CONFIG_FUSE_FS is not set - -# -# CD-ROM/DVD Filesystems -# -# CONFIG_ISO9660_FS is not set -# CONFIG_UDF_FS is not set - -# -# DOS/FAT/NT Filesystems -# -CONFIG_FAT_FS=y -# CONFIG_MSDOS_FS is not set -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -CONFIG_PROC_KCORE=y -CONFIG_SYSFS=y -CONFIG_TMPFS=y -# CONFIG_HUGETLBFS is not set -# CONFIG_HUGETLB_PAGE is not set -CONFIG_RAMFS=y -# CONFIG_CONFIGFS_FS is not set - -# -# Miscellaneous filesystems -# -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_CRAMFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -CONFIG_NFS_FS=m -# CONFIG_NFS_V3 is not set -# CONFIG_NFS_V4 is not set -# CONFIG_NFS_DIRECTIO is not set -CONFIG_NFSD=m -# CONFIG_NFSD_V3 is not set -CONFIG_NFSD_TCP=y -CONFIG_LOCKD=m -CONFIG_EXPORTFS=m -CONFIG_NFS_COMMON=y -CONFIG_SUNRPC=m -# CONFIG_RPCSEC_GSS_KRB5 is not set -# CONFIG_RPCSEC_GSS_SPKM3 is not set -CONFIG_SMB_FS=m -# CONFIG_SMB_NLS_DEFAULT is not set -# CONFIG_CIFS is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set -# CONFIG_9P_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set -CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_MINIX_SUBPARTITION is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_LDM_PARTITION is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_KARMA_PARTITION is not set -# CONFIG_EFI_PARTITION is not set - -# -# Native Language Support -# -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_737=m -CONFIG_NLS_CODEPAGE_775=m -CONFIG_NLS_CODEPAGE_850=m -CONFIG_NLS_CODEPAGE_852=m -CONFIG_NLS_CODEPAGE_855=m -CONFIG_NLS_CODEPAGE_857=m -CONFIG_NLS_CODEPAGE_860=m -CONFIG_NLS_CODEPAGE_861=m -CONFIG_NLS_CODEPAGE_862=m -CONFIG_NLS_CODEPAGE_863=m -CONFIG_NLS_CODEPAGE_864=m -CONFIG_NLS_CODEPAGE_865=m -CONFIG_NLS_CODEPAGE_866=m -CONFIG_NLS_CODEPAGE_869=m -CONFIG_NLS_CODEPAGE_936=m -CONFIG_NLS_CODEPAGE_950=m -CONFIG_NLS_CODEPAGE_932=m -CONFIG_NLS_CODEPAGE_949=m -CONFIG_NLS_CODEPAGE_874=m -CONFIG_NLS_ISO8859_8=m -CONFIG_NLS_CODEPAGE_1250=m -CONFIG_NLS_CODEPAGE_1251=m -CONFIG_NLS_ASCII=m -CONFIG_NLS_ISO8859_1=m -CONFIG_NLS_ISO8859_2=m -CONFIG_NLS_ISO8859_3=m -CONFIG_NLS_ISO8859_4=m -CONFIG_NLS_ISO8859_5=m -CONFIG_NLS_ISO8859_6=m -CONFIG_NLS_ISO8859_7=m -CONFIG_NLS_ISO8859_9=m -CONFIG_NLS_ISO8859_13=m -CONFIG_NLS_ISO8859_14=m -CONFIG_NLS_ISO8859_15=m -CONFIG_NLS_KOI8_R=m -CONFIG_NLS_KOI8_U=m -CONFIG_NLS_UTF8=m - -# -# Profiling support -# -# CONFIG_PROFILING is not set - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -# CONFIG_MAGIC_SYSRQ is not set -# CONFIG_DEBUG_KERNEL is not set -CONFIG_LOG_BUF_SHIFT=14 -# CONFIG_DEBUG_FS is not set -# CONFIG_SH_STANDARD_BIOS is not set -# CONFIG_KGDB is not set - -# -# Security options -# -# CONFIG_KEYS is not set -# CONFIG_SECURITY is not set - -# -# Cryptographic options -# -CONFIG_CRYPTO=y -# CONFIG_CRYPTO_HMAC is not set -# CONFIG_CRYPTO_NULL is not set -CONFIG_CRYPTO_MD4=m -CONFIG_CRYPTO_MD5=m -CONFIG_CRYPTO_SHA1=m -# CONFIG_CRYPTO_SHA256 is not set -# CONFIG_CRYPTO_SHA512 is not set -# CONFIG_CRYPTO_WP512 is not set -# CONFIG_CRYPTO_TGR192 is not set -# CONFIG_CRYPTO_DES is not set -# CONFIG_CRYPTO_BLOWFISH is not set -# CONFIG_CRYPTO_TWOFISH is not set -# CONFIG_CRYPTO_SERPENT is not set -CONFIG_CRYPTO_AES=m -# CONFIG_CRYPTO_CAST5 is not set -# CONFIG_CRYPTO_CAST6 is not set -# CONFIG_CRYPTO_TEA is not set -CONFIG_CRYPTO_ARC4=y -# CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_ANUBIS is not set -# CONFIG_CRYPTO_DEFLATE is not set -CONFIG_CRYPTO_MICHAEL_MIC=m -# CONFIG_CRYPTO_CRC32C is not set -# CONFIG_CRYPTO_TEST is not set - -# -# Hardware crypto devices -# - -# -# Library routines -# -CONFIG_CRC_CCITT=m -CONFIG_CRC16=m -CONFIG_CRC32=y -CONFIG_LIBCRC32C=m -CONFIG_ZLIB_INFLATE=m -CONFIG_ZLIB_DEFLATE=m diff --git a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/io.h-fix.patch b/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/io.h-fix.patch deleted file mode 100644 index 0ae39a8..0000000 --- a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/io.h-fix.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- linux-2.6.17/include/asm-sh/io.h_orig 2006-09-17 22:52:10.000000000 +0000 -+++ linux-2.6.17/include/asm-sh/io.h 2006-09-17 22:54:01.000000000 +0000 -@@ -138,17 +138,17 @@ - #define readl_relaxed(a) readl(a) - - /* Simple MMIO */ --#define ioread8(a) readb(a) --#define ioread16(a) readw(a) --#define ioread16be(a) be16_to_cpu(__raw_readw((a))) --#define ioread32(a) readl(a) --#define ioread32be(a) be32_to_cpu(__raw_readl((a))) -- --#define iowrite8(v,a) writeb((v),(a)) --#define iowrite16(v,a) writew((v),(a)) --#define iowrite16be(v,a) __raw_writew(cpu_to_be16((v)),(a)) --#define iowrite32(v,a) writel((v),(a)) --#define iowrite32be(v,a) __raw_writel(cpu_to_be32((v)),(a)) -+#define ioread8(a) inb(a) -+#define ioread16(a) inw(a) -+#define ioread16be(a) be16_to_cpu(inw((a))) -+#define ioread32(a) inl(a) -+#define ioread32be(a) be32_to_cpu(inl((a))) -+ -+#define iowrite8(v,a) outb((v),(a)) -+#define iowrite16(v,a) outw((v),(a)) -+#define iowrite16be(v,a) outw(cpu_to_be16((v)),(a)) -+#define iowrite32(v,a) outl((v),(a)) -+#define iowrite32be(v,a) outl(cpu_to_be32((v)),(a)) - - #define ioread8_rep(a,d,c) insb((a),(d),(c)) - #define ioread16_rep(a,d,c) insw((a),(d),(c)) diff --git a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/keyboard-fix-deadkeys.patch b/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/keyboard-fix-deadkeys.patch deleted file mode 100644 index 7392355..0000000 --- a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/keyboard-fix-deadkeys.patch +++ /dev/null @@ -1,204 +0,0 @@ ---- linux-2.6.17-linuxsh/drivers/input/keyboard/hp680_keyb.c 2006-12-06 21:56:06.000000000 +0000 -+++ linux-2.6.17/drivers/input/keyboard/hp680_keyb.c 2007-01-10 21:00:34.000000000 +0000 -@@ -5,6 +5,7 @@ - * - * Copyright (C) 2005 Andriy Skulysh - * Copyright (C) 2006 Paul Mundt -+ * Copyright (C) 2007 Kristoffer Ericson - * - * Splited from drivers/input/keyboard/hp600_keyb.c - * -@@ -20,6 +21,10 @@ - #include <asm/io.h> - #include "scan_keyb.h" - -+#define PCCR 0xa4000104 -+#define PDCR 0xa4000106 -+#define PECR 0xa4000108 -+#define PFCR 0xa400010a - #define PCDR 0xa4000124 - #define PDDR 0xa4000126 - #define PEDR 0xa4000128 -@@ -30,6 +35,24 @@ - #define PKDR 0xa4000132 - #define PLDR 0xa4000134 - -+/*************************************************************** -+HP Jornada 680(SWEDISH version) keyboard -+[!] indicates Special Characters -+ -+_______________________________________________________________________ -+| ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 POWER| -+| 1 2 3 4 5 6 7 8 9 0 + ` BKPSPACE| -+|* Q W E R T Y U I O P ! ^ ENTER| -+| TAB A S D F G H J K L ! ! ' ENTER| -+| SHIFT Z X C V B N M , . - UP SHIFT| -+| CTRL WIN ALT ? =======SPACE======== ALTG DEL LEF DO RI ] -+----------------------------------------------------------------------- -+ -+ -+****************************************************************/ -+ -+ -+ - /**************************************************************** - HP Jornada 690(Japanese version) keyboard scan matrix - -@@ -71,31 +94,56 @@ - ****************************************************************/ - - static const unsigned char hp680_japanese_table[] = { -- /* PTD1 */ -+/* -+ /* PTD1 */ -+ /* ? ? ? ? Esc ? ? ? */ - 0x3a, 0x70, 0x29, 0x00, 0x01, 0x00, 0x00, 0x00, -+ /* F1 F2 F3 F8 F7 F6 F4 F5 */ - 0x3b, 0x3c, 0x3d, 0x42, 0x41, 0x40, 0x3e, 0x3f, -- /* PTD5 */ -+ -+ /* PTD5 */ -+ /* / : Enter ? Z ? ? ? */ - 0x35, 0x28, 0x1c, 0x00, 0x2c, 0x00, 0x00, 0x00, -+ /* X C V . , M B N */ - 0x2d, 0x2e, 0x2f, 0x34, 0x33, 0x32, 0x30, 0x31, -- /* PTD7 */ -- 0x50, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x38, 0x7b, -- /* PTE0 */ -+ -+ /* PTD7 */ -+ /* Down Right ? ? ? ? ? ? */ -+ 0x50, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ /* ? ? ? Left ? ? Alt ? */ -+ 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x38, 0x7b, -+ -+ /* PTE0 */ -+ /* ? ? ? ? Win ? ? ? */ - 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, -+ /* Ctrl ? Space Del _ ? ? ? */ - 0x1d, 0x00, 0x39, 0x53, 0x73, 0xf9, 0x00, 0x00, -- /* PTE1 */ -+ -+ /* PTE1 */ -+ /* ; [ ] ? A ? ? ? */ - 0x27, 0x1b, 0x2b, 0x00, 0x1e, 0x00, 0x00, 0x00, -+ /* S D F L K J G H */ - 0x1f, 0x20, 0x21, 0x26, 0x25, 0x24, 0x22, 0x23, -- /* PTE3 */ -- 0x48, 0x7d, 0x36, 0x00, 0x0f, 0x00, 0x00, 0x00, -- 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- /* PTE6 */ -+ -+ /* PTE3 */ -+ /* Up \ ShiftR ? Q ? ? ? */ -+ 0x48, 0x7d, 0x36, 0x00, 0x0f, 0x00, 0x00, 0x00, -+ /* ? ShiftL ? ? ? ? ? ? */ -+ 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ -+ /* PTE6 */ -+ /* P @ BS ? Q ? ? ? */ - 0x19, 0x1a, 0x0e, 0x00, 0x10, 0x00, 0x00, 0x00, -+ /* W E R O I U T Y */ - 0x11, 0x12, 0x13, 0x18, 0x17, 0x16, 0x14, 0x15, -- /* PTE7 */ -- 0x0b, 0x0c, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x00, -- 0x03, 0x04, 0x05, 0x0a, 0x09, 0x08, 0x06, 0x07, -- /* **** */ -+ -+ /* PTE7 */ -+ /* 0 + = ? 1 ? ? ? */ -+ 0x0b, 0x0c, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x00, -+ /* 2 3 4 9 8 7 5 6 */ -+ 0x03, 0x04, 0x05, 0x0a, 0x09, 0x08, 0x06, 0x07, -+ -+ /* **** */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; -@@ -103,37 +151,72 @@ - static int hp680_japanese_scan_kbd(unsigned char *s) - { - int i; -- unsigned char matrix_switch[] = { -- 0xfd, 0xff, /* PTD1 */ -- 0xdf, 0xff, /* PTD5 */ -- 0x7f, 0xff, /* PTD7 */ -- 0xff, 0xfe, /* PTE0 */ -- 0xff, 0xfd, /* PTE1 */ -- 0xff, 0xf7, /* PTE3 */ -- 0xff, 0xbf, /* PTE6 */ -- 0xff, 0x7f, /* PTE7 */ -+ unsigned short ec_static,dc_static; /* = UINT16_t */ -+ unsigned char matrix_switch[] = { -+ 0xfd, 0xff, /* PTD1 PD(1) */ -+ 0xdf, 0xff, /* PTD5 PD(5) */ -+ 0x7f, 0xff, /* PTD7 PD(7) */ -+ 0xff, 0xfe, /* PTE0 PE(0) */ -+ 0xff, 0xfd, /* PTE1 PE(1) */ -+ 0xff, 0xf7, /* PTE3 PE(3) */ -+ 0xff, 0xbf, /* PTE6 PE(6) */ -+ 0xff, 0x7f, /* PTE7 PE(7) */ - }, *t=matrix_switch; -+ /* PD(x) : -+ 1. 0xcc0c & (1~(1 << (2*(x)+1))))) -+ 2. (0xf0cf & 0xfffff) */ -+ /* PE(x) : -+ 1. 0xcc0c & 0xffff -+ 2. 0xf0cf & (1~(1 << (2*(x)+1))))) */ -+ unsigned short matrix_PDE[] = { -+ 0xcc04, 0xf0cf, /* PD(1) */ -+ 0xc40c, 0xf0cf, /* PD(5) */ -+ 0x4c0c, 0xf0cf, /* PD(7) */ -+ 0xcc0c, 0xf0cd, /* PE(0) */ -+ 0xcc0c, 0xf0c7, /* PE(1) */ -+ 0xcc0c, 0xf04f, /* PE(3) */ -+ 0xcc0c, 0xd0cf, /* PE(6) */ -+ 0xcc0c, 0x70cf, /* PE(7) */ -+ } -+ , *y=matrix_PDE; -+ /* Save these control reg bits */ -+ dc_static = (ctrl_inw(PDCR) & (~0xcc0c)); -+ ec_static = (ctrl_inw(PECR) & (~0xf0cf)); - - for(i=0; i<8; i++) { -- ctrl_outb(*t++, PDDR); -+ /* disable output for all but the one we want to scan */ -+ ctrl_outw((dc_static | *y++), PDCR); -+ ctrl_outw((ec_static | *y++), PECR); -+ udelay(5); -+ -+ /* Get scanline row */ -+ ctrl_outb(*t++, PDDR); - ctrl_outb(*t++, PEDR); -+ udelay(50); -+ -+ /* Read data */ - *s++=ctrl_inb(PCDR); - *s++=ctrl_inb(PFDR); - } -- -+ /* Scan no lines */ - ctrl_outb(0xff, PDDR); - ctrl_outb(0xff, PEDR); -+ -+ /* Enable all scanlines */ -+ ctrl_outw((dc_static | (0x5555 & 0xcc0c)),PDCR); -+ ctrl_outw((ec_static | (0x5555 & 0xf0cf)),PECR); -+ /* Ignore extra keys and events */ - - *s++=ctrl_inb(PGDR); - *s++=ctrl_inb(PHDR); -- -+ - return 0; - } - - static struct scan_keyboard hp680_kbd = { - .scan = hp680_japanese_scan_kbd, - .table = hp680_japanese_table, -- .length = 18, -+ .length = 16, - }; - - static int __init hp680_kbd_init_hw(void) diff --git a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/keymap-fix.patch b/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/keymap-fix.patch deleted file mode 100644 index b62d2d8..0000000 --- a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/keymap-fix.patch +++ /dev/null @@ -1,408 +0,0 @@ ---- linux-2.6.17-vanilla/drivers/char/defkeymap.map 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/char/defkeymap.map 2006-07-13 16:43:20.000000000 +0000 -@@ -1,264 +1,185 @@ --# Default kernel keymap. This uses 7 modifier combinations. --keymaps 0-2,4-5,8,12 --# Change the above line into --# keymaps 0-2,4-6,8,12 --# in case you want the entries --# altgr control keycode 83 = Boot --# altgr control keycode 111 = Boot --# below. --# --# In fact AltGr is used very little, and one more keymap can --# be saved by mapping AltGr to Alt (and adapting a few entries): --# keycode 100 = Alt -+# English keymap for Jornada 6xx devices. - # -+# Created by Tibor Zenis ( zenis <at> fmph.uniba.sk ) -+# (Lightly) Modified by Alex Palestras ( B_Linuz <at> yahoo.com ) -+# plain, shift, altgr, ctrl, shift + ctrl, alt, ctrl + alt -+ -+keymaps 0-2,4-5,8,12 - keycode 1 = Escape Escape -- alt keycode 1 = Meta_Escape --keycode 2 = one exclam -- alt keycode 2 = Meta_one --keycode 3 = two at at -- control keycode 3 = nul -- shift control keycode 3 = nul -- alt keycode 3 = Meta_two -+ alt keycode 1 = Meta_Escape -+keycode 2 = one exclam asciitilde -+ alt keycode 2 = Meta_one -+keycode 3 = two at grave -+ alt keycode 3 = Meta_two - keycode 4 = three numbersign -- control keycode 4 = Escape -- alt keycode 4 = Meta_three --keycode 5 = four dollar dollar -- control keycode 5 = Control_backslash -- alt keycode 5 = Meta_four -+ alt keycode 4 = Meta_three -+ altgr keycode 4 = pound -+keycode 5 = four dollar -+ control keycode 5 = Control_backslash -+ alt keycode 5 = Meta_four -+ altgr keycode 5 = currency - keycode 6 = five percent -- control keycode 6 = Control_bracketright -- alt keycode 6 = Meta_five -+ control keycode 6 = Control_bracketright -+ alt keycode 6 = Meta_five - keycode 7 = six asciicircum -- control keycode 7 = Control_asciicircum -- alt keycode 7 = Meta_six --keycode 8 = seven ampersand braceleft -- control keycode 8 = Control_underscore -- alt keycode 8 = Meta_seven --keycode 9 = eight asterisk bracketleft -- control keycode 9 = Delete -- alt keycode 9 = Meta_eight -+ control keycode 7 = Control_asciicircum -+ alt keycode 7 = Meta_six -+keycode 8 = seven ampersand braceleft -+ control keycode 8 = Control_underscore -+ alt keycode 8 = KP_7 -+keycode 9 = eight asterisk bracketleft -+ control keycode 9 = Delete -+ alt keycode 9 = KP_8 - keycode 10 = nine parenleft bracketright -- alt keycode 10 = Meta_nine -+ alt keycode 10 = KP_9 - keycode 11 = zero parenright braceright -- alt keycode 11 = Meta_zero --keycode 12 = minus underscore backslash -- control keycode 12 = Control_underscore -- shift control keycode 12 = Control_underscore -- alt keycode 12 = Meta_minus -+ alt keycode 11 = KP_Divide -+keycode 12 = minus underscore backslash -+ control keycode 11 = Control_underscore -+ shift control keycode 11 = Control_underscore -+ alt keycode 11 = Meta_minus - keycode 13 = equal plus -- alt keycode 13 = Meta_equal -+ alt keycode 13 = Meta_equal - keycode 14 = Delete Delete -- control keycode 14 = BackSpace -- alt keycode 14 = Meta_Delete -+ control keycode 14 = BackSpace -+ alt keycode 14 = Meta_Delete - keycode 15 = Tab Tab -- alt keycode 15 = Meta_Tab -+ alt keycode 15 = Meta_Tab - keycode 16 = q - keycode 17 = w - keycode 18 = e -- altgr keycode 18 = Hex_E -+ Shift keycode 18 = E - keycode 19 = r - keycode 20 = t - keycode 21 = y -+ alt keycode 21 = KP_4 - keycode 22 = u -+ alt keycode 22 = KP_5 - keycode 23 = i --keycode 24 = o --keycode 25 = p --keycode 26 = bracketleft braceleft -- control keycode 26 = Escape -- alt keycode 26 = Meta_bracketleft --keycode 27 = bracketright braceright asciitilde -- control keycode 27 = Control_bracketright -- alt keycode 27 = Meta_bracketright -+ alt keycode 23 = KP_6 -+keycode 24 = o -+ alt keycode 24 = KP_Multiply -+keycode 25 = p -+ AltGr keycode 25 = braceleft -+keycode 26 = backslash bar -+ AltGr keycode 26 = braceright - keycode 28 = Return -- alt keycode 28 = Meta_Control_m -+ alt keycode 28 = Meta_Control_m - keycode 29 = Control -+ altgr keycode 29 = Num_Lock - keycode 30 = a -- altgr keycode 30 = Hex_A - keycode 31 = s - keycode 32 = d -- altgr keycode 32 = Hex_D - keycode 33 = f -- altgr keycode 33 = Hex_F - keycode 34 = g - keycode 35 = h -+ alt keycode 35 = KP_1 - keycode 36 = j -+ alt keycode 36 = KP_2 - keycode 37 = k -+ alt keycode 37 = KP_3 - keycode 38 = l --keycode 39 = semicolon colon -- alt keycode 39 = Meta_semicolon --keycode 40 = apostrophe quotedbl -- control keycode 40 = Control_g -- alt keycode 40 = Meta_apostrophe --keycode 41 = grave asciitilde -- control keycode 41 = nul -- alt keycode 41 = Meta_grave -+ alt keycode 38 = KP_Subtract -+keycode 39 = semicolon colon bracketleft -+ alt keycode 39 = Meta_semicolon -+keycode 40 = apostrophe quotedbl bracketright -+ control keycode 40 = Control_g -+ alt keycode 40 = Meta_apostrophe -+keycode 41 = F11 -+ shift keycode 41 = F21 -+ altgr keycode 41 = Console_23 -+ alt keycode 41 = Console_11 -+ control alt keycode 41 = Console_11 - keycode 42 = Shift --keycode 43 = backslash bar -- control keycode 43 = Control_backslash -- alt keycode 43 = Meta_backslash -+ altgr keycode 42 = Caps_Lock - keycode 44 = z - keycode 45 = x - keycode 46 = c -- altgr keycode 46 = Hex_C - keycode 47 = v - keycode 48 = b -- altgr keycode 48 = Hex_B - keycode 49 = n -+ alt keycode 49 = KP_0 - keycode 50 = m -+ alt keycode 50 = KP_Comma - keycode 51 = comma less -- alt keycode 51 = Meta_comma -+ alt keycode 51 = KP_Period - keycode 52 = period greater -- control keycode 52 = Compose -- alt keycode 52 = Meta_period --keycode 53 = slash question -- control keycode 53 = Delete -- alt keycode 53 = Meta_slash --keycode 54 = Shift --keycode 55 = KP_Multiply -+ control keycode 52 = Compose -+ alt keycode 52 = KP_Add -+keycode 54 = Shift - keycode 56 = Alt - keycode 57 = space space -- control keycode 57 = nul -- alt keycode 57 = Meta_space --keycode 58 = Caps_Lock --keycode 59 = F1 F11 Console_13 -- control keycode 59 = F1 -- alt keycode 59 = Console_1 -- control alt keycode 59 = Console_1 --keycode 60 = F2 F12 Console_14 -- control keycode 60 = F2 -- alt keycode 60 = Console_2 -- control alt keycode 60 = Console_2 --keycode 61 = F3 F13 Console_15 -- control keycode 61 = F3 -- alt keycode 61 = Console_3 -- control alt keycode 61 = Console_3 --keycode 62 = F4 F14 Console_16 -- control keycode 62 = F4 -- alt keycode 62 = Console_4 -- control alt keycode 62 = Console_4 --keycode 63 = F5 F15 Console_17 -- control keycode 63 = F5 -- alt keycode 63 = Console_5 -- control alt keycode 63 = Console_5 --keycode 64 = F6 F16 Console_18 -- control keycode 64 = F6 -- alt keycode 64 = Console_6 -- control alt keycode 64 = Console_6 --keycode 65 = F7 F17 Console_19 -- control keycode 65 = F7 -- alt keycode 65 = Console_7 -- control alt keycode 65 = Console_7 --keycode 66 = F8 F18 Console_20 -- control keycode 66 = F8 -- alt keycode 66 = Console_8 -- control alt keycode 66 = Console_8 --keycode 67 = F9 F19 Console_21 -- control keycode 67 = F9 -- alt keycode 67 = Console_9 -- control alt keycode 67 = Console_9 --keycode 68 = F10 F20 Console_22 -- control keycode 68 = F10 -- alt keycode 68 = Console_10 -- control alt keycode 68 = Console_10 --keycode 69 = Num_Lock -- shift keycode 69 = Bare_Num_Lock --keycode 70 = Scroll_Lock Show_Memory Show_Registers -- control keycode 70 = Show_State -- alt keycode 70 = Scroll_Lock --keycode 71 = KP_7 -- alt keycode 71 = Ascii_7 -- altgr keycode 71 = Hex_7 --keycode 72 = KP_8 -- alt keycode 72 = Ascii_8 -- altgr keycode 72 = Hex_8 --keycode 73 = KP_9 -- alt keycode 73 = Ascii_9 -- altgr keycode 73 = Hex_9 --keycode 74 = KP_Subtract --keycode 75 = KP_4 -- alt keycode 75 = Ascii_4 -- altgr keycode 75 = Hex_4 --keycode 76 = KP_5 -- alt keycode 76 = Ascii_5 -- altgr keycode 76 = Hex_5 --keycode 77 = KP_6 -- alt keycode 77 = Ascii_6 -- altgr keycode 77 = Hex_6 --keycode 78 = KP_Add --keycode 79 = KP_1 -- alt keycode 79 = Ascii_1 -- altgr keycode 79 = Hex_1 --keycode 80 = KP_2 -- alt keycode 80 = Ascii_2 -- altgr keycode 80 = Hex_2 --keycode 81 = KP_3 -- alt keycode 81 = Ascii_3 -- altgr keycode 81 = Hex_3 --keycode 82 = KP_0 -- alt keycode 82 = Ascii_0 -- altgr keycode 82 = Hex_0 --keycode 83 = KP_Period --# altgr control keycode 83 = Boot -- control alt keycode 83 = Boot --keycode 84 = Last_Console --keycode 85 = --keycode 86 = less greater bar -- alt keycode 86 = Meta_less --keycode 87 = F11 F11 Console_23 -- control keycode 87 = F11 -- alt keycode 87 = Console_11 -- control alt keycode 87 = Console_11 --keycode 88 = F12 F12 Console_24 -- control keycode 88 = F12 -- alt keycode 88 = Console_12 -- control alt keycode 88 = Console_12 --keycode 89 = --keycode 90 = --keycode 91 = --keycode 92 = --keycode 93 = --keycode 94 = --keycode 95 = --keycode 96 = KP_Enter --keycode 97 = Control --keycode 98 = KP_Divide --keycode 99 = Control_backslash -- control keycode 99 = Control_backslash -- alt keycode 99 = Control_backslash --keycode 100 = AltGr --keycode 101 = Break --keycode 102 = Find --keycode 103 = Up --keycode 104 = Prior -- shift keycode 104 = Scroll_Backward --keycode 105 = Left -- alt keycode 105 = Decr_Console --keycode 106 = Right -- alt keycode 106 = Incr_Console --keycode 107 = Select --keycode 108 = Down --keycode 109 = Next -- shift keycode 109 = Scroll_Forward --keycode 110 = Insert --keycode 111 = Remove --# altgr control keycode 111 = Boot -- control alt keycode 111 = Boot --keycode 112 = Macro --keycode 113 = F13 --keycode 114 = F14 --keycode 115 = Help --keycode 116 = Do --keycode 117 = F17 --keycode 118 = KP_MinPlus --keycode 119 = Pause --keycode 120 = --keycode 121 = --keycode 122 = --keycode 123 = --keycode 124 = --keycode 125 = --keycode 126 = --keycode 127 = -+ alt keycode 57 = Meta_space -+keycode 58 = F9 -+ shift keycode 58 = F19 -+ altgr keycode 58 = Console_21 -+ alt keycode 58 = Console_9 -+ control alt keycode 58 = Console_9 -+keycode 59 = F1 -+ altgr keycode 59 = Console_13 -+ alt keycode 59 = Console_1 -+ control alt keycode 59 = Console_1 -+keycode 60 = F2 -+ shift keycode 60 = F12 -+ altgr keycode 60 = Console_14 -+ alt keycode 60 = Console_2 -+ control alt keycode 60 = Console_2 -+keycode 61 = F3 -+ shift keycode 61 = F13 -+ altgr keycode 61 = Console_15 -+ alt keycode 61 = Console_3 -+ control alt keycode 61 = Console_3 -+keycode 62 = F4 -+ shift keycode 62 = F14 -+ altgr keycode 62 = Console_16 -+ alt keycode 62 = Console_4 -+ control alt keycode 62 = Console_4 -+keycode 63 = F5 -+ shift keycode 63 = F15 -+ altgr keycode 63 = Console_17 -+ alt keycode 63 = Console_5 -+ control alt keycode 63 = Console_5 -+keycode 64 = F6 -+ shift keycode 64 = F16 -+ altgr keycode 64 = Console_18 -+ alt keycode 64 = Console_6 -+ control alt keycode 64 = Console_6 -+keycode 65 = F7 -+ shift keycode 65 = F17 -+ altgr keycode 65 = Console_19 -+ alt keycode 65 = Console_7 -+ control alt keycode 65 = Console_7 -+keycode 66 = F8 -+ shift keycode 66 = F18 -+ altgr keycode 66 = Console_20 -+ alt keycode 66 = Console_8 -+ control alt keycode 66 = Console_8 -+keycode 72 = Up -+ shift keycode 72 = Scroll_Backward -+ altgr keycode 72 = Scroll_Backward -+ alt keycode 72 = Prior -+keycode 75 = Left -+ altgr keycode 75 = Decr_Console -+ alt keycode 75 = Find -+keycode 77 = Right -+ altgr keycode 77 = Incr_Console -+ alt keycode 77 = Select -+keycode 80 = Down -+ shift keycode 80 = Scroll_Forward -+ altgr keycode 80 = Scroll_Forward -+ alt keycode 80 = Next -+keycode 83 = Remove Remove Meta_Delete -+ alt keycode 83 = Meta_Delete -+keycode 112 = F10 -+ shift keycode 112 = F20 -+ altgr keycode 112 = Console_22 -+ alt keycode 112 = Console_10 -+ control alt keycode 112 = Console_10 -+keycode 115 = slash question -+ control keycode 115 = Delete -+ alt keycode 115 = Meta_slash -+keycode 123 = AltGr -+keycode 219 = Insert - string F1 = "\033[[A" - string F2 = "\033[[B" - string F3 = "\033[[C" diff --git a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/rtc-2.6.17.patch b/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/rtc-2.6.17.patch deleted file mode 100644 index a744c26..0000000 --- a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/rtc-2.6.17.patch +++ /dev/null @@ -1,987 +0,0 @@ -diff -ru linux-2.6.17.old/arch/sh/boards/hp6xx/pm.c linux-2.6.17/arch/sh/boards/hp6xx/pm.c ---- linux-2.6.17.old/arch/sh/boards/hp6xx/pm.c 2009-12-21 10:27:22.776442805 +0200 -+++ linux-2.6.17/arch/sh/boards/hp6xx/pm.c 2009-12-21 10:30:09.366428509 +0200 -@@ -17,6 +17,10 @@ - #include <asm/cpu/dac.h> - #include <asm/pm.h> - -+#include <asm-sh/rtc.h> -+#include <linux/time.h> -+#include <asm-sh/rtc.h> -+ - #define STBCR 0xffffff82 - #define STBCR2 0xffffff88 - -@@ -68,6 +72,8 @@ - outb(0x00, HD64461_PCC1CSCR); - #endif - -+ rtc_sh_get_time(&xtime); -+ - return 0; - } - -diff -ru linux-2.6.17.old/arch/sh/kernel/cpu/irq/ipr.c linux-2.6.17/arch/sh/kernel/cpu/irq/ipr.c ---- linux-2.6.17.old/arch/sh/kernel/cpu/irq/ipr.c 2006-06-18 04:49:35.000000000 +0300 -+++ linux-2.6.17/arch/sh/kernel/cpu/irq/ipr.c 2009-12-21 10:29:58.713508059 +0200 -@@ -125,7 +125,12 @@ - make_ipr_irq(TIMER_IRQ, TIMER_IPR_ADDR, TIMER_IPR_POS, TIMER_PRIORITY); - make_ipr_irq(TIMER1_IRQ, TIMER1_IPR_ADDR, TIMER1_IPR_POS, TIMER1_PRIORITY); - #if defined(CONFIG_SH_RTC) -+ make_ipr_irq(20, RTC_IPR_ADDR, RTC_IPR_POS, RTC_PRIORITY); -+ printk("kernel IRQ RTC =%i\n",20); -+ make_ipr_irq(21, RTC_IPR_ADDR, RTC_IPR_POS, RTC_PRIORITY); -+ printk("kernel IRQ RTC =%i\n",21); - make_ipr_irq(RTC_IRQ, RTC_IPR_ADDR, RTC_IPR_POS, RTC_PRIORITY); -+ printk("kernel IRQ RTC =%i\n",RTC_IRQ); - #endif - - #ifdef SCI_ERI_IRQ -diff -ru linux-2.6.17.old/arch/sh/kernel/cpu/sh3/Makefile linux-2.6.17/arch/sh/kernel/cpu/sh3/Makefile ---- linux-2.6.17.old/arch/sh/kernel/cpu/sh3/Makefile 2006-06-18 04:49:35.000000000 +0300 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh3/Makefile 2009-12-21 10:29:58.713508059 +0200 -@@ -4,10 +4,13 @@ - - obj-y := ex.o probe.o - -+obj-$(CONFIG_CPU_SUBTYPE_SH7709) += setup-sh770x.o -+ - clock-$(CONFIG_CPU_SH3) := clock-sh3.o - clock-$(CONFIG_CPU_SUBTYPE_SH7300) := clock-sh7300.o - clock-$(CONFIG_CPU_SUBTYPE_SH7705) := clock-sh7705.o --clock-$(CONFIG_CPU_SUBTYPE_SH7709) := clock-sh7709.o -+# clock-$(CONFIG_CPU_SUBTYPE_SH7709) := clock-sh7709.o -+clock-$(CONFIG_CPU_SUBTYPE_SH7709) := clock-sh7709.o - - obj-y += $(clock-y) - -diff -ru linux-2.6.17.old/arch/sh/kernel/cpu/sh3/setup-sh770x.c linux-2.6.17/arch/sh/kernel/cpu/sh3/setup-sh770x.c ---- linux-2.6.17.old/arch/sh/kernel/cpu/sh3/setup-sh770x.c 2009-12-21 10:32:06.699746910 +0200 -+++ linux-2.6.17/arch/sh/kernel/cpu/sh3/setup-sh770x.c 2009-12-21 10:29:58.713508059 +0200 -@@ -0,0 +1,217 @@ -+/* -+ * SH3 Setup code for SH7706, SH7707, SH7708, SH7709 -+ * -+ * Copyright (C) 2007 Magnus Damm -+ * -+ * Based on setup-sh7709.c -+ * -+ * Copyright (C) 2006 Paul Mundt -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+#include <linux/init.h> -+#include <linux/io.h> -+#include <linux/irq.h> -+#include <linux/platform_device.h> -+#include <linux/serial.h> -+#include <linux/serial_sci.h> -+ -+enum { -+ UNUSED = 0, -+ -+ /* interrupt sources */ -+ IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, -+ PINT07, PINT815, -+ DMAC_DEI0, DMAC_DEI1, DMAC_DEI2, DMAC_DEI3, -+ SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI, -+ SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI, -+ SCI_ERI, SCI_RXI, SCI_TXI, SCI_TEI, -+ ADC_ADI, -+ LCDC, PCC0, PCC1, -+ TMU0, TMU1, TMU2_TUNI, TMU2_TICPI, -+ RTC_ATI, RTC_PRI, RTC_CUI, -+ WDT, -+ REF_RCMI, REF_ROVI, -+ -+ /* interrupt groups */ -+ RTC, REF, TMU2, DMAC, SCI, SCIF2, SCIF0, -+}; -+ -+static struct intc_vect vectors[] __initdata = { -+ INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420), -+ INTC_VECT(TMU2_TUNI, 0x440), INTC_VECT(TMU2_TICPI, 0x460), -+ INTC_VECT(RTC_ATI, 0x480), INTC_VECT(RTC_PRI, 0x4a0), -+ INTC_VECT(RTC_CUI, 0x4c0), -+ INTC_VECT(SCI_ERI, 0x4e0), INTC_VECT(SCI_RXI, 0x500), -+ INTC_VECT(SCI_TXI, 0x520), INTC_VECT(SCI_TEI, 0x540), -+ INTC_VECT(WDT, 0x560), -+ INTC_VECT(REF_RCMI, 0x580), -+ INTC_VECT(REF_ROVI, 0x5a0), -+#if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7707) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7709) -+ INTC_VECT(IRQ4, 0x680), INTC_VECT(IRQ5, 0x6a0), -+ INTC_VECT(DMAC_DEI0, 0x800), INTC_VECT(DMAC_DEI1, 0x820), -+ INTC_VECT(DMAC_DEI2, 0x840), INTC_VECT(DMAC_DEI3, 0x860), -+ INTC_VECT(ADC_ADI, 0x980), -+ INTC_VECT(SCIF2_ERI, 0x900), INTC_VECT(SCIF2_RXI, 0x920), -+ INTC_VECT(SCIF2_BRI, 0x940), INTC_VECT(SCIF2_TXI, 0x960), -+#endif -+#if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7709) -+ INTC_VECT(PINT07, 0x700), INTC_VECT(PINT815, 0x720), -+ INTC_VECT(SCIF0_ERI, 0x880), INTC_VECT(SCIF0_RXI, 0x8a0), -+ INTC_VECT(SCIF0_BRI, 0x8c0), INTC_VECT(SCIF0_TXI, 0x8e0), -+#endif -+#if defined(CONFIG_CPU_SUBTYPE_SH7707) -+ INTC_VECT(LCDC, 0x9a0), -+ INTC_VECT(PCC0, 0x9c0), INTC_VECT(PCC1, 0x9e0), -+#endif -+}; -+ -+static struct intc_group groups[] __initdata = { -+ INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), -+ INTC_GROUP(TMU2, TMU2_TUNI, TMU2_TICPI), -+ INTC_GROUP(REF, REF_RCMI, REF_ROVI), -+ INTC_GROUP(DMAC, DMAC_DEI0, DMAC_DEI1, DMAC_DEI2, DMAC_DEI3), -+ INTC_GROUP(SCI, SCI_ERI, SCI_RXI, SCI_TXI, SCI_TEI), -+ INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI), -+ INTC_GROUP(SCIF2, SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI), -+}; -+ -+static struct intc_prio_reg prio_registers[] __initdata = { -+ { 0xfffffee2, 0, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2, RTC } }, -+ { 0xfffffee4, 0, 16, 4, /* IPRB */ { WDT, REF, SCI, 0 } }, -+#if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7707) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7709) -+ { 0xa4000016, 0, 16, 4, /* IPRC */ { IRQ3, IRQ2, IRQ1, IRQ0 } }, -+ { 0xa4000018, 0, 16, 4, /* IPRD */ { 0, 0, IRQ5, IRQ4 } }, -+ { 0xa400001a, 0, 16, 4, /* IPRE */ { DMAC, 0, SCIF2, ADC_ADI } }, -+#endif -+#if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7709) -+ { 0xa4000018, 0, 16, 4, /* IPRD */ { PINT07, PINT815, } }, -+ { 0xa400001a, 0, 16, 4, /* IPRE */ { 0, SCIF0 } }, -+#endif -+#if defined(CONFIG_CPU_SUBTYPE_SH7707) -+ { 0xa400001c, 0, 16, 4, /* IPRF */ { 0, LCDC, PCC0, PCC1, } }, -+#endif -+}; -+ -+static DECLARE_INTC_DESC(intc_desc, "sh770x", vectors, groups, -+ NULL, prio_registers, NULL); -+ -+#if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7707) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7709) -+static struct intc_vect vectors_irq[] __initdata = { -+ INTC_VECT(IRQ0, 0x600), INTC_VECT(IRQ1, 0x620), -+ INTC_VECT(IRQ2, 0x640), INTC_VECT(IRQ3, 0x660), -+}; -+ -+static DECLARE_INTC_DESC(intc_desc_irq, "sh770x-irq", vectors_irq, NULL, -+ NULL, prio_registers, NULL); -+#endif -+ -+static struct resource rtc_resources[] = { -+ [0] = { -+ .start = 0xfffffec0, -+ .end = 0xfffffec0 + 0x1e, -+ .flags = IORESOURCE_IO, -+ }, -+ [1] = { -+ .start = 21, -+ .flags = IORESOURCE_IRQ, -+ }, -+ [2] = { -+ .start = 22, -+ .flags = IORESOURCE_IRQ, -+ }, -+ [3] = { -+ .start = 20, -+ .flags = IORESOURCE_IRQ, -+ }, -+}; -+ -+static struct platform_device rtc_device = { -+ .name = "sh-rtc", -+ .id = -1, -+ .num_resources = ARRAY_SIZE(rtc_resources), -+ .resource = rtc_resources, -+}; -+ -+static struct plat_sci_port sci_platform_data[] = { -+ { -+ .mapbase = 0xfffffe80, -+ .flags = UPF_BOOT_AUTOCONF, -+ .type = PORT_SCI, -+ .irqs = { 23, 24, 25, 0 }, -+ }, -+#if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7707) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7709) -+ { -+ .mapbase = 0xa4000150, -+ .flags = UPF_BOOT_AUTOCONF, -+ .type = PORT_SCIF, -+ .irqs = { 56, 57, 59, 58 }, -+ }, -+#endif -+#if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7709) -+ { -+ .mapbase = 0xa4000140, -+ .flags = UPF_BOOT_AUTOCONF, -+ .type = PORT_IRDA, -+ .irqs = { 52, 53, 55, 54 }, -+ }, -+#endif -+ { -+ .flags = 0, -+ } -+}; -+ -+static struct platform_device sci_device = { -+ .name = "sh-sci", -+ .id = -1, -+ .dev = { -+ .platform_data = sci_platform_data, -+ }, -+}; -+ -+static struct platform_device *sh770x_devices[] __initdata = { -+ &sci_device, -+ &rtc_device, -+}; -+ -+static int __init sh770x_devices_setup(void) -+{ -+ return platform_add_devices(sh770x_devices, -+ ARRAY_SIZE(sh770x_devices)); -+} -+__initcall(sh770x_devices_setup); -+ -+#define INTC_ICR1 0xa4000010UL -+#define INTC_ICR1_IRQLVL (1<<14) -+ -+void __init plat_irq_setup_pins(int mode) -+{ -+ if (mode == IRQ_MODE_IRQ) { -+#if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7707) || \ -+ defined(CONFIG_CPU_SUBTYPE_SH7709) -+ ctrl_outw(ctrl_inw(INTC_ICR1) & ~INTC_ICR1_IRQLVL, INTC_ICR1); -+/* register_intc_controller(&intc_desc_irq); */ -+ return; -+#endif -+ } -+ BUG(); -+} -+ -+void __init plat_irq_setup(void) -+{ -+/* register_intc_controller(&intc_desc); */ -+} -diff -ru linux-2.6.17.old/drivers/rtc/interface.c linux-2.6.17/drivers/rtc/interface.c ---- linux-2.6.17.old/drivers/rtc/interface.c 2006-06-18 04:49:35.000000000 +0300 -+++ linux-2.6.17/drivers/rtc/interface.c 2009-12-21 10:29:58.713508059 +0200 -@@ -145,11 +145,16 @@ - } - EXPORT_SYMBOL_GPL(rtc_set_alarm); - --void rtc_update_irq(struct class_device *class_dev, -+/** -+ * rtc_update_irq - report RTC periodic, alarm, and/or update irqs -+ * @rtc: the rtc device -+ * @num: how many irqs are being reported (usually one) -+ * @events: mask of RTC_IRQF with one or more of RTC_PF, RTC_AF, RTC_UF -+ * Context: in_interrupt(), irqs blocked -+ */ -+void rtc_update_irq(struct rtc_device *rtc, - unsigned long num, unsigned long events) - { -- struct rtc_device *rtc = to_rtc_device(class_dev); -- - spin_lock(&rtc->irq_lock); - rtc->irq_data = (rtc->irq_data + (num << 8)) | events; - spin_unlock(&rtc->irq_lock); -diff -ru linux-2.6.17.old/drivers/rtc/rtc-sh.c linux-2.6.17/drivers/rtc/rtc-sh.c ---- linux-2.6.17.old/drivers/rtc/rtc-sh.c 2009-12-21 10:27:23.403110577 +0200 -+++ linux-2.6.17/drivers/rtc/rtc-sh.c 2009-12-21 10:29:58.716840103 +0200 -@@ -1,7 +1,8 @@ - /* - * SuperH On-Chip RTC Support - * -- * Copyright (C) 2006 Paul Mundt -+ * Copyright (C) 2006, 2007 Paul Mundt -+ * Copyright (C) 2006 Jamie Lenehan - * - * Based on the old arch/sh/kernel/cpu/rtc.c by: - * -@@ -21,34 +22,46 @@ - #include <linux/seq_file.h> - #include <linux/interrupt.h> - #include <linux/spinlock.h> --#include <asm/io.h> -+#include <linux/io.h> -+#include <asm/rtc.h> - --#ifdef CONFIG_CPU_SH3 --#define rtc_reg_size sizeof(u16) --#define RTC_BIT_INVERTED 0 /* No bug on SH7708, SH7709A */ --#elif defined(CONFIG_CPU_SH4) --#define rtc_reg_size sizeof(u32) --#define RTC_BIT_INVERTED 0x40 /* bug on SH7750, SH7750S */ --#endif -+#define DRV_NAME "sh-rtc" -+#define DRV_VERSION "0.1.6" - - #define RTC_REG(r) ((r) * rtc_reg_size) - --#define R64CNT RTC_REG(0) --#define RSECCNT RTC_REG(1) --#define RMINCNT RTC_REG(2) --#define RHRCNT RTC_REG(3) --#define RWKCNT RTC_REG(4) --#define RDAYCNT RTC_REG(5) --#define RMONCNT RTC_REG(6) --#define RYRCNT RTC_REG(7) --#define RSECAR RTC_REG(8) --#define RMINAR RTC_REG(9) --#define RHRAR RTC_REG(10) --#define RWKAR RTC_REG(11) --#define RDAYAR RTC_REG(12) --#define RMONAR RTC_REG(13) --#define RCR1 RTC_REG(14) --#define RCR2 RTC_REG(15) -+#define R64CNT RTC_REG(0) -+ -+#define RSECCNT RTC_REG(1) /* RTC sec */ -+#define RMINCNT RTC_REG(2) /* RTC min */ -+#define RHRCNT RTC_REG(3) /* RTC hour */ -+#define RWKCNT RTC_REG(4) /* RTC week */ -+#define RDAYCNT RTC_REG(5) /* RTC day */ -+#define RMONCNT RTC_REG(6) /* RTC month */ -+#define RYRCNT RTC_REG(7) /* RTC year */ -+#define RSECAR RTC_REG(8) /* ALARM sec */ -+#define RMINAR RTC_REG(9) /* ALARM min */ -+#define RHRAR RTC_REG(10) /* ALARM hour */ -+#define RWKAR RTC_REG(11) /* ALARM week */ -+#define RDAYAR RTC_REG(12) /* ALARM day */ -+#define RMONAR RTC_REG(13) /* ALARM month */ -+#define RCR1 RTC_REG(14) /* Control */ -+#define RCR2 RTC_REG(15) /* Control */ -+ -+/* -+ * Note on RYRAR and RCR3: Up until this point most of the register -+ * definitions are consistent across all of the available parts. However, -+ * the placement of the optional RYRAR and RCR3 (the RYRAR control -+ * register used to control RYRCNT/RYRAR compare) varies considerably -+ * across various parts, occasionally being mapped in to a completely -+ * unrelated address space. For proper RYRAR support a separate resource -+ * would have to be handed off, but as this is purely optional in -+ * practice, we simply opt not to support it, thereby keeping the code -+ * quite a bit more simplified. -+ */ -+ -+/* ALARM Bits - or with BCD encoded value */ -+#define AR_ENB 0x80 /* Enable for alarm cmp */ - - /* RCR1 Bits */ - #define RCR1_CF 0x80 /* Carry Flag */ -@@ -71,39 +84,82 @@ - unsigned int alarm_irq, periodic_irq, carry_irq; - struct rtc_device *rtc_dev; - spinlock_t lock; -+ int rearm_aie; -+ unsigned long capabilities; /* See asm-sh/rtc.h for cap bits */ - }; - --static irqreturn_t sh_rtc_interrupt(int irq, void *id, struct pt_regs *regs) -+static irqreturn_t sh_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs) - { -- struct platform_device *pdev = id; -+ struct platform_device *pdev = to_platform_device(dev_id); - struct sh_rtc *rtc = platform_get_drvdata(pdev); - unsigned int tmp, events = 0; - - spin_lock(&rtc->lock); - - tmp = readb(rtc->regbase + RCR1); -+ tmp &= ~RCR1_CF; - -- if (tmp & RCR1_AF) -- events |= RTC_AF | RTC_IRQF; -- -- tmp &= ~(RCR1_CF | RCR1_AF); -+ if (rtc->rearm_aie) { -+ if (tmp & RCR1_AF) -+ tmp &= ~RCR1_AF; /* try to clear AF again */ -+ else { -+ tmp |= RCR1_AIE; /* AF has cleared, rearm IRQ */ -+ rtc->rearm_aie = 0; -+ } -+ } - - writeb(tmp, rtc->regbase + RCR1); -- -- rtc_update_irq(&rtc->rtc_dev->class_dev, 1, events); -+ -+ rtc_update_irq(rtc->rtc_dev, 1, events); - - spin_unlock(&rtc->lock); - - return IRQ_HANDLED; - } - --static irqreturn_t sh_rtc_periodic(int irq, void *id, struct pt_regs *regs) -+static irqreturn_t sh_rtc_alarm(int irq, void *dev_id, struct pt_regs *regs) -+{ -+ struct platform_device *pdev = to_platform_device(dev_id); -+ struct sh_rtc *rtc = platform_get_drvdata(pdev); -+ unsigned int tmp, events = 0; -+ -+ spin_lock(&rtc->lock); -+ -+ tmp = readb(rtc->regbase + RCR1); -+ -+ /* -+ * If AF is set then the alarm has triggered. If we clear AF while -+ * the alarm time still matches the RTC time then AF will -+ * immediately be set again, and if AIE is enabled then the alarm -+ * interrupt will immediately be retrigger. So we clear AIE here -+ * and use rtc->rearm_aie so that the carry interrupt will keep -+ * trying to clear AF and once it stays cleared it'll re-enable -+ * AIE. -+ */ -+ if (tmp & RCR1_AF) { -+ events |= RTC_AF | RTC_IRQF; -+ -+ tmp &= ~(RCR1_AF|RCR1_AIE); -+ -+ writeb(tmp, rtc->regbase + RCR1); -+ -+ rtc->rearm_aie = 1; -+ -+ rtc_update_irq(rtc->rtc_dev, 1, events); -+ } -+ -+ spin_unlock(&rtc->lock); -+ return IRQ_HANDLED; -+} -+ -+static irqreturn_t sh_rtc_periodic(int irq, void *dev_id, struct pt_regs *regs) - { -- struct sh_rtc *rtc = dev_get_drvdata(id); -+ struct platform_device *pdev = to_platform_device(dev_id); -+ struct sh_rtc *rtc = platform_get_drvdata(pdev); - - spin_lock(&rtc->lock); - -- rtc_update_irq(&rtc->rtc_dev->class_dev, 1, RTC_PF | RTC_IRQF); -+ rtc_update_irq(rtc->rtc_dev, 1, RTC_PF | RTC_IRQF); - - spin_unlock(&rtc->lock); - -@@ -139,10 +195,11 @@ - - tmp = readb(rtc->regbase + RCR1); - -- if (enable) -- tmp |= RCR1_AIE; -- else -+ if (!enable) { - tmp &= ~RCR1_AIE; -+ rtc->rearm_aie = 0; -+ } else if (rtc->rearm_aie == 0) -+ tmp |= RCR1_AIE; - - writeb(tmp, rtc->regbase + RCR1); - -@@ -177,14 +234,14 @@ - goto err_bad_carry; - } - -- ret = request_irq(rtc->alarm_irq, sh_rtc_interrupt, SA_INTERRUPT, -+ ret = request_irq(rtc->alarm_irq, sh_rtc_alarm, SA_INTERRUPT, - "sh-rtc alarm", dev); - if (unlikely(ret)) { - dev_err(dev, "request alarm IRQ failed with %d, IRQ %d\n", - ret, rtc->alarm_irq); - goto err_bad_alarm; - } -- -+ - return 0; - - err_bad_alarm: -@@ -200,6 +257,7 @@ - struct sh_rtc *rtc = dev_get_drvdata(dev); - - sh_rtc_setpie(dev, 0); -+ sh_rtc_setaie(dev, 0); - - free_irq(rtc->periodic_irq, dev); - free_irq(rtc->carry_irq, dev); -@@ -212,8 +270,6 @@ - unsigned int tmp; - - tmp = readb(rtc->regbase + RCR1); -- seq_printf(seq, "alarm_IRQ\t: %s\n", -- (tmp & RCR1_AIE) ? "yes" : "no"); - seq_printf(seq, "carry_IRQ\t: %s\n", - (tmp & RCR1_CIE) ? "yes" : "no"); - -@@ -267,16 +323,16 @@ - tm->tm_hour = BCD2BIN(readb(rtc->regbase + RHRCNT)); - tm->tm_wday = BCD2BIN(readb(rtc->regbase + RWKCNT)); - tm->tm_mday = BCD2BIN(readb(rtc->regbase + RDAYCNT)); -- tm->tm_mon = BCD2BIN(readb(rtc->regbase + RMONCNT)); -+ tm->tm_mon = BCD2BIN(readb(rtc->regbase + RMONCNT)) - 1; - --#if defined(CONFIG_CPU_SH4) -- yr = readw(rtc->regbase + RYRCNT); -- yr100 = BCD2BIN(yr >> 8); -- yr &= 0xff; --#else -- yr = readb(rtc->regbase + RYRCNT); -- yr100 = BCD2BIN((yr == 0x99) ? 0x19 : 0x20); --#endif -+ if (rtc->capabilities & RTC_CAP_4_DIGIT_YEAR) { -+ yr = readw(rtc->regbase + RYRCNT); -+ yr100 = BCD2BIN(yr >> 8); -+ yr &= 0xff; -+ } else { -+ yr = readb(rtc->regbase + RYRCNT); -+ yr100 = BCD2BIN((yr == 0x99) ? 0x19 : 0x20); -+ } - - tm->tm_year = (yr100 * 100 + BCD2BIN(yr)) - 1900; - -@@ -291,14 +347,16 @@ - tm->tm_sec--; - #endif - -- dev_dbg(&dev, "%s: tm is secs=%d, mins=%d, hours=%d, " -+ dev_dbg(dev, "%s: tm is secs=%d, mins=%d, hours=%d, " - "mday=%d, mon=%d, year=%d, wday=%d\n", - __FUNCTION__, - tm->tm_sec, tm->tm_min, tm->tm_hour, -- tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); -+ tm->tm_mday, tm->tm_mon + 1, tm->tm_year, tm->tm_wday); - -- if (rtc_valid_tm(tm) < 0) -+ if (rtc_valid_tm(tm) < 0) { - dev_err(dev, "invalid date\n"); -+ rtc_time_to_tm(0, tm); -+ } - - return 0; - } -@@ -315,6 +373,7 @@ - /* Reset pre-scaler & stop RTC */ - tmp = readb(rtc->regbase + RCR2); - tmp |= RCR2_RESET; -+ tmp &= ~RCR2_START; - writeb(tmp, rtc->regbase + RCR2); - - writeb(BIN2BCD(tm->tm_sec), rtc->regbase + RSECCNT); -@@ -322,16 +381,16 @@ - writeb(BIN2BCD(tm->tm_hour), rtc->regbase + RHRCNT); - writeb(BIN2BCD(tm->tm_wday), rtc->regbase + RWKCNT); - writeb(BIN2BCD(tm->tm_mday), rtc->regbase + RDAYCNT); -- writeb(BIN2BCD(tm->tm_mon), rtc->regbase + RMONCNT); -+ writeb(BIN2BCD(tm->tm_mon + 1), rtc->regbase + RMONCNT); - --#ifdef CONFIG_CPU_SH3 -- year = tm->tm_year % 100; -- writeb(BIN2BCD(year), rtc->regbase + RYRCNT); --#else -- year = (BIN2BCD((tm->tm_year + 1900) / 100) << 8) | -- BIN2BCD(tm->tm_year % 100); -- writew(year, rtc->regbase + RYRCNT); --#endif -+ if (rtc->capabilities & RTC_CAP_4_DIGIT_YEAR) { -+ year = (BIN2BCD((tm->tm_year + 1900) / 100) << 8) | -+ BIN2BCD(tm->tm_year % 100); -+ writew(year, rtc->regbase + RYRCNT); -+ } else { -+ year = tm->tm_year % 100; -+ writeb(BIN2BCD(year), rtc->regbase + RYRCNT); -+ } - - /* Start RTC */ - tmp = readb(rtc->regbase + RCR2); -@@ -344,12 +403,140 @@ - return 0; - } - -+static inline int sh_rtc_read_alarm_value(struct sh_rtc *rtc, int reg_off) -+{ -+ unsigned int byte; -+ int value = 0xff; /* return 0xff for ignored values */ -+ -+ byte = readb(rtc->regbase + reg_off); -+ if (byte & AR_ENB) { -+ byte &= ~AR_ENB; /* strip the enable bit */ -+ value = BCD2BIN(byte); -+ } -+ -+ return value; -+} -+ -+static int sh_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *wkalrm) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct sh_rtc *rtc = platform_get_drvdata(pdev); -+ struct rtc_time* tm = &wkalrm->time; -+ -+ spin_lock_irq(&rtc->lock); -+ -+ tm->tm_sec = sh_rtc_read_alarm_value(rtc, RSECAR); -+ tm->tm_min = sh_rtc_read_alarm_value(rtc, RMINAR); -+ tm->tm_hour = sh_rtc_read_alarm_value(rtc, RHRAR); -+ tm->tm_wday = sh_rtc_read_alarm_value(rtc, RWKAR); -+ tm->tm_mday = sh_rtc_read_alarm_value(rtc, RDAYAR); -+ tm->tm_mon = sh_rtc_read_alarm_value(rtc, RMONAR); -+ if (tm->tm_mon > 0) -+ tm->tm_mon -= 1; /* RTC is 1-12, tm_mon is 0-11 */ -+ tm->tm_year = 0xffff; -+ -+ wkalrm->enabled = (readb(rtc->regbase + RCR1) & RCR1_AIE) ? 1 : 0; -+ -+ spin_unlock_irq(&rtc->lock); -+ -+ return 0; -+} -+ -+static inline void sh_rtc_write_alarm_value(struct sh_rtc *rtc, -+ int value, int reg_off) -+{ -+ /* < 0 for a value that is ignored */ -+ if (value < 0) -+ writeb(0, rtc->regbase + reg_off); -+ else -+ writeb(BIN2BCD(value) | AR_ENB, rtc->regbase + reg_off); -+} -+ -+static int sh_rtc_check_alarm(struct rtc_time* tm) -+{ -+ /* -+ * The original rtc says anything > 0xc0 is "don't care" or "match -+ * all" - most users use 0xff but rtc-dev uses -1 for the same thing. -+ * The original rtc doesn't support years - some things use -1 and -+ * some 0xffff. We use -1 to make out tests easier. -+ */ -+ if (tm->tm_year == 0xffff) -+ tm->tm_year = -1; -+ if (tm->tm_mon >= 0xff) -+ tm->tm_mon = -1; -+ if (tm->tm_mday >= 0xff) -+ tm->tm_mday = -1; -+ if (tm->tm_wday >= 0xff) -+ tm->tm_wday = -1; -+ if (tm->tm_hour >= 0xff) -+ tm->tm_hour = -1; -+ if (tm->tm_min >= 0xff) -+ tm->tm_min = -1; -+ if (tm->tm_sec >= 0xff) -+ tm->tm_sec = -1; -+ -+ if (tm->tm_year > 9999 || -+ tm->tm_mon >= 12 || -+ tm->tm_mday == 0 || tm->tm_mday >= 32 || -+ tm->tm_wday >= 7 || -+ tm->tm_hour >= 24 || -+ tm->tm_min >= 60 || -+ tm->tm_sec >= 60) -+ return -EINVAL; -+ -+ return 0; -+} -+ -+static int sh_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm) -+{ -+ struct platform_device *pdev = to_platform_device(dev); -+ struct sh_rtc *rtc = platform_get_drvdata(pdev); -+ unsigned int rcr1; -+ struct rtc_time *tm = &wkalrm->time; -+ int mon, err; -+ -+ err = sh_rtc_check_alarm(tm); -+ if (unlikely(err < 0)) -+ return err; -+ -+ spin_lock_irq(&rtc->lock); -+ -+ /* disable alarm interrupt and clear the alarm flag */ -+ rcr1 = readb(rtc->regbase + RCR1); -+ rcr1 &= ~(RCR1_AF|RCR1_AIE); -+ writeb(rcr1, rtc->regbase + RCR1); -+ -+ rtc->rearm_aie = 0; -+ -+ /* set alarm time */ -+ sh_rtc_write_alarm_value(rtc, tm->tm_sec, RSECAR); -+ sh_rtc_write_alarm_value(rtc, tm->tm_min, RMINAR); -+ sh_rtc_write_alarm_value(rtc, tm->tm_hour, RHRAR); -+ sh_rtc_write_alarm_value(rtc, tm->tm_wday, RWKAR); -+ sh_rtc_write_alarm_value(rtc, tm->tm_mday, RDAYAR); -+ mon = tm->tm_mon; -+ if (mon >= 0) -+ mon += 1; -+ sh_rtc_write_alarm_value(rtc, mon, RMONAR); -+ -+ if (wkalrm->enabled) { -+ rcr1 |= RCR1_AIE; -+ writeb(rcr1, rtc->regbase + RCR1); -+ } -+ -+ spin_unlock_irq(&rtc->lock); -+ -+ return 0; -+} -+ - static struct rtc_class_ops sh_rtc_ops = { - .open = sh_rtc_open, - .release = sh_rtc_release, - .ioctl = sh_rtc_ioctl, - .read_time = sh_rtc_read_time, - .set_time = sh_rtc_set_time, -+ .read_alarm = sh_rtc_read_alarm, -+ .set_alarm = sh_rtc_set_alarm, - .proc = sh_rtc_proc, - }; - -@@ -405,11 +592,22 @@ - - rtc->rtc_dev = rtc_device_register("sh", &pdev->dev, - &sh_rtc_ops, THIS_MODULE); -- if (IS_ERR(rtc)) { -+ if (IS_ERR(rtc->rtc_dev)) { - ret = PTR_ERR(rtc->rtc_dev); - goto err_badmap; - } - -+ rtc->capabilities = RTC_DEF_CAPABILITIES; -+ if (pdev->dev.platform_data) { -+ struct sh_rtc_platform_info *pinfo = pdev->dev.platform_data; -+ -+ /* -+ * Some CPUs have special capabilities in addition to the -+ * default set. Add those in here. -+ */ -+/* rtc->capabilities |= pinfo->capabilities; */ -+ } -+ - platform_set_drvdata(pdev, rtc); - - return 0; -@@ -425,7 +623,7 @@ - static int __devexit sh_rtc_remove(struct platform_device *pdev) - { - struct sh_rtc *rtc = platform_get_drvdata(pdev); -- -+ - if (likely(rtc->rtc_dev)) - rtc_device_unregister(rtc->rtc_dev); - -@@ -442,7 +640,7 @@ - } - static struct platform_driver sh_rtc_platform_driver = { - .driver = { -- .name = "sh-rtc", -+ .name = DRV_NAME, - .owner = THIS_MODULE, - }, - .probe = sh_rtc_probe, -@@ -463,5 +661,7 @@ - module_exit(sh_rtc_exit); - - MODULE_DESCRIPTION("SuperH on-chip RTC driver"); --MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>"); -+MODULE_VERSION(DRV_VERSION); -+MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>, Jamie Lenehan <lenehan@twibble.org>"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("platform:" DRV_NAME); -diff -ru linux-2.6.17.old/include/asm-sh/cpu-sh3/rtc.h linux-2.6.17/include/asm-sh/cpu-sh3/rtc.h ---- linux-2.6.17.old/include/asm-sh/cpu-sh3/rtc.h 2006-06-18 04:49:35.000000000 +0300 -+++ linux-2.6.17/include/asm-sh/cpu-sh3/rtc.h 2009-12-21 10:30:05.923092336 +0200 -@@ -20,6 +20,8 @@ - #define RCR2 0xfffffede - - #define RTC_BIT_INVERTED 0 /* No bug on SH7708, SH7709A */ -+#define RTC_DEF_CAPABILITIES 0UL -+#define rtc_reg_size sizeof(u16) - - #endif /* __ASM_CPU_SH3_RTC_H */ - -diff -ru linux-2.6.17.old/include/asm-sh/hw_irq.h linux-2.6.17/include/asm-sh/hw_irq.h ---- linux-2.6.17.old/include/asm-sh/hw_irq.h 2006-06-18 04:49:35.000000000 +0300 -+++ linux-2.6.17/include/asm-sh/hw_irq.h 2009-12-21 10:29:58.716840103 +0200 -@@ -1,6 +1,111 @@ - #ifndef __ASM_SH_HW_IRQ_H - #define __ASM_SH_HW_IRQ_H - -+#include <linux/init.h> -+#include <asm/atomic.h> -+ -+extern atomic_t irq_err_count; -+ -+/* -+struct ipr_data { -+ unsigned char irq; -+ unsigned char ipr_idx;*/ /* Index for the IPR registered */ -+/* -+ unsigned char shift; */ /* Number of bits to shift the data */ -+/* -+ unsigned char priority; *//* The priority */ -+/* };*/ -+ -+/* -+struct ipr_desc { -+ unsigned long *ipr_offsets; -+ unsigned int nr_offsets; -+ struct ipr_data *ipr_data; -+ unsigned int nr_irqs; -+ struct irq_chip chip; -+}; -+ -+void register_ipr_controller(struct ipr_desc *); -+*/ -+ -+typedef unsigned char intc_enum; -+ -+struct intc_vect { -+ intc_enum enum_id; -+ unsigned short vect; -+}; -+ -+#define INTC_VECT(enum_id, vect) { enum_id, vect } -+#define INTC_IRQ(enum_id, irq) INTC_VECT(enum_id, irq2evt(irq)) -+ -+struct intc_group { -+ intc_enum enum_id; -+ intc_enum enum_ids[32]; -+}; -+ -+#define INTC_GROUP(enum_id, ids...) { enum_id, { ids } } -+ -+struct intc_mask_reg { -+ unsigned long set_reg, clr_reg, reg_width; -+ intc_enum enum_ids[32]; -+#ifdef CONFIG_SMP -+ unsigned long smp; -+#endif -+}; -+ -+struct intc_prio_reg { -+ unsigned long set_reg, clr_reg, reg_width, field_width; -+ intc_enum enum_ids[16]; -+#ifdef CONFIG_SMP -+ unsigned long smp; -+#endif -+}; -+ -+struct intc_sense_reg { -+ unsigned long reg, reg_width, field_width; -+ intc_enum enum_ids[16]; -+}; -+ -+#ifdef CONFIG_SMP -+#define INTC_SMP(stride, nr) .smp = (stride) | ((nr) << 8) -+#else -+#define INTC_SMP(stride, nr) -+#endif -+ -+struct intc_desc { -+ struct intc_vect *vectors; -+ unsigned int nr_vectors; -+ struct intc_group *groups; -+ unsigned int nr_groups; -+ struct intc_mask_reg *mask_regs; -+ unsigned int nr_mask_regs; -+ struct intc_prio_reg *prio_regs; -+ unsigned int nr_prio_regs; -+ struct intc_sense_reg *sense_regs; -+ unsigned int nr_sense_regs; -+ char *name; -+}; -+ -+#define _INTC_ARRAY(a) a, sizeof(a)/sizeof(*a) -+#define DECLARE_INTC_DESC(symbol, chipname, vectors, groups, \ -+ mask_regs, prio_regs, sense_regs) \ -+struct intc_desc symbol __initdata = { \ -+ _INTC_ARRAY(vectors), _INTC_ARRAY(groups), \ -+ _INTC_ARRAY(mask_regs), _INTC_ARRAY(prio_regs), \ -+ _INTC_ARRAY(sense_regs), \ -+ chipname, \ -+} -+ -+void __init register_intc_controller(struct intc_desc *desc); -+int intc_set_priority(unsigned int irq, unsigned int prio); -+ -+void __init plat_irq_setup(void); -+ -+enum { IRQ_MODE_IRQ, IRQ_MODE_IRQ7654, IRQ_MODE_IRQ3210, -+ IRQ_MODE_IRL7654_MASK, IRQ_MODE_IRL3210_MASK, -+ IRQ_MODE_IRL7654, IRQ_MODE_IRL3210 }; -+void __init plat_irq_setup_pins(int mode); -+ - static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) - { - /* Nothing to do */ -diff -ru linux-2.6.17.old/include/asm-sh/rtc.h linux-2.6.17/include/asm-sh/rtc.h ---- linux-2.6.17.old/include/asm-sh/rtc.h 2009-12-21 10:27:23.566444610 +0200 -+++ linux-2.6.17/include/asm-sh/rtc.h 2009-12-21 10:29:58.716840103 +0200 -@@ -25,5 +25,7 @@ - #define RCR2_RESET 0x02 /* Reset bit */ - #define RCR2_START 0x01 /* Start bit */ - -+#define RTC_CAP_4_DIGIT_YEAR (1 << 0) -+ - #endif /* __KERNEL__ */ - #endif /* _ASM_RTC_H */ -diff -ru linux-2.6.17.old/include/linux/rtc.h linux-2.6.17/include/linux/rtc.h ---- linux-2.6.17.old/include/linux/rtc.h 2006-06-18 04:49:35.000000000 +0300 -+++ linux-2.6.17/include/linux/rtc.h 2009-12-21 10:29:58.716840103 +0200 -@@ -172,7 +172,8 @@ - struct rtc_wkalrm *alrm); - extern int rtc_set_alarm(struct class_device *class_dev, - struct rtc_wkalrm *alrm); --extern void rtc_update_irq(struct class_device *class_dev, -+ -+extern void rtc_update_irq(struct rtc_device *rtc, - unsigned long num, unsigned long events); - - extern struct class_device *rtc_class_open(char *name); -diff -ru linux-2.6.17.old/include/linux/serial_sci.h linux-2.6.17/include/linux/serial_sci.h ---- linux-2.6.17.old/include/linux/serial_sci.h 2009-12-21 10:33:00.536412963 +0200 -+++ linux-2.6.17/include/linux/serial_sci.h 2009-12-21 10:29:58.716840103 +0200 -@@ -0,0 +1,32 @@ -+#ifndef __LINUX_SERIAL_SCI_H -+#define __LINUX_SERIAL_SCI_H -+ -+#include <linux/serial_core.h> -+ -+/* -+ * Generic header for SuperH SCI(F) (used by sh/sh64/h8300 and related parts) -+ */ -+ -+/* Offsets into the sci_port->irqs array */ -+enum { -+ SCIx_ERI_IRQ, -+ SCIx_RXI_IRQ, -+ SCIx_TXI_IRQ, -+ SCIx_BRI_IRQ, -+ SCIx_NR_IRQS, -+}; -+ -+/* -+ * Platform device specific platform_data struct -+ */ -+struct plat_sci_port { -+ void __iomem *membase; /* io cookie */ -+ unsigned long mapbase; /* resource base */ -+ unsigned int irqs[SCIx_NR_IRQS]; /* ERI, RXI, TXI, BRI */ -+ unsigned int type; /* SCI / SCIF / IRDA */ -+ upf_t flags; /* UPF_* flags */ -+}; -+ -+int early_sci_setup(struct uart_port *port); -+ -+#endif /* __LINUX_SERIAL_SCI_H */ diff --git a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/unexpected-int-fix.patch b/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/unexpected-int-fix.patch deleted file mode 100644 index bf2d2a5..0000000 --- a/recipes-kernel/linux/linux-jlime-jornada6xx-2.6.17/unexpected-int-fix.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- linux-2.6.17-vanilla/drivers/ide/ide-io.c 2006-06-18 01:49:35.000000000 +0000 -+++ linux-2.6.17/drivers/ide/ide-io.c 2006-07-06 14:18:13.000000000 +0000 -@@ -1442,10 +1442,10 @@ - ++count; - if (time_after(jiffies, last_msgtime + HZ)) { - last_msgtime = jiffies; -- printk(KERN_ERR "%s%s: unexpected interrupt, " -- "status=0x%02x, count=%ld\n", -- hwif->name, -- (hwif->next==hwgroup->hwif) ? "" : "(?)", stat, count); -+ //printk(KERN_ERR "%s%s: unexpected interrupt, " -+ // "status=0x%02x, count=%ld\n", -+ // hwif->name, -+ // (hwif->next==hwgroup->hwif) ? "" : "(?)", stat, count); - } - } - } diff --git a/recipes-kernel/linux/linux-jlime-jornada6xx_2.6.17.bb b/recipes-kernel/linux/linux-jlime-jornada6xx_2.6.17.bb deleted file mode 100644 index 6a419e4..0000000 --- a/recipes-kernel/linux/linux-jlime-jornada6xx_2.6.17.bb +++ /dev/null @@ -1,31 +0,0 @@ -DESCRIPTION = "JLime Linux kernel for SuperH based Jornada 6xx" -SECTION = "kernel" -LICENSE = "GPLv2" - -COMPATIBLE_MACHINE = "jornada6xx" - -SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/v2.6/linux-2.6.17.tar.bz2 \ - file://defconfig_jlime \ - file://LinuxSH-2.6.17.patch \ - file://alsa_hp6xx_2.6.17.patch \ - file://rtc-2.6.17.patch \ - file://unexpected-int-fix.patch \ - file://keymap-fix.patch \ - file://io.h-fix.patch \ - file://keyboard-fix-deadkeys.patch" - -S = "${WORKDIR}/linux-${PV}" - -inherit kernel - -#Lets let 3.4.x handle the compilation of this one -KERNEL_CCSUFFIX = "-3.4.4" - -ARCH = "sh" -FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*" - -do_configure_prepend() { - install -m 0644 ${WORKDIR}/defconfig_jlime ${S}/.config -} -SRC_URI[md5sum] = "37ddefe96625502161f075b9d907f21e" -SRC_URI[sha256sum] = "ab0f647d52f124958439517df9e1ae0efda90cdb851f59f522fa1749f1d87d58" diff --git a/recipes-kernel/linux/linux-jlime-jornada7xx_2.6.37+git.bb b/recipes-kernel/linux/linux-jlime-jornada7xx_2.6.37+git.bb deleted file mode 100644 index f056c6f..0000000 --- a/recipes-kernel/linux/linux-jlime-jornada7xx_2.6.37+git.bb +++ /dev/null @@ -1,24 +0,0 @@ -SECTION = "kernel" -DESCRIPTION = "JLime Linux kernel for Arm based Jornada 7xx" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" -PR = "r0" - -SRCREV="7ee4a9696f324ee5b721904b24591ed7b8ab6504" - -COMPATIBLE_HOST = "arm.*-linux" -COMPATIBLE_MACHINE = "jornada7xx" - -SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kristoffer/linux-hpc.git;protocol=git;branch=v2.6.37-hpc" - -S = "${WORKDIR}/git" - -inherit kernel - -ARCH = "arm" - -FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*" - -do_configure_prepend() { - install -m 0644 ${S}/arch/arm/configs/jornada720_defconfig ${S}/.config -} |